Try to set mbids for composers, conductors, etc. if the mbid is found in other fields for the same name
This commit is contained in:
@@ -584,6 +584,131 @@ namespace lms::metadata
|
||||
EXPECT_EQ(track->artistDisplayName, "Artist1, Artist2"); // reconstruct the artist display name
|
||||
}
|
||||
|
||||
TEST(Parser, MBIDs_fallback)
|
||||
{
|
||||
TestTagReader testTags{
|
||||
{
|
||||
{ TagType::Artist, { "Artist1", "Artist2" } },
|
||||
{ TagType::Album, { "MyAlbum" } },
|
||||
{ TagType::AlbumArtists, { "Artist3", "Artist4" } },
|
||||
{ TagType::MusicBrainzArtistID, { "6643f584-5edc-45ce-927d-0a4ab25c2673", "481c5912-bf1a-47f7-b03c-d34e49711706" } },
|
||||
{ TagType::MusicBrainzReleaseArtistID, { "ed42bcaf-e147-4f34-8f26-d74acc97670a", "6fc64a4b-26f5-441f-993c-fd511290233b" } },
|
||||
{ TagType::Composer, { "Artist1", "Artist3" } },
|
||||
{ TagType::Conductor, { "Artist1", "Artist3" } },
|
||||
{ TagType::Lyricist, { "Artist1", "Artist3" } },
|
||||
{ TagType::Mixer, { "Artist1", "Artist3" } },
|
||||
{ TagType::Producer, { "Artist1", "Artist3" } },
|
||||
{ TagType::Remixers, { "Artist1", "Artist3" } },
|
||||
}
|
||||
};
|
||||
|
||||
testTags.setPerformersTags({ { "RoleA", { "Artist1", "Artist3" } },
|
||||
{ "RoleB", { "Artist2", "Artist4" } } });
|
||||
std::unique_ptr<Track> track{ Parser{}.parse(testTags) };
|
||||
|
||||
ASSERT_EQ(track->artists.size(), 2);
|
||||
EXPECT_EQ(track->artists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->artists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->artists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->artists[1].name, "Artist2");
|
||||
ASSERT_TRUE(track->artists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->artists[1].mbid.value(), core::UUID::fromString("481c5912-bf1a-47f7-b03c-d34e49711706"));
|
||||
|
||||
ASSERT_TRUE(track->medium.has_value());
|
||||
ASSERT_TRUE(track->medium->release.has_value());
|
||||
ASSERT_EQ(track->medium->release->artists.size(), 2);
|
||||
EXPECT_EQ(track->medium->release->artists[0].name, "Artist3");
|
||||
ASSERT_TRUE(track->medium->release->artists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->medium->release->artists[0].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
EXPECT_EQ(track->medium->release->artists[1].name, "Artist4");
|
||||
ASSERT_TRUE(track->medium->release->artists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->medium->release->artists[1].mbid.value(), core::UUID::fromString("6fc64a4b-26f5-441f-993c-fd511290233b"));
|
||||
|
||||
ASSERT_EQ(track->composerArtists.size(), 2);
|
||||
EXPECT_EQ(track->composerArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->composerArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->composerArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->composerArtists[1].name, "Artist3");
|
||||
ASSERT_TRUE(track->composerArtists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->composerArtists[1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
|
||||
ASSERT_EQ(track->conductorArtists.size(), 2);
|
||||
EXPECT_EQ(track->conductorArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->conductorArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->conductorArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->conductorArtists[1].name, "Artist3");
|
||||
ASSERT_TRUE(track->conductorArtists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->conductorArtists[1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
|
||||
ASSERT_EQ(track->lyricistArtists.size(), 2);
|
||||
EXPECT_EQ(track->lyricistArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->lyricistArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->lyricistArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->lyricistArtists[1].name, "Artist3");
|
||||
ASSERT_TRUE(track->lyricistArtists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->lyricistArtists[1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
|
||||
ASSERT_EQ(track->mixerArtists.size(), 2);
|
||||
EXPECT_EQ(track->mixerArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->mixerArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->mixerArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->mixerArtists[1].name, "Artist3");
|
||||
ASSERT_TRUE(track->mixerArtists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->mixerArtists[1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
|
||||
ASSERT_EQ(track->producerArtists.size(), 2);
|
||||
EXPECT_EQ(track->producerArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->producerArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->producerArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->producerArtists[1].name, "Artist3");
|
||||
ASSERT_TRUE(track->producerArtists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->producerArtists[1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
|
||||
ASSERT_EQ(track->remixerArtists.size(), 2);
|
||||
EXPECT_EQ(track->remixerArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->remixerArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->remixerArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->remixerArtists[1].name, "Artist3");
|
||||
ASSERT_TRUE(track->remixerArtists[1].mbid.has_value());
|
||||
EXPECT_EQ(track->remixerArtists[1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
|
||||
ASSERT_TRUE(track->performerArtists.contains("Rolea"));
|
||||
ASSERT_EQ(track->performerArtists["Rolea"].size(), 2);
|
||||
EXPECT_EQ(track->performerArtists["Rolea"][0].name, "Artist1");
|
||||
ASSERT_TRUE(track->performerArtists["Rolea"][0].mbid.has_value());
|
||||
EXPECT_EQ(track->performerArtists["Rolea"][0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
EXPECT_EQ(track->performerArtists["Rolea"][1].name, "Artist3");
|
||||
ASSERT_TRUE(track->performerArtists["Rolea"][1].mbid.has_value());
|
||||
EXPECT_EQ(track->performerArtists["Rolea"][1].mbid.value(), core::UUID::fromString("ed42bcaf-e147-4f34-8f26-d74acc97670a"));
|
||||
ASSERT_EQ(track->performerArtists["Roleb"].size(), 2);
|
||||
EXPECT_EQ(track->performerArtists["Roleb"][0].name, "Artist2");
|
||||
ASSERT_TRUE(track->performerArtists["Roleb"][0].mbid.has_value());
|
||||
EXPECT_EQ(track->performerArtists["Roleb"][0].mbid.value(), core::UUID::fromString("481c5912-bf1a-47f7-b03c-d34e49711706"));
|
||||
EXPECT_EQ(track->performerArtists["Roleb"][1].name, "Artist4");
|
||||
ASSERT_TRUE(track->performerArtists["Roleb"][1].mbid.has_value());
|
||||
EXPECT_EQ(track->performerArtists["Roleb"][1].mbid.value(), core::UUID::fromString("6fc64a4b-26f5-441f-993c-fd511290233b"));
|
||||
}
|
||||
|
||||
TEST(Parser, MBIDs_fallback_priority)
|
||||
{
|
||||
const TestTagReader testTags{
|
||||
{
|
||||
{ TagType::Artist, { "Artist1" } },
|
||||
{ TagType::Album, { "MyAlbum" } },
|
||||
{ TagType::AlbumArtists, { "Artist1" } },
|
||||
{ TagType::MusicBrainzArtistID, { "6643f584-5edc-45ce-927d-0a4ab25c2673" } },
|
||||
{ TagType::MusicBrainzReleaseArtistID, { "ed42bcaf-e147-4f34-8f26-d74acc97670a" } },
|
||||
{ TagType::Composer, { "Artist1" } },
|
||||
}
|
||||
};
|
||||
std::unique_ptr<Track> track{ Parser{}.parse(testTags) };
|
||||
|
||||
ASSERT_EQ(track->composerArtists.size(), 1);
|
||||
EXPECT_EQ(track->composerArtists[0].name, "Artist1");
|
||||
ASSERT_TRUE(track->composerArtists[0].mbid.has_value());
|
||||
EXPECT_EQ(track->composerArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
|
||||
}
|
||||
|
||||
TEST(Parser, advisory)
|
||||
{
|
||||
auto doTest = [](std::string_view value, std::optional<Track::Advisory> expectedValue) {
|
||||
@@ -657,5 +782,4 @@ namespace lms::metadata
|
||||
doTest("2020/01", core::PartialDateTime{ 2020, 1 });
|
||||
doTest("2020", core::PartialDateTime{ 2020 });
|
||||
}
|
||||
|
||||
} // namespace lms::metadata
|
||||
|
||||
Reference in New Issue
Block a user