diff options
Diffstat (limited to 'MediaBrowser.Providers/Games')
| -rw-r--r-- | MediaBrowser.Providers/Games/GameProviderFromXml.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Games/GameXmlParser.cs | 110 |
3 files changed, 125 insertions, 9 deletions
diff --git a/MediaBrowser.Providers/Games/GameProviderFromXml.cs b/MediaBrowser.Providers/Games/GameProviderFromXml.cs index 6292cec46..724e3f5fa 100644 --- a/MediaBrowser.Providers/Games/GameProviderFromXml.cs +++ b/MediaBrowser.Providers/Games/GameProviderFromXml.cs @@ -1,27 +1,30 @@ -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; +using MediaBrowser.Providers.Savers; using System; using System.IO; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Providers.Savers; namespace MediaBrowser.Providers.Games { public class GameProviderFromXml : BaseMetadataProvider { + private readonly IFileSystem _fileSystem; + /// <summary> /// /// </summary> /// <param name="logManager"></param> /// <param name="configurationManager"></param> - public GameProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager) + public GameProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem) : base(logManager, configurationManager) { - + _fileSystem = fileSystem; } /// <summary> @@ -45,7 +48,7 @@ namespace MediaBrowser.Providers.Games return false; } - return FileSystem.GetLastWriteTimeUtc(xml, Logger) > providerInfo.LastRefreshed; + return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed; } /// <summary> @@ -78,7 +81,7 @@ namespace MediaBrowser.Providers.Games try { - new BaseItemXmlParser<Game>(Logger).Fetch(game, metaFile, cancellationToken); + new GameXmlParser(Logger).Fetch(game, metaFile, cancellationToken); } finally { diff --git a/MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs b/MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs index 526170db5..0c9d55a09 100644 --- a/MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs +++ b/MediaBrowser.Providers/Games/GameSystemProviderFromXml.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Providers; @@ -14,10 +15,12 @@ namespace MediaBrowser.Providers.Games public class GameSystemProviderFromXml : BaseMetadataProvider { internal static GameSystemProviderFromXml Current { get; private set; } + private readonly IFileSystem _fileSystem; - public GameSystemProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager) + public GameSystemProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem) : base(logManager, configurationManager) { + _fileSystem = fileSystem; Current = this; } @@ -50,7 +53,7 @@ namespace MediaBrowser.Providers.Games return false; } - return FileSystem.GetLastWriteTimeUtc(xml, Logger) > providerInfo.LastRefreshed; + return _fileSystem.GetLastWriteTimeUtc(xml) > providerInfo.LastRefreshed; } /// <summary> diff --git a/MediaBrowser.Providers/Games/GameXmlParser.cs b/MediaBrowser.Providers/Games/GameXmlParser.cs new file mode 100644 index 000000000..53cc12388 --- /dev/null +++ b/MediaBrowser.Providers/Games/GameXmlParser.cs @@ -0,0 +1,110 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; +using System.Globalization; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +namespace MediaBrowser.Providers.Games +{ + /// <summary> + /// Class EpisodeXmlParser + /// </summary> + public class GameXmlParser : BaseItemXmlParser<Game> + { + private Task _chaptersTask = null; + private readonly CultureInfo _usCulture = new CultureInfo("en-US"); + + public GameXmlParser(ILogger logger) + : base(logger) + { + } + + public async Task FetchAsync(Game item, string metadataFile, CancellationToken cancellationToken) + { + _chaptersTask = null; + + Fetch(item, metadataFile, cancellationToken); + + cancellationToken.ThrowIfCancellationRequested(); + + if (_chaptersTask != null) + { + await _chaptersTask.ConfigureAwait(false); + } + } + + /// <summary> + /// Fetches the data from XML node. + /// </summary> + /// <param name="reader">The reader.</param> + /// <param name="item">The item.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, Game item) + { + switch (reader.Name) + { + case "GameSystem": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + item.GameSystem = val; + } + break; + } + + case "GamesDbId": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + item.SetProviderId(MetadataProviders.Gamesdb, val); + } + break; + } + + case "NesBox": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + item.SetProviderId(MetadataProviders.NesBox, val); + } + break; + } + + case "NesBoxRom": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + item.SetProviderId(MetadataProviders.NesBoxRom, val); + } + break; + } + + case "Players": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + int num; + + if (int.TryParse(val, NumberStyles.Integer, _usCulture, out num)) + { + item.PlayersSupported = num; + } + } + break; + } + + + default: + base.FetchDataFromXmlNode(reader, item); + break; + } + } + } +} |
