From 6a757ac0e58b5121e33af6a6ec1e714d498351c7 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 31 Jan 2025 01:44:19 +0000
Subject: [PATCH 01/30] Update dependency FsCheck.Xunit to 3.1.0
---
Directory.Packages.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 20282af0b1..80966e369e 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -16,7 +16,7 @@
-
+
From cfeb879519539573575ccc0b60c9c6010fda1543 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 3 Feb 2025 16:38:29 +0100
Subject: [PATCH 02/30] Update dependency z440.atl.core to 6.15.0 (#13477)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
Directory.Packages.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 20282af0b1..808f03e02d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -79,7 +79,7 @@
-
+
From 51207edf44c4ec74a621a3ea9c5b9ee55c006009 Mon Sep 17 00:00:00 2001
From: TheMelmacian <76712303+TheMelmacian@users.noreply.github.com>
Date: Mon, 3 Feb 2025 16:54:35 -0500
Subject: [PATCH 03/30] Backport pull request #13092 from
jellyfin/release-10.10.z
Fix: handling of elements in NfoParser
Original-merge: f333ef74b3cc8444e12ac1210f94daf59c766969
Merged-by: joshuaboniface
Backported-by: Bond_009
---
.../Parsers/MovieNfoParser.cs | 23 ++++++++-----------
.../Savers/MovieNfoSaver.cs | 4 +++-
.../Parsers/MovieNfoParserTests.cs | 18 +++++++++++++++
.../Test Data/Lilo & Stitch.nfo | 7 ++++++
4 files changed, 38 insertions(+), 14 deletions(-)
create mode 100644 tests/Jellyfin.XbmcMetadata.Tests/Test Data/Lilo & Stitch.nfo
diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs
index 2d65188b63..ae7e0322a7 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs
@@ -82,21 +82,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 +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)
{
diff --git a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs
index bc344d87e0..e85e369d91 100644
--- a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs
@@ -115,7 +115,9 @@ namespace MediaBrowser.XbmcMetadata.Savers
{
if (!string.IsNullOrEmpty(movie.CollectionName))
{
- writer.WriteElementString("set", movie.CollectionName);
+ writer.WriteStartElement("set");
+ writer.WriteElementString("name", movie.CollectionName);
+ writer.WriteEndElement();
}
}
}
diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs
index b9833c2250..9c2655154d 100644
--- a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs
+++ b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs
@@ -257,5 +257,23 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers
Assert.Throws(() => _parser.Fetch(result, string.Empty, CancellationToken.None));
}
+
+ [Fact]
+ public void Parsing_Fields_With_Escaped_Xml_Special_Characters_Success()
+ {
+ var result = new MetadataResult