aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs')
-rw-r--r--MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs38
1 files changed, 16 insertions, 22 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs
index 2d65188b6..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;
}
@@ -82,21 +79,13 @@ namespace MediaBrowser.XbmcMetadata.Parsers
if (!string.IsNullOrWhiteSpace(val) && movie is not null)
{
- // TODO Handle this better later
- if (!val.Contains('<', StringComparison.Ordinal))
+ try
{
- movie.CollectionName = val;
+ ParseSetXml(val, movie);
}
- else
+ catch (Exception ex)
{
- try
- {
- ParseSetXml(val, movie);
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Error parsing set node");
- }
+ Logger.LogError(ex, "Error parsing set node");
}
}
@@ -139,7 +128,12 @@ namespace MediaBrowser.XbmcMetadata.Parsers
// Loop through each element
while (!reader.EOF && reader.ReadState == ReadState.Interactive)
{
- if (reader.NodeType == XmlNodeType.Element)
+ if (reader.NodeType == XmlNodeType.Text && reader.Depth == 1)
+ {
+ movie.CollectionName = reader.Value;
+ break;
+ }
+ else if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{