diff options
Diffstat (limited to 'MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs')
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs | 41 |
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); + } } } + } } } |
