diff --git a/src/metadata/AvFormat.cpp b/src/metadata/AvFormat.cpp index 12f1f450..d36e6b89 100644 --- a/src/metadata/AvFormat.cpp +++ b/src/metadata/AvFormat.cpp @@ -51,7 +51,7 @@ getAlbum(const MetadataMap& metadataMap) res = Album{*album, ""}; - auto albumMBID {findFirstValueOf(metadataMap, {"MUSICBRAINZ ALBUM ID", "MUSICBRAINZ_ALBUMID"})}; + auto albumMBID {findFirstValueOf(metadataMap, {"MUSICBRAINZ ALBUM ID", "MUSICBRAINZ_ALBUMID", "MUSICBRAINZ/ALBUM ID"})}; if (!albumMBID) return res; @@ -72,7 +72,7 @@ getAlbumArtists(const MetadataMap& metadataMap) Artist artist {*name, ""}; - auto mbid {findFirstValueOf(metadataMap, {"MUSICBRAINZ ALBUM ARTIST ID"})}; + auto mbid {findFirstValueOf(metadataMap, {"MUSICBRAINZ ALBUM ARTIST ID", "MUSICBRAINZ/ALBUM ARTIST ID"})}; if (mbid) artist.musicBrainzArtistID = *mbid; @@ -97,7 +97,7 @@ getArtists(const MetadataMap& metadataMap) std::vector artistMBIDs; { - auto mbids {findFirstValueOf(metadataMap, {"MUSICBRAINZ ARTIST ID", "MUSICBRAINZ_ARTISTID"})}; + auto mbids {findFirstValueOf(metadataMap, {"MUSICBRAINZ ARTIST ID", "MUSICBRAINZ_ARTISTID", "MUSICBRAINZ/ARTIST ID"})}; if (mbids) artistMBIDs = splitString(*mbids, "/"); } @@ -195,7 +195,8 @@ AvFormat::parse(const std::filesystem::path& p, bool debug) } else if (tag == "MUSICBRAINZ RELEASE TRACK ID" || tag == "MUSICBRAINZ_RELEASETRACKID" - || tag == "MUSICBRAINZ_TRACKID") + || tag == "MUSICBRAINZ_TRACKID" + || tag == "MUSICBRAINZ/TRACK ID") { track.musicBrainzTrackID = value; } diff --git a/src/metadata/TagLibParser.cpp b/src/metadata/TagLibParser.cpp index ad102521..67af8b1e 100644 --- a/src/metadata/TagLibParser.cpp +++ b/src/metadata/TagLibParser.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -177,8 +178,15 @@ TagLibParser::parse(const std::filesystem::path& p, bool debug) // Not that good embedded pictures handling + // WMA + if (TagLib::ASF::File *asfFile {dynamic_cast(f.file())}) + { + const TagLib::ASF::Tag* tag {static_cast(asfFile->tag())}; + if (tag && tag->attributeListMap().contains("WM/Picture")) + track.hasCover = true; + } // MP3 - if (TagLib::MPEG::File *mp3File {dynamic_cast(f.file())}) + else if (TagLib::MPEG::File *mp3File {dynamic_cast(f.file())}) { if (mp3File->ID3v2Tag()) { diff --git a/tools/metadata/LmsMetadata.cpp b/tools/metadata/LmsMetadata.cpp index a049088b..a32eb64b 100644 --- a/tools/metadata/LmsMetadata.cpp +++ b/tools/metadata/LmsMetadata.cpp @@ -38,12 +38,16 @@ void parse(MetaData::Parser& parser, const std::filesystem::path& file) parser.setClusterTypeNames( {"MOOD", "GENRE"} ); + const auto start {std::chrono::steady_clock::now()}; std::optional track {parser.parse(file, true)}; if (!track) { std::cerr << "Parsing failed" << std::endl; return; } + const auto end {std::chrono::steady_clock::now()}; + + std::cout << "Parsing time: " << std::chrono::duration_cast(end - start).count() / 1000. << "ms" << std::endl; std::cout << "Track metadata:" << std::endl;