EpisodeMetadataService.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using MediaBrowser.Controller.Configuration;
  3. using MediaBrowser.Controller.Entities.TV;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Providers;
  6. using MediaBrowser.Model.Entities;
  7. using MediaBrowser.Model.Logging;
  8. using MediaBrowser.Providers.Manager;
  9. using System.Collections.Generic;
  10. using System.Threading.Tasks;
  11. using MediaBrowser.Controller.IO;
  12. using MediaBrowser.Model.IO;
  13. namespace MediaBrowser.Providers.TV
  14. {
  15. public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo>
  16. {
  17. protected override ItemUpdateType BeforeSaveInternal(Episode item, bool isFullRefresh, ItemUpdateType currentUpdateType)
  18. {
  19. var updateType = base.BeforeSaveInternal(item, isFullRefresh, currentUpdateType);
  20. var seriesName = item.FindSeriesName();
  21. if (!string.Equals(item.SeriesName, seriesName, StringComparison.Ordinal))
  22. {
  23. item.SeriesName = seriesName;
  24. updateType |= ItemUpdateType.MetadataImport;
  25. }
  26. var seasonName = item.FindSeasonName();
  27. if (!string.Equals(item.SeasonName, seasonName, StringComparison.Ordinal))
  28. {
  29. item.SeasonName = seasonName;
  30. updateType |= ItemUpdateType.MetadataImport;
  31. }
  32. var seriesId = item.FindSeriesId();
  33. if (item.SeriesId != seriesId)
  34. {
  35. item.SeriesId = seriesId;
  36. updateType |= ItemUpdateType.MetadataImport;
  37. }
  38. var seasonId = item.FindSeasonId();
  39. if (item.SeasonId != seasonId)
  40. {
  41. item.SeasonId = seasonId;
  42. updateType |= ItemUpdateType.MetadataImport;
  43. }
  44. var seriesPresentationUniqueKey = item.FindSeriesPresentationUniqueKey();
  45. if (!string.Equals(item.SeriesPresentationUniqueKey, seriesPresentationUniqueKey, StringComparison.Ordinal))
  46. {
  47. item.SeriesPresentationUniqueKey = seriesPresentationUniqueKey;
  48. updateType |= ItemUpdateType.MetadataImport;
  49. }
  50. return updateType;
  51. }
  52. protected override void MergeData(MetadataResult<Episode> source, MetadataResult<Episode> target, MetadataFields[] lockedFields, bool replaceData, bool mergeMetadataSettings)
  53. {
  54. ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings);
  55. var sourceItem = source.Item;
  56. var targetItem = target.Item;
  57. if (replaceData || !targetItem.AirsBeforeSeasonNumber.HasValue)
  58. {
  59. targetItem.AirsBeforeSeasonNumber = sourceItem.AirsBeforeSeasonNumber;
  60. }
  61. if (replaceData || !targetItem.AirsAfterSeasonNumber.HasValue)
  62. {
  63. targetItem.AirsAfterSeasonNumber = sourceItem.AirsAfterSeasonNumber;
  64. }
  65. if (replaceData || !targetItem.AirsBeforeEpisodeNumber.HasValue)
  66. {
  67. targetItem.AirsBeforeEpisodeNumber = sourceItem.AirsBeforeEpisodeNumber;
  68. }
  69. if (replaceData || !targetItem.DvdSeasonNumber.HasValue)
  70. {
  71. targetItem.DvdSeasonNumber = sourceItem.DvdSeasonNumber;
  72. }
  73. if (replaceData || !targetItem.DvdEpisodeNumber.HasValue)
  74. {
  75. targetItem.DvdEpisodeNumber = sourceItem.DvdEpisodeNumber;
  76. }
  77. if (replaceData || !targetItem.AbsoluteEpisodeNumber.HasValue)
  78. {
  79. targetItem.AbsoluteEpisodeNumber = sourceItem.AbsoluteEpisodeNumber;
  80. }
  81. if (replaceData || !targetItem.IndexNumberEnd.HasValue)
  82. {
  83. targetItem.IndexNumberEnd = sourceItem.IndexNumberEnd;
  84. }
  85. }
  86. public EpisodeMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, fileSystem, userDataManager, libraryManager)
  87. {
  88. }
  89. }
  90. }