Added a way to set custom tag delimiters for artists and for other fields, fixes #417
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <Wt/WDate.h>
|
||||
|
||||
#include "metadata/Exception.hpp"
|
||||
#include "metadata/IParser.hpp"
|
||||
#include "utils/StreamLogger.hpp"
|
||||
|
||||
@@ -76,8 +77,8 @@ namespace
|
||||
if (medium.position)
|
||||
os << "\tPosition: " << *medium.position << std::endl;
|
||||
|
||||
if (!medium.type.empty())
|
||||
os << "\tType: " << medium.type << std::endl;
|
||||
if (!medium.media.empty())
|
||||
os << "\tMedia: " << medium.media << std::endl;
|
||||
|
||||
if (medium.trackCount)
|
||||
std::cout << "\tTrackCount: " << *medium.trackCount << std::endl;
|
||||
@@ -95,15 +96,8 @@ namespace
|
||||
{
|
||||
using namespace MetaData;
|
||||
|
||||
parser.setUserExtraTags({ "MOOD", "ALBUMGROUPING", "GENRE", "LANGUAGE" });
|
||||
|
||||
const auto start{ std::chrono::steady_clock::now() };
|
||||
std::optional<Track> track{ parser.parse(file, true) };
|
||||
if (!track)
|
||||
{
|
||||
std::cerr << "Parsing failed" << std::endl;
|
||||
return;
|
||||
}
|
||||
std::unique_ptr<Track> track{ parser.parse(file, true) };
|
||||
const auto end{ std::chrono::steady_clock::now() };
|
||||
|
||||
std::cout << "Parsing time: " << std::fixed << std::setprecision(2) << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() / 1000. << "ms" << std::endl;
|
||||
@@ -155,6 +149,21 @@ namespace
|
||||
if (track->recordingMBID)
|
||||
std::cout << "Recording MBID = " << track->recordingMBID->getAsString() << std::endl;
|
||||
|
||||
for (std::string_view genre : track->genres)
|
||||
std::cout << "Genre: " << genre << std::endl;
|
||||
|
||||
for (std::string_view genre : track->moods)
|
||||
std::cout << "Mood: " << genre << std::endl;
|
||||
|
||||
for (std::string_view grouping : track->groupings)
|
||||
std::cout << "Grouping: " << grouping << std::endl;
|
||||
|
||||
for (std::string_view language : track->languages)
|
||||
std::cout << "Language: " << language << std::endl;
|
||||
|
||||
for (std::string_view label : track->labels)
|
||||
std::cout << "Label: " << label << std::endl;
|
||||
|
||||
for (const auto& [tag, values] : track->userExtraTags)
|
||||
{
|
||||
std::cout << "Tag: " << tag << std::endl;
|
||||
@@ -209,7 +218,7 @@ int main(int argc, char* argv[])
|
||||
try
|
||||
{
|
||||
// log to stdout
|
||||
Service<ILogger> logger{ std::make_unique<StreamLogger>(std::cout) };
|
||||
Service<ILogger> logger{ std::make_unique<StreamLogger>(std::cout, StreamLogger::allSeverities) };
|
||||
|
||||
for (std::size_t i{}; i < static_cast<std::size_t>(argc - 1); ++i)
|
||||
{
|
||||
@@ -217,17 +226,28 @@ int main(int argc, char* argv[])
|
||||
|
||||
std::cout << "Parsing file '" << file << "'" << std::endl;
|
||||
|
||||
try
|
||||
{
|
||||
std::cout << "Using av:" << std::endl;
|
||||
auto parser{ MetaData::createParser(MetaData::ParserType::AvFormat, MetaData::ParserReadStyle::Accurate) };
|
||||
auto parser{ MetaData::createParser(MetaData::ParserBackend::AvFormat, MetaData::ParserReadStyle::Accurate) };
|
||||
parse(*parser, file);
|
||||
}
|
||||
catch (MetaData::Exception& e)
|
||||
{
|
||||
std::cerr << "Parsing failed: " << e.what() << std::endl;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
std::cout << "Using TagLib:" << std::endl;
|
||||
auto parser{ MetaData::createParser(MetaData::ParserType::TagLib, MetaData::ParserReadStyle::Accurate) };
|
||||
auto parser{ MetaData::createParser(MetaData::ParserBackend::TagLib, MetaData::ParserReadStyle::Accurate) };
|
||||
parse(*parser, file);
|
||||
}
|
||||
catch (MetaData::Exception& e)
|
||||
{
|
||||
std::cerr << "Parsing failed: " << e.what() << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch (std::exception& e)
|
||||
|
||||
Reference in New Issue
Block a user