diff options
| author | Shadowghost <Shadowghost@users.noreply.github.com> | 2025-02-03 16:55:54 -0500 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2025-02-03 16:55:54 -0500 |
| commit | f46cb112f7bd78a6dc8f458403244867761f3499 (patch) | |
| tree | 12eb399f2400c11aab1bea3c11241ff376b189c8 | |
| parent | bc1419728ff0f1226d1ac347a676e975b1c459ee (diff) | |
Backport pull request #13167 from jellyfin/release-10.10.z
Fix NFO ID parsing
Original-merge: f0e9b2fb96b35dab4c6881e5059ef23f6c3c86c7
Merged-by: crobibero <cody@robibe.ro>
Backported-by: Bond_009 <bond.009@outlook.com>
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs | 15 |
2 files changed, 16 insertions, 14 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index ae7e0322a..137abff47 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -50,23 +50,20 @@ namespace MediaBrowser.XbmcMetadata.Parsers { case "id": { - // get ids from attributes + // Get ids from attributes + item.TrySetProviderId(MetadataProvider.Tmdb, reader.GetAttribute("TMDB")); + item.TrySetProviderId(MetadataProvider.Tvdb, reader.GetAttribute("TVDB")); string? imdbId = reader.GetAttribute("IMDB"); - string? tmdbId = reader.GetAttribute("TMDB"); - // read id from content + // Read id from content + // Content can be arbitrary according to Kodi wiki, so only parse if we are sure it matches a provider-specific schema var contentId = reader.ReadElementContentAsString(); - if (contentId.Contains("tt", StringComparison.Ordinal) && string.IsNullOrEmpty(imdbId)) + if (string.IsNullOrEmpty(imdbId) && contentId.StartsWith("tt", StringComparison.Ordinal)) { imdbId = contentId; } - else if (string.IsNullOrEmpty(tmdbId)) - { - tmdbId = contentId; - } item.TrySetProviderId(MetadataProvider.Imdb, imdbId); - item.TrySetProviderId(MetadataProvider.Tmdb, tmdbId); break; } diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 59abef919..b0944515b 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -1,3 +1,4 @@ +using System; using System.Globalization; using System.Xml; using Emby.Naming.TV; @@ -48,16 +49,20 @@ namespace MediaBrowser.XbmcMetadata.Parsers { case "id": { - item.TrySetProviderId(MetadataProvider.Imdb, reader.GetAttribute("IMDB")); + // Get ids from attributes item.TrySetProviderId(MetadataProvider.Tmdb, reader.GetAttribute("TMDB")); + item.TrySetProviderId(MetadataProvider.Tvdb, reader.GetAttribute("TVDB")); + string? imdbId = reader.GetAttribute("IMDB"); - string? tvdbId = reader.GetAttribute("TVDB"); - if (string.IsNullOrWhiteSpace(tvdbId)) + // Read id from content + // Content can be arbitrary according to Kodi wiki, so only parse if we are sure it matches a provider-specific schema + var contentId = reader.ReadElementContentAsString(); + if (string.IsNullOrEmpty(imdbId) && contentId.StartsWith("tt", StringComparison.Ordinal)) { - tvdbId = reader.ReadElementContentAsString(); + imdbId = contentId; } - item.TrySetProviderId(MetadataProvider.Tvdb, tvdbId); + item.TrySetProviderId(MetadataProvider.Imdb, imdbId); break; } |
