EpisodeXmlParser.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.IO;
  3. using System.Xml;
  4. using MediaBrowser.Controller.Xml;
  5. using MediaBrowser.TV.Entities;
  6. namespace MediaBrowser.TV.Metadata
  7. {
  8. public class EpisodeXmlParser : BaseItemXmlParser<Episode>
  9. {
  10. protected override void FetchDataFromXmlNode(XmlReader reader, Episode item)
  11. {
  12. switch (reader.Name)
  13. {
  14. case "filename":
  15. {
  16. string filename = reader.ReadString();
  17. if (!string.IsNullOrWhiteSpace(filename))
  18. {
  19. string metadataFolder = Path.GetDirectoryName(item.Path);
  20. item.PrimaryImagePath = Path.Combine(metadataFolder, filename);
  21. }
  22. break;
  23. }
  24. case "EpisodeNumber":
  25. string number = reader.ReadString();
  26. if (!string.IsNullOrWhiteSpace(number))
  27. {
  28. item.IndexNumber = int.Parse(number);
  29. }
  30. break;
  31. case "SeasonNumber":
  32. item.SeasonNumber = reader.ReadString();
  33. break;
  34. case "EpisodeName":
  35. item.Name = reader.ReadString();
  36. break;
  37. case "FirstAired":
  38. {
  39. string firstAired = reader.ReadString();
  40. if (!string.IsNullOrWhiteSpace(firstAired))
  41. {
  42. DateTime airDate;
  43. if (DateTime.TryParse(firstAired, out airDate) && airDate.Year > 1850)
  44. {
  45. item.PremiereDate = airDate;
  46. item.ProductionYear = airDate.Year;
  47. }
  48. }
  49. break;
  50. }
  51. default:
  52. base.FetchDataFromXmlNode(reader, item);
  53. break;
  54. }
  55. }
  56. }
  57. }