SeriesNfoSaver.cs 3.0 KB

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