From d4eeafe53ff8ae2f287f5dca49a873cd71f4c3da Mon Sep 17 00:00:00 2001 From: TheMelmacian <76712303+TheMelmacian@users.noreply.github.com> Date: Tue, 30 Jul 2024 17:51:08 +0200 Subject: Fix: parsing of xbmc style multi episode nfo files (#12268) --- .../Parsers/EpisodeNfoProviderTests.cs | 24 ++++++ .../Test Data/Rising.nfo | 24 ++++++ .../Test Data/Stargate Atlantis S01E01-E04.nfo | 89 ++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 tests/Jellyfin.XbmcMetadata.Tests/Test Data/Stargate Atlantis S01E01-E04.nfo (limited to 'tests') diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs index c0d06116b..3721d1f7a 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs +++ b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/EpisodeNfoProviderTests.cs @@ -123,6 +123,30 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers Assert.Equal(2004, item.ProductionYear); } + [Fact] + public void Fetch_Valid_MultiEpisode_With_Missing_Tags_Success() + { + var result = new MetadataResult() + { + Item = new Episode() + }; + + _parser.Fetch(result, "Test Data/Stargate Atlantis S01E01-E04.nfo", CancellationToken.None); + + var item = result.Item; + // provided for episode 1, 3 and 4 + Assert.Equal("Rising / Hide and Seek / Thirty-Eight Minutes", item.Name); + // <originaltitle> provided for all episodes + Assert.Equal("Rising (1) / Rising (2) / Hide and Seek / Thirty-Eight Minutes", item.OriginalTitle); + Assert.Equal(1, item.IndexNumber); + Assert.Equal(4, item.IndexNumberEnd); + Assert.Equal(1, item.ParentIndexNumber); + // <plot> only provided for episode 1 + Assert.Equal("A new Stargate team embarks on a dangerous mission to a distant galaxy, where they discover a mythical lost city -- and a deadly new enemy.", item.Overview); + Assert.Equal(new DateTime(2004, 7, 16), item.PremiereDate); + Assert.Equal(2004, item.ProductionYear); + } + [Fact] public void Parse_GivenFileWithThumbWithoutAspect_Success() { diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Rising.nfo b/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Rising.nfo index 56250c09a..e95f5002a 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Rising.nfo +++ b/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Rising.nfo @@ -7,6 +7,18 @@ <thumb>https://artworks.thetvdb.com/banners/episodes/70851/25333.jpg</thumb> <watched>false</watched> <rating>8.0</rating> + <actor> + <name>Joe Flanigan</name> + <role>John Sheppard</role> + <order>0</order> + <thumb>https://image.tmdb.org/t/p/w300_and_h450_bestv2/5AA1ORKIsnMakT6fCVy3JKlzMs6.jpg</thumb> + </actor> + <actor> + <name>David Hewlett</name> + <role>Rodney McKay</role> + <order>1</order> + <thumb>https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUcYyssAPCqnZ4GjolhOWXHTWSa.jpg</thumb> + </actor> </episodedetails> <episodedetails> <title>Rising (2) @@ -17,4 +29,16 @@ https://artworks.thetvdb.com/banners/episodes/70851/25334.jpg false 7.9 + + Joe Flanigan + John Sheppard + 0 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/5AA1ORKIsnMakT6fCVy3JKlzMs6.jpg + + + David Hewlett + Rodney McKay + 1 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUcYyssAPCqnZ4GjolhOWXHTWSa.jpg + diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Stargate Atlantis S01E01-E04.nfo b/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Stargate Atlantis S01E01-E04.nfo new file mode 100644 index 000000000..7dee0110c --- /dev/null +++ b/tests/Jellyfin.XbmcMetadata.Tests/Test Data/Stargate Atlantis S01E01-E04.nfo @@ -0,0 +1,89 @@ + + Rising + Rising (1) + 1 + 1 + 2004-07-16 + A new Stargate team embarks on a dangerous mission to a distant galaxy, where they discover a mythical lost city -- and a deadly new enemy. + https://artworks.thetvdb.com/banners/episodes/70851/25333.jpg + false + 8.0 + + Joe Flanigan + John Sheppard + 0 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/5AA1ORKIsnMakT6fCVy3JKlzMs6.jpg + + + David Hewlett + Rodney McKay + 1 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUcYyssAPCqnZ4GjolhOWXHTWSa.jpg + + + + Rising (2) + 1 + 2 + 2004-07-16 + https://artworks.thetvdb.com/banners/episodes/70851/25334.jpg + false + 7.9 + + Joe Flanigan + John Sheppard + 0 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/5AA1ORKIsnMakT6fCVy3JKlzMs6.jpg + + + David Hewlett + Rodney McKay + 1 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUcYyssAPCqnZ4GjolhOWXHTWSa.jpg + + + + Hide and Seek + Hide and Seek + 1 + 3 + 2004-07-23 + https://artworks.thetvdb.com/banners/episodes/70851/25335.jpg + false + 7.5 + + Joe Flanigan + John Sheppard + 0 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/5AA1ORKIsnMakT6fCVy3JKlzMs6.jpg + + + David Hewlett + Rodney McKay + 1 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUcYyssAPCqnZ4GjolhOWXHTWSa.jpg + + + + Thirty-Eight Minutes + Thirty-Eight Minutes + 1 + 4 + 2004-07-23 + https://artworks.thetvdb.com/banners/episodes/70851/25336.jpg + false + 7.5 + + Joe Flanigan + John Sheppard + 0 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/5AA1ORKIsnMakT6fCVy3JKlzMs6.jpg + + + David Hewlett + Rodney McKay + 1 + https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUcYyssAPCqnZ4GjolhOWXHTWSa.jpg + + + -- cgit v1.2.3