Moved fallback code from metadata lib to scanner

This commit is contained in:
emeric
2025-03-27 16:49:52 +01:00
parent 5b742c11b5
commit 6681f8b753
3 changed files with 51 additions and 175 deletions
-125
View File
@@ -605,131 +605,6 @@ namespace lms::metadata
EXPECT_EQ(track->artistDisplayName, "Artist1, Artist2"); // reconstruct the artist display name
}
TEST(AudioFileParser, 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{ TestAudioFileParser{}.parseMetaData(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(AudioFileParser, 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{ TestAudioFileParser{}.parseMetaData(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(AudioFileParser, release_sortNameFallback)
{
const TestTagReader testTags{