fix(MovieNfoParser): parsing of <set> elements

This commit is contained in:
TheMelmacian 2024-11-23 11:18:27 +01:00
parent b3e563385c
commit ef13a18450
3 changed files with 35 additions and 13 deletions

View File

@ -81,13 +81,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
var val = reader.ReadInnerXml();
if (!string.IsNullOrWhiteSpace(val) && movie is not null)
{
// TODO Handle this better later
if (!val.Contains('<', StringComparison.Ordinal))
{
movie.CollectionName = val;
}
else
{
try
{
@ -98,7 +91,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
Logger.LogError(ex, "Error parsing set node");
}
}
}
break;
}
@ -139,7 +131,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)
{

View File

@ -257,5 +257,23 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers
Assert.Throws<ArgumentException>(() => _parser.Fetch(result, string.Empty, CancellationToken.None));
}
[Fact]
public void Parsing_Fields_With_Escaped_Xml_Special_Characters_Success()
{
var result = new MetadataResult<Video>()
{
Item = new Movie()
};
_parser.Fetch(result, "Test Data/Lilo & Stitch.nfo", CancellationToken.None);
var item = (Movie)result.Item;
Assert.Equal("Lilo & Stitch", item.Name);
Assert.Equal("Lilo & Stitch", item.OriginalTitle);
Assert.Equal("Lilo & Stitch Collection", item.CollectionName);
Assert.StartsWith(">>", item.Overview, StringComparison.InvariantCulture);
Assert.EndsWith("<<", item.Overview, StringComparison.InvariantCulture);
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<movie>
<title>Lilo &amp; Stitch</title>
<originaltitle>Lilo &amp; Stitch</originaltitle>
<set>Lilo &amp; Stitch Collection</set>
<plot>&gt;&gt;As Stitch, a runaway genetic experiment from a faraway planet, wreaks havoc on the Hawaiian Islands, he becomes the mischievous adopted alien "puppy" of an independent little girl named Lilo and learns about loyalty, friendship, and ʻohana, the Hawaiian tradition of family.&lt;&lt;</plot>
</movie>