GameXmlParser.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System.Globalization;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. using System.Xml;
  5. using MediaBrowser.Controller.Entities;
  6. using MediaBrowser.Controller.Providers;
  7. using MediaBrowser.Model.Entities;
  8. using MediaBrowser.Model.IO;
  9. using MediaBrowser.Model.Logging;
  10. using MediaBrowser.Model.Xml;
  11. namespace MediaBrowser.LocalMetadata.Parsers
  12. {
  13. /// <summary>
  14. /// Class EpisodeXmlParser
  15. /// </summary>
  16. public class GameXmlParser : BaseItemXmlParser<Game>
  17. {
  18. private readonly CultureInfo _usCulture = new CultureInfo("en-US");
  19. private readonly Task _cachedTask = Task.FromResult(true);
  20. public Task FetchAsync(MetadataResult<Game> item, string metadataFile, CancellationToken cancellationToken)
  21. {
  22. Fetch(item, metadataFile, cancellationToken);
  23. cancellationToken.ThrowIfCancellationRequested();
  24. return _cachedTask;
  25. }
  26. /// <summary>
  27. /// Fetches the data from XML node.
  28. /// </summary>
  29. /// <param name="reader">The reader.</param>
  30. /// <param name="result">The result.</param>
  31. protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Game> result)
  32. {
  33. var item = result.Item;
  34. switch (reader.Name)
  35. {
  36. case "GameSystem":
  37. {
  38. var val = reader.ReadElementContentAsString();
  39. if (!string.IsNullOrWhiteSpace(val))
  40. {
  41. item.GameSystem = val;
  42. }
  43. break;
  44. }
  45. case "GamesDbId":
  46. {
  47. var val = reader.ReadElementContentAsString();
  48. if (!string.IsNullOrWhiteSpace(val))
  49. {
  50. item.SetProviderId(MetadataProviders.Gamesdb, val);
  51. }
  52. break;
  53. }
  54. case "Players":
  55. {
  56. var val = reader.ReadElementContentAsString();
  57. if (!string.IsNullOrWhiteSpace(val))
  58. {
  59. int num;
  60. if (int.TryParse(val, NumberStyles.Integer, _usCulture, out num))
  61. {
  62. item.PlayersSupported = num;
  63. }
  64. }
  65. break;
  66. }
  67. default:
  68. base.FetchDataFromXmlNode(reader, result);
  69. break;
  70. }
  71. }
  72. public GameXmlParser(ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory, IFileSystem fileSystem) : base(logger, providerManager, xmlReaderSettingsFactory, fileSystem)
  73. {
  74. }
  75. }
  76. }