aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs')
-rw-r--r--MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs41
1 files changed, 32 insertions, 9 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
index 2f2973130..7c336f6d7 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
@@ -1,4 +1,6 @@
-using MediaBrowser.Common.Configuration;
+using System.IO;
+using System.Text;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
@@ -79,21 +81,42 @@ namespace MediaBrowser.XbmcMetadata.Parsers
{
using (var streamReader = BaseNfoSaver.GetStreamReader(metadataFile))
{
- // Use XmlReader for best performance
- using (var reader = XmlReader.Create(streamReader, settings))
+ // Need to handle a url after the xml data
+ // http://kodi.wiki/view/NFO_files/movies
+
+ var xml = streamReader.ReadToEnd();
+
+ var index = xml.LastIndexOf('>');
+
+ if (index != -1)
+ {
+ xml = xml.Substring(0, index + 1);
+ }
+
+ using (var ms = new MemoryStream())
{
- reader.MoveToContent();
+ var bytes = Encoding.UTF8.GetBytes(xml);
- // Loop through each element
- while (reader.Read())
+ ms.Write(bytes, 0, bytes.Length);
+ ms.Position = 0;
+
+ // Use XmlReader for best performance
+ using (var reader = XmlReader.Create(ms, settings))
{
- cancellationToken.ThrowIfCancellationRequested();
+ reader.MoveToContent();
- if (reader.NodeType == XmlNodeType.Element)
+ // Loop through each element
+ while (reader.Read())
{
- FetchDataFromXmlNode(reader, item, userDataList);
+ cancellationToken.ThrowIfCancellationRequested();
+
+ if (reader.NodeType == XmlNodeType.Element)
+ {
+ FetchDataFromXmlNode(reader, item, userDataList);
+ }
}
}
+
}
}
}