Prepare multi cluster tag parsing

This commit is contained in:
emeric
2018-03-01 22:20:53 +01:00
parent d6f0e34b62
commit 9cf89893e0
20 changed files with 504 additions and 522 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
TESTS = sql-query database-user
check_PROGRAMS = sql-query database-user test-wt test-avmetadata
check_PROGRAMS = test-avmetadata
database_basics_SOURCES = \
$(srcdir)/CheckDbBasics.cpp \
@@ -88,7 +88,7 @@ test_wt_audio_LDADD=$(MAGICKXX_LIBS)
test_avmetadata_SOURCES = TestAvMetadata.cpp \
$(top_srcdir)/src/logger/Logger.cpp \
$(top_srcdir)/src/utils/Logger.cpp \
$(top_srcdir)/src/utils/Utils.cpp \
$(top_srcdir)/src/metadata/AvFormat.cpp \
$(top_srcdir)/src/metadata/TagLibParser.cpp \
+17 -7
View File
@@ -26,20 +26,20 @@ int main(int argc, char *argv[])
MetaData::AvFormat avFormatParser;
MetaData::TagLibParser tagLibParser;
std::vector<MetaData::Parser*> parsers = { &avFormatParser, &tagLibParser };
std::vector<MetaData::Parser*> parsers = {&avFormatParser, &tagLibParser };
for (auto& parser : parsers)
{
MetaData::Items items;
boost::optional<MetaData::Items> items = parser->parse(argv[1]);
if (!parser->parse(argv[1], items))
if (!items)
{
std::cout << "Parsing failed" << std::endl;
continue;
}
std::cout << "Items:" << std::endl;
for (auto item : items)
for (auto item : (*items))
{
switch (item.first)
{
@@ -55,9 +55,15 @@ int main(int argc, char *argv[])
std::cout << "Album: " << boost::any_cast<std::string>(item.second) << std::endl;
break;
case MetaData::Type::Genres:
for (auto& genre : boost::any_cast<std::list<std::string> >(item.second))
std::cout << "Genre: " << genre << std::endl;
case MetaData::Type::Clusters:
for (const auto& cluster : boost::any_cast<MetaData::Clusters>(item.second))
{
std::cout << "Cluster: " << cluster.first << std::endl;
for (const auto name : cluster.second)
{
std::cout << "\t" << name << std::endl;
}
}
break;
case MetaData::Type::Duration:
@@ -113,6 +119,10 @@ int main(int argc, char *argv[])
std::cout << "MusicBrainzRecordingID: " << boost::any_cast<std::string>(item.second) << std::endl;
break;
case MetaData::Type::AcoustID:
std::cout << "AcoustID: " << boost::any_cast<std::string>(item.second) << std::endl;
break;
default:
break;
}