Better handling of date/year in tags
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user