GameXmlParser.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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(MetadataResult<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="result">The result.</param>
  33. protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Game> result)
  34. {
  35. var item = result.Item;
  36. switch (reader.Name)
  37. {
  38. case "GameSystem":
  39. {
  40. var val = reader.ReadElementContentAsString();
  41. if (!string.IsNullOrWhiteSpace(val))
  42. {
  43. item.GameSystem = val;
  44. }
  45. break;
  46. }
  47. case "GamesDbId":
  48. {
  49. var val = reader.ReadElementContentAsString();
  50. if (!string.IsNullOrWhiteSpace(val))
  51. {
  52. item.SetProviderId(MetadataProviders.Gamesdb, val);
  53. }
  54. break;
  55. }
  56. case "Players":
  57. {
  58. var val = reader.ReadElementContentAsString();
  59. if (!string.IsNullOrWhiteSpace(val))
  60. {
  61. int num;
  62. if (int.TryParse(val, NumberStyles.Integer, _usCulture, out num))
  63. {
  64. item.PlayersSupported = num;
  65. }
  66. }
  67. break;
  68. }
  69. default:
  70. base.FetchDataFromXmlNode(reader, result);
  71. break;
  72. }
  73. }
  74. }
  75. }