GameXmlParser.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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.Logging;
  9. namespace MediaBrowser.LocalMetadata.Parsers
  10. {
  11. /// <summary>
  12. /// Class EpisodeXmlParser
  13. /// </summary>
  14. public class GameXmlParser : BaseItemXmlParser<Game>
  15. {
  16. private readonly CultureInfo _usCulture = new CultureInfo("en-US");
  17. public GameXmlParser(ILogger logger)
  18. : base(logger)
  19. {
  20. }
  21. private readonly Task _cachedTask = Task.FromResult(true);
  22. public Task FetchAsync(Game item, string metadataFile, CancellationToken cancellationToken)
  23. {
  24. Fetch(item, metadataFile, cancellationToken);
  25. cancellationToken.ThrowIfCancellationRequested();
  26. return _cachedTask;
  27. }
  28. /// <summary>
  29. /// Fetches the data from XML node.
  30. /// </summary>
  31. /// <param name="reader">The reader.</param>
  32. /// <param name="item">The item.</param>
  33. protected override void FetchDataFromXmlNode(XmlReader reader, Game item)
  34. {
  35. switch (reader.Name)
  36. {
  37. case "GameSystem":
  38. {
  39. var val = reader.ReadElementContentAsString();
  40. if (!string.IsNullOrWhiteSpace(val))
  41. {
  42. item.GameSystem = val;
  43. }
  44. break;
  45. }
  46. case "GamesDbId":
  47. {
  48. var val = reader.ReadElementContentAsString();
  49. if (!string.IsNullOrWhiteSpace(val))
  50. {
  51. item.SetProviderId(MetadataProviders.Gamesdb, val);
  52. }
  53. break;
  54. }
  55. case "NesBox":
  56. {
  57. var val = reader.ReadElementContentAsString();
  58. if (!string.IsNullOrWhiteSpace(val))
  59. {
  60. item.SetProviderId(MetadataProviders.NesBox, val);
  61. }
  62. break;
  63. }
  64. case "NesBoxRom":
  65. {
  66. var val = reader.ReadElementContentAsString();
  67. if (!string.IsNullOrWhiteSpace(val))
  68. {
  69. item.SetProviderId(MetadataProviders.NesBoxRom, val);
  70. }
  71. break;
  72. }
  73. case "Players":
  74. {
  75. var val = reader.ReadElementContentAsString();
  76. if (!string.IsNullOrWhiteSpace(val))
  77. {
  78. int num;
  79. if (int.TryParse(val, NumberStyles.Integer, _usCulture, out num))
  80. {
  81. item.PlayersSupported = num;
  82. }
  83. }
  84. break;
  85. }
  86. default:
  87. base.FetchDataFromXmlNode(reader, item);
  88. break;
  89. }
  90. }
  91. }
  92. }