Better handling of date/year in tags

This commit is contained in:
emeric
2018-04-25 13:45:01 +02:00
parent 8a3e522d97
commit 057ea3ab4e
11 changed files with 66 additions and 86 deletions
+4 -4
View File
@@ -124,16 +124,16 @@ AvFormat::parse(const boost::filesystem::path& p)
|| tag == "YEAR"
|| tag == "WM/Year")
{
auto date = readAs<Wt::WDate>(value);
auto date = readAs<int>(value);
if (date)
items.insert( std::make_pair(MetaData::Type::Date, *date));
items.insert(std::make_pair(MetaData::Type::Year, *date));
}
else if (tag == "TDOR" // Original release time (ID3v2 2.4)
|| tag == "TORY") // Original release year
{
auto date = readAs<Wt::WDate>(value);
auto date = readAs<int>(value);
if (date)
items.insert( std::make_pair(MetaData::Type::OriginalDate, *date));
items.insert(std::make_pair(MetaData::Type::OriginalYear, *date));
}
else if (tag == "MUSICBRAINZ ARTIST ID"
|| tag == "MUSICBRAINZ_ARTISTID")
+2 -2
View File
@@ -42,8 +42,8 @@ namespace MetaData
DiscNumber, // size_t
TotalTrack, // size_t
TotalDisc, // size_t
Date, // Wt::WDate
OriginalDate, // Wt::WDate
Year, // int
OriginalYear, // int
HasCover, // bool
AudioStreams, // vector<AudioStream>
MusicBrainzArtistID, // string
+13 -12
View File
@@ -156,28 +156,29 @@ TagLibParser::parse(const boost::filesystem::path& p)
}
else if (tag == "DATE")
{
auto timePoint = readAs<Wt::WDate>(values.front().to8Bit());
auto timePoint = readAs<int>(values.front().to8Bit());
if (timePoint)
items.insert( std::make_pair(MetaData::Type::Date, *timePoint));
items.insert( std::make_pair(MetaData::Type::Year, *timePoint));
}
else if (tag == "ORIGINALDATE")
{
auto timePoint = readAs<Wt::WDate>(values.front().to8Bit());
if (timePoint)
// lower priority than original year
if (items.find(MetaData::Type::OriginalYear) == items.end())
{
// Take priority on original year
items.erase( MetaData::Type::OriginalDate );
items.insert( std::make_pair(MetaData::Type::OriginalDate, *timePoint));
auto timePoint = readAs<int>(values.front().to8Bit());
if (timePoint)
items.insert( std::make_pair(MetaData::Type::OriginalYear, *timePoint));
}
}
else if (tag == "ORIGINALYEAR")
{
// lower priority than original date
if (items.find(MetaData::Type::OriginalDate) == items.end())
auto timePoint = readAs<int>(values.front().to8Bit());
if (timePoint)
{
auto timePoint = readAs<Wt::WDate>(values.front().to8Bit());
if (timePoint)
items.insert( std::make_pair(MetaData::Type::OriginalDate, *timePoint));
// Take priority on original year
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")