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