2
0

SeriesNfoSaver.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using MediaBrowser.Controller.Configuration;
  2. using MediaBrowser.Controller.Entities;
  3. using MediaBrowser.Controller.Entities.TV;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Model.Entities;
  6. using MediaBrowser.Model.Logging;
  7. using System.Collections.Generic;
  8. using System.Globalization;
  9. using System.IO;
  10. using System.Xml;
  11. using MediaBrowser.Controller.IO;
  12. using MediaBrowser.Model.IO;
  13. using MediaBrowser.Model.Xml;
  14. namespace MediaBrowser.XbmcMetadata.Savers
  15. {
  16. public class SeriesNfoSaver : BaseNfoSaver
  17. {
  18. protected override string GetLocalSavePath(IHasMetadata item)
  19. {
  20. return Path.Combine(item.Path, "tvshow.nfo");
  21. }
  22. protected override string GetRootElementName(IHasMetadata item)
  23. {
  24. return "tvshow";
  25. }
  26. public override bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
  27. {
  28. if (!item.SupportsLocalMetadata)
  29. {
  30. return false;
  31. }
  32. return item is Series && updateType >= MinimumUpdateType;
  33. }
  34. protected override void WriteCustomElements(IHasMetadata item, XmlWriter writer)
  35. {
  36. var series = (Series)item;
  37. var tvdb = item.GetProviderId(MetadataProviders.Tvdb);
  38. if (!string.IsNullOrEmpty(tvdb))
  39. {
  40. writer.WriteElementString("id", tvdb);
  41. writer.WriteStartElement("episodeguide");
  42. var language = item.GetPreferredMetadataLanguage();
  43. language = string.IsNullOrEmpty(language)
  44. ? "en"
  45. : language;
  46. writer.WriteStartElement("url");
  47. writer.WriteAttributeString("cache", string.Format("{0}.xml", tvdb));
  48. writer.WriteString(string.Format("http://www.thetvdb.com/api/1D62F2F90030C444/series/{0}/all/{1}.zip", tvdb, language));
  49. writer.WriteEndElement();
  50. writer.WriteEndElement();
  51. }
  52. writer.WriteElementString("season", "-1");
  53. writer.WriteElementString("episode", "-1");
  54. if (series.Status.HasValue)
  55. {
  56. writer.WriteElementString("status", series.Status.Value.ToString());
  57. }
  58. if (!string.IsNullOrEmpty(series.AirTime))
  59. {
  60. writer.WriteElementString("airs_time", series.AirTime);
  61. }
  62. if (series.AirDays.Count == 7)
  63. {
  64. writer.WriteElementString("airs_dayofweek", "Daily");
  65. }
  66. else if (series.AirDays.Count > 0)
  67. {
  68. writer.WriteElementString("airs_dayofweek", series.AirDays[0].ToString());
  69. }
  70. }
  71. protected override List<string> GetTagsUsed(IHasMetadata item)
  72. {
  73. var list = base.GetTagsUsed(item);
  74. list.AddRange(new string[]
  75. {
  76. "id",
  77. "episodeguide",
  78. "season",
  79. "episode",
  80. "status",
  81. "airs_time",
  82. "airs_dayofweek"
  83. });
  84. return list;
  85. }
  86. public SeriesNfoSaver(IFileSystem fileSystem, IServerConfigurationManager configurationManager, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataManager, ILogger logger, IXmlReaderSettingsFactory xmlReaderSettingsFactory) : base(fileSystem, configurationManager, libraryManager, userManager, userDataManager, logger, xmlReaderSettingsFactory)
  87. {
  88. }
  89. }
  90. }