Better scan of total tracks/discks
This commit is contained in:
@@ -91,10 +91,11 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
std::cout << "TAG = '" << tag << "', VALUES = ";
|
std::vector<std::string> strs;
|
||||||
for (auto value : values)
|
for (auto value : values)
|
||||||
std::cout << "'" << value.to8Bit(true) << "',";
|
strs.push_back(values.front().to8Bit(true));
|
||||||
std::cout << std::endl;
|
|
||||||
|
std::cout << "[" << tag << "] = " << joinStrings(strs, ",") << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tag == "ARTIST")
|
if (tag == "ARTIST")
|
||||||
@@ -116,6 +117,12 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
items.insert( std::make_pair(MetaData::Type::MusicBrainzRecordingID, stringTrim( values.front().to8Bit(true))));
|
items.insert( std::make_pair(MetaData::Type::MusicBrainzRecordingID, stringTrim( values.front().to8Bit(true))));
|
||||||
else if (tag == "ACOUSTID_ID")
|
else if (tag == "ACOUSTID_ID")
|
||||||
items.insert( std::make_pair(MetaData::Type::AcoustID, stringTrim( values.front().to8Bit(true))));
|
items.insert( std::make_pair(MetaData::Type::AcoustID, stringTrim( values.front().to8Bit(true))));
|
||||||
|
else if (tag == "TRACKTOTAL")
|
||||||
|
{
|
||||||
|
auto totalTrack = readAs<std::size_t>(values.front().to8Bit(true));
|
||||||
|
if (totalTrack)
|
||||||
|
items[MetaData::Type::TotalTrack] = *totalTrack;
|
||||||
|
}
|
||||||
else if (tag == "TRACKNUMBER")
|
else if (tag == "TRACKNUMBER")
|
||||||
{
|
{
|
||||||
// Expecting 'Number/Total'
|
// Expecting 'Number/Total'
|
||||||
@@ -127,14 +134,21 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
if (number)
|
if (number)
|
||||||
items.insert( std::make_pair(MetaData::Type::TrackNumber, *number ));
|
items.insert( std::make_pair(MetaData::Type::TrackNumber, *number ));
|
||||||
|
|
||||||
if (strings.size() > 1)
|
// Lower priority than TRACKTOTAL
|
||||||
|
if (strings.size() > 1 && items.find(MetaData::Type::TotalTrack) == items.end())
|
||||||
{
|
{
|
||||||
auto totalNumber = readAs<std::size_t>(strings[1]);
|
auto totalTrack = readAs<std::size_t>(strings[1]);
|
||||||
if (totalNumber)
|
if (totalTrack)
|
||||||
items.insert( std::make_pair(MetaData::Type::TotalTrack, *totalNumber ));
|
items[MetaData::Type::TotalTrack] = *totalTrack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (tag == "DISCTOTAL")
|
||||||
|
{
|
||||||
|
auto totalDisc = readAs<std::size_t>(values.front().to8Bit(true));
|
||||||
|
if (totalDisc)
|
||||||
|
items[MetaData::Type::TotalDisc] = *totalDisc;
|
||||||
|
}
|
||||||
else if (tag == "DISCNUMBER")
|
else if (tag == "DISCNUMBER")
|
||||||
{
|
{
|
||||||
// Expecting 'Number/Total'
|
// Expecting 'Number/Total'
|
||||||
@@ -146,11 +160,12 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
if (number)
|
if (number)
|
||||||
items.insert( std::make_pair(MetaData::Type::DiscNumber, *number));
|
items.insert( std::make_pair(MetaData::Type::DiscNumber, *number));
|
||||||
|
|
||||||
if (strings.size() > 1)
|
// Lower priority than DISCTOTAL
|
||||||
|
if (strings.size() > 1 && items.find(MetaData::Type::TotalDisc) == items.end())
|
||||||
{
|
{
|
||||||
auto totalNumber = readAs<std::size_t>(strings[1]);
|
auto totalDisc = readAs<std::size_t>(strings[1]);
|
||||||
if (totalNumber)
|
if (totalDisc)
|
||||||
items.insert( std::make_pair(MetaData::Type::TotalDisc, *totalNumber ));
|
items[MetaData::Type::TotalDisc] = *totalDisc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,12 +177,12 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
}
|
}
|
||||||
else if (tag == "ORIGINALDATE")
|
else if (tag == "ORIGINALDATE")
|
||||||
{
|
{
|
||||||
// lower priority than original year
|
// Lower priority than original year
|
||||||
if (items.find(MetaData::Type::OriginalYear) == items.end())
|
if (items.find(MetaData::Type::OriginalYear) == items.end())
|
||||||
{
|
{
|
||||||
auto timePoint = readAs<int>(values.front().to8Bit());
|
auto timePoint = readAs<int>(values.front().to8Bit());
|
||||||
if (timePoint)
|
if (timePoint)
|
||||||
items.insert( std::make_pair(MetaData::Type::OriginalYear, *timePoint));
|
items[MetaData::Type::OriginalYear] = *timePoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tag == "ORIGINALYEAR")
|
else if (tag == "ORIGINALYEAR")
|
||||||
@@ -177,8 +192,6 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
{
|
{
|
||||||
// Take priority on original year
|
// Take priority on original year
|
||||||
items[MetaData::Type::OriginalYear] = *timePoint;
|
items[MetaData::Type::OriginalYear] = *timePoint;
|
||||||
// items.erase( MetaData::Type::OriginalYear );
|
|
||||||
// items.insert( std::make_pair(MetaData::Type::OriginalYear, *timePoint));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tag == "METADATA_BLOCK_PICTURE")
|
else if (tag == "METADATA_BLOCK_PICTURE")
|
||||||
@@ -187,7 +200,6 @@ TagLibParser::parse(const boost::filesystem::path& p, bool debug)
|
|||||||
if (items.find(MetaData::Type::HasCover) == items.end())
|
if (items.find(MetaData::Type::HasCover) == items.end())
|
||||||
items.insert( std::make_pair(MetaData::Type::HasCover, true));
|
items.insert( std::make_pair(MetaData::Type::HasCover, true));
|
||||||
}
|
}
|
||||||
// Check if a hit a cluster tag
|
|
||||||
else if (_clusterTypes.find(tag) != _clusterTypes.end())
|
else if (_clusterTypes.find(tag) != _clusterTypes.end())
|
||||||
{
|
{
|
||||||
std::set<std::string> clusterNames;
|
std::set<std::string> clusterNames;
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
catch (std::exception& e)
|
catch (std::exception& e)
|
||||||
{
|
{
|
||||||
std::cerr << "Caught exception: " << e.what();
|
std::cerr << "Caught exception: " << e.what() << std::endl;
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user