diff --git a/src/libs/metadata/impl/AvFormatParser.cpp b/src/libs/metadata/impl/AvFormatParser.cpp index 08cea3de..c959ae97 100644 --- a/src/libs/metadata/impl/AvFormatParser.cpp +++ b/src/libs/metadata/impl/AvFormatParser.cpp @@ -94,7 +94,7 @@ getReleaseArtists(const Av::IAudioFile::MetadataMap& metadataMap) auto mbid {findFirstValueOfAs(metadataMap, {"MUSICBRAINZ ALBUM ARTIST ID", "MUSICBRAINZ/ALBUM ARTIST ID"})}; - return {Artist {*name, std::nullopt, mbid} }; + return {Artist {mbid, *name, std::nullopt} }; } static @@ -118,9 +118,9 @@ getArtists(const Av::IAudioFile::MetadataMap& metadataMap) for (std::size_t i {}; i < artistNames.size(); ++i) { if (artistMBIDs && artistNames.size() == artistMBIDs->size()) - artists.emplace_back(Artist {artistNames[i], std::nullopt, (*artistMBIDs)[i]}); + artists.emplace_back(Artist {(*artistMBIDs)[i], artistNames[i], std::nullopt}); else - artists.emplace_back(Artist {artistNames[i], std::nullopt, {}}); + artists.emplace_back(Artist {std::nullopt, artistNames[i], std::nullopt}); } return artists; diff --git a/src/libs/metadata/include/metadata/IParser.hpp b/src/libs/metadata/include/metadata/IParser.hpp index 80612bd4..f23c5573 100644 --- a/src/libs/metadata/include/metadata/IParser.hpp +++ b/src/libs/metadata/include/metadata/IParser.hpp @@ -37,31 +37,31 @@ namespace MetaData struct Artist { + std::optional mbid; std::string name; std::optional sortName; - std::optional mbid; Artist(std::string_view _name) : name {_name} {} - Artist(std::string_view _name, std::optional _sortName, std::optional _mbid) : name {_name}, sortName {std::move(_sortName)}, mbid {std::move(_mbid)} {} + Artist(std::optional _mbid, std::string_view _name, std::optional _sortName) : mbid {std::move(_mbid)}, name {_name}, sortName {std::move(_sortName)} {} }; using PerformerContainer = std::map>; struct Release { + std::optional mbid; std::string name; std::vector artists; - std::optional mbid; std::optional mediumCount; }; struct Medium { - std::optional position; std::string type; std::string name; - std::optional replayGain; + std::optional position; // in release std::optional trackCount; + std::optional replayGain; }; struct AudioStream @@ -71,15 +71,14 @@ namespace MetaData struct Track { - std::vector artists; - std::string title; std::optional mbid; std::optional recordingMBID; - std::optional release; + std::string title; std::optional medium; + std::optional position; // in medium + std::optional release; Tags tags; std::chrono::milliseconds duration; - std::optional position; // in medium Wt::WDate date; Wt::WDate originalDate; bool hasCover {}; @@ -88,6 +87,7 @@ namespace MetaData std::string copyright; std::string copyrightURL; std::optional replayGain; + std::vector artists; std::vector conductorArtists; std::vector composerArtists; std::vector lyricistArtists;