From f6b08f697b2ff09cb4ddfa96d74320638b5af311 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 21 Feb 2022 21:28:24 -0800 Subject: [PATCH] New: Use TVDB's Episode ID as default uniqueid for Kodi metadata Closes #4792 --- .../Migration/167_add_tvdbid_to_episode.cs | 14 ++++++++++++++ .../Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs | 12 ++++++++---- .../SkyHook/Resource/EpisodeResource.cs | 1 + .../MetadataSource/SkyHook/SkyHookProxy.cs | 1 + src/NzbDrone.Core/Tv/Episode.cs | 1 + src/NzbDrone.Core/Tv/RefreshEpisodeService.cs | 1 + 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/NzbDrone.Core/Datastore/Migration/167_add_tvdbid_to_episode.cs diff --git a/src/NzbDrone.Core/Datastore/Migration/167_add_tvdbid_to_episode.cs b/src/NzbDrone.Core/Datastore/Migration/167_add_tvdbid_to_episode.cs new file mode 100644 index 000000000..71b40f7d8 --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Migration/167_add_tvdbid_to_episode.cs @@ -0,0 +1,14 @@ +using FluentMigrator; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Migration(167)] + public class add_tvdbid_to_episode : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + Alter.Table("Episodes").AddColumn("TvdbId").AsInt32().Nullable(); + } + } +} diff --git a/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs b/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs index 19e3de9f1..145a054d5 100644 --- a/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs +++ b/src/NzbDrone.Core/Extras/Metadata/Consumers/Xbmc/XbmcMetadata.cs @@ -271,10 +271,14 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Xbmc details.Add(new XElement("displayepisode", episode.AiredBeforeEpisodeNumber ?? -1)); } - var uniqueId = new XElement("uniqueid", episode.Id); - uniqueId.SetAttributeValue("type", "sonarr"); - uniqueId.SetAttributeValue("default", true); - details.Add(uniqueId); + var tvdbId = new XElement("uniqueid", episode.TvdbId); + tvdbId.SetAttributeValue("type", "tvdb"); + tvdbId.SetAttributeValue("default", true); + details.Add(tvdbId); + + var sonarrId = new XElement("uniqueid", episode.Id); + sonarrId.SetAttributeValue("type", "sonarr"); + details.Add(sonarrId); if (image == null) { diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/EpisodeResource.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/EpisodeResource.cs index 651cf27df..48ca3b9bc 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/EpisodeResource.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/Resource/EpisodeResource.cs @@ -4,6 +4,7 @@ namespace NzbDrone.Core.MetadataSource.SkyHook.Resource { public class EpisodeResource { + public int TvdbId { get; set; } public int SeasonNumber { get; set; } public int EpisodeNumber { get; set; } public int? AbsoluteEpisodeNumber { get; set; } diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index b78898e6a..606a6871e 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -223,6 +223,7 @@ namespace NzbDrone.Core.MetadataSource.SkyHook private static Episode MapEpisode(EpisodeResource oracleEpisode) { var episode = new Episode(); + episode.TvdbId = oracleEpisode.TvdbId; episode.Overview = oracleEpisode.Overview; episode.SeasonNumber = oracleEpisode.SeasonNumber; episode.EpisodeNumber = oracleEpisode.EpisodeNumber; diff --git a/src/NzbDrone.Core/Tv/Episode.cs b/src/NzbDrone.Core/Tv/Episode.cs index a54563fb9..737596a67 100644 --- a/src/NzbDrone.Core/Tv/Episode.cs +++ b/src/NzbDrone.Core/Tv/Episode.cs @@ -17,6 +17,7 @@ namespace NzbDrone.Core.Tv public const string AIR_DATE_FORMAT = "yyyy-MM-dd"; public int SeriesId { get; set; } + public int TvdbId { get; set; } public int EpisodeFileId { get; set; } public int SeasonNumber { get; set; } public int EpisodeNumber { get; set; } diff --git a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs index 8ed4d9d21..8cfd052f2 100644 --- a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs +++ b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs @@ -64,6 +64,7 @@ namespace NzbDrone.Core.Tv } episodeToUpdate.SeriesId = series.Id; + episodeToUpdate.TvdbId = episode.TvdbId; episodeToUpdate.EpisodeNumber = episode.EpisodeNumber; episodeToUpdate.SeasonNumber = episode.SeasonNumber; episodeToUpdate.AbsoluteEpisodeNumber = episode.AbsoluteEpisodeNumber;