diff options
Diffstat (limited to 'MediaBrowser.XbmcMetadata')
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs | 29 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs | 2 |
3 files changed, 38 insertions, 1 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 8b73107bf..b5c4bef90 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -69,6 +69,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers Fetch(item, userDataList, metadataFile, settings, cancellationToken); } + protected virtual bool SupportsUrlAfterClosingXmlTag + { + get { return false; } + } + /// <summary> /// Fetches the specified item. /// </summary> @@ -79,6 +84,30 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// <param name="cancellationToken">The cancellation token.</param> private void Fetch(T item, List<UserItemData> userDataList, string metadataFile, XmlReaderSettings settings, CancellationToken cancellationToken) { + if (!SupportsUrlAfterClosingXmlTag) + { + using (var streamReader = BaseNfoSaver.GetStreamReader(metadataFile)) + { + // Use XmlReader for best performance + using (var reader = XmlReader.Create(streamReader, settings)) + { + reader.MoveToContent(); + + // Loop through each element + while (reader.Read()) + { + cancellationToken.ThrowIfCancellationRequested(); + + if (reader.NodeType == XmlNodeType.Element) + { + FetchDataFromXmlNode(reader, item, userDataList); + } + } + } + } + return; + } + using (var streamReader = BaseNfoSaver.GetStreamReader(metadataFile)) { // Need to handle a url after the xml data diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index 7cf987f9c..2a275320f 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -28,6 +28,14 @@ namespace MediaBrowser.XbmcMetadata.Parsers Fetch(item, userDataList, metadataFile, cancellationToken); } + protected override bool SupportsUrlAfterClosingXmlTag + { + get + { + return true; + } + } + /// <summary> /// Fetches the data from XML node. /// </summary> diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 73358cb21..86e92530f 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -131,7 +131,7 @@ namespace MediaBrowser.XbmcMetadata.Savers { get { - return "Xbmc Nfo"; + return "Nfo"; } } |
