Fix NFO ID parsing (#13167)

pull/13345/head
Tim Eisele 2 months ago committed by GitHub
parent b9881b8bdf
commit f0e9b2fb96
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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;
}

@ -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;
}

Loading…
Cancel
Save