From e734bb6ecbca7919554b3d8fbfd94eedfe880406 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 4 Jan 2012 19:40:25 -0800 Subject: [PATCH] ExternalNotification now has AfterRename, to notify (XBMC) after all episodes have been renamed. --- NzbDrone.Core/Jobs/RenameEpisodeJob.cs | 13 ++++++++++++- NzbDrone.Core/Jobs/RenameSeasonJob.cs | 13 +++++++++++-- NzbDrone.Core/Jobs/RenameSeriesJob.cs | 13 +++++++++++-- .../ExternalNotificationBase.cs | 7 +++++++ .../Providers/ExternalNotification/Growl.cs | 5 +++++ .../Providers/ExternalNotification/Prowl.cs | 5 +++++ .../Providers/ExternalNotification/Smtp.cs | 5 +++++ .../Providers/ExternalNotification/Twitter.cs | 6 ++++++ .../Providers/ExternalNotification/Xbmc.cs | 5 +++++ .../Providers/ExternalNotificationProvider.cs | 8 ++++++++ 10 files changed, 75 insertions(+), 5 deletions(-) diff --git a/NzbDrone.Core/Jobs/RenameEpisodeJob.cs b/NzbDrone.Core/Jobs/RenameEpisodeJob.cs index f998b3e17e..cab50ac41e 100644 --- a/NzbDrone.Core/Jobs/RenameEpisodeJob.cs +++ b/NzbDrone.Core/Jobs/RenameEpisodeJob.cs @@ -11,15 +11,20 @@ public class RenameEpisodeJob : IJob { private readonly DiskScanProvider _diskScanProvider; private readonly MediaFileProvider _mediaFileProvider; + private readonly ExternalNotificationProvider _externalNotificationProvider; + private readonly SeriesProvider _seriesProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); [Inject] - public RenameEpisodeJob(DiskScanProvider diskScanProvider, MediaFileProvider mediaFileProvider) + public RenameEpisodeJob(DiskScanProvider diskScanProvider, MediaFileProvider mediaFileProvider, + ExternalNotificationProvider externalNotificationProvider, SeriesProvider seriesProvider) { _diskScanProvider = diskScanProvider; _mediaFileProvider = mediaFileProvider; + _externalNotificationProvider = externalNotificationProvider; + _seriesProvider = seriesProvider; } public string Name @@ -39,6 +44,12 @@ public void Start(ProgressNotification notification, int targetId, int secondary var episode = _mediaFileProvider.GetEpisodeFile(targetId); _diskScanProvider.MoveEpisodeFile(episode); + + //Start AfterRename + var series = _seriesProvider.GetSeries(episode.SeriesId); + var message = String.Format("Renamed: Series {0}, Season: {1}", series.Title, secondaryTargetId); + _externalNotificationProvider.AfterRename(message, series); + notification.CurrentMessage = String.Format("Episode rename completed for: {0} ", targetId); } } diff --git a/NzbDrone.Core/Jobs/RenameSeasonJob.cs b/NzbDrone.Core/Jobs/RenameSeasonJob.cs index 1aef4544f3..74dd089621 100644 --- a/NzbDrone.Core/Jobs/RenameSeasonJob.cs +++ b/NzbDrone.Core/Jobs/RenameSeasonJob.cs @@ -11,15 +11,19 @@ public class RenameSeasonJob : IJob { private readonly MediaFileProvider _mediaFileProvider; private readonly DiskScanProvider _diskScanProvider; - + private readonly ExternalNotificationProvider _externalNotificationProvider; + private readonly SeriesProvider _seriesProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); [Inject] - public RenameSeasonJob(MediaFileProvider mediaFileProvider, DiskScanProvider diskScanProvider) + public RenameSeasonJob(MediaFileProvider mediaFileProvider, DiskScanProvider diskScanProvider, + ExternalNotificationProvider externalNotificationProvider, SeriesProvider seriesProvider) { _mediaFileProvider = mediaFileProvider; _diskScanProvider = diskScanProvider; + _externalNotificationProvider = externalNotificationProvider; + _seriesProvider = seriesProvider; } public string Name @@ -54,6 +58,11 @@ public void Start(ProgressNotification notification, int targetId, int secondary _diskScanProvider.MoveEpisodeFile(episodeFile); } + //Start AfterRename + var series = _seriesProvider.GetSeries(targetId); + var message = String.Format("Renamed: Series {0}, Season: {1}", series.Title, secondaryTargetId); + _externalNotificationProvider.AfterRename(message, series); + notification.CurrentMessage = String.Format("Season rename completed for Series: {0} Season: {1}", targetId, secondaryTargetId); } } diff --git a/NzbDrone.Core/Jobs/RenameSeriesJob.cs b/NzbDrone.Core/Jobs/RenameSeriesJob.cs index 47144fe00b..19aadfcc10 100644 --- a/NzbDrone.Core/Jobs/RenameSeriesJob.cs +++ b/NzbDrone.Core/Jobs/RenameSeriesJob.cs @@ -11,15 +11,19 @@ public class RenameSeriesJob : IJob { private readonly MediaFileProvider _mediaFileProvider; private readonly DiskScanProvider _diskScanProvider; - + private readonly ExternalNotificationProvider _externalNotificationProvider; + private readonly SeriesProvider _seriesProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); [Inject] - public RenameSeriesJob(MediaFileProvider mediaFileProvider, DiskScanProvider diskScanProvider) + public RenameSeriesJob(MediaFileProvider mediaFileProvider, DiskScanProvider diskScanProvider, + ExternalNotificationProvider externalNotificationProvider, SeriesProvider seriesProvider) { _mediaFileProvider = mediaFileProvider; _diskScanProvider = diskScanProvider; + _externalNotificationProvider = externalNotificationProvider; + _seriesProvider = seriesProvider; } public string Name @@ -51,6 +55,11 @@ public void Start(ProgressNotification notification, int targetId, int secondary _diskScanProvider.MoveEpisodeFile(episodeFile); } + //Start AfterRename + var series = _seriesProvider.GetSeries(targetId); + var message = String.Format("Renamed: Series {0}", series.Title); + _externalNotificationProvider.AfterRename(message, series); + notification.CurrentMessage = String.Format("Series rename completed for Series: {0}", targetId); } } diff --git a/NzbDrone.Core/Providers/ExternalNotification/ExternalNotificationBase.cs b/NzbDrone.Core/Providers/ExternalNotification/ExternalNotificationBase.cs index 811713e227..43fe7bec34 100644 --- a/NzbDrone.Core/Providers/ExternalNotification/ExternalNotificationBase.cs +++ b/NzbDrone.Core/Providers/ExternalNotification/ExternalNotificationBase.cs @@ -41,5 +41,12 @@ protected ExternalNotificationBase(ConfigProvider configProvider) /// The message to send to the receiver /// The Series for the new download public abstract void OnRename(string message, Series series); + + /// + /// Performs the after rename action, this will be handled after all renaming for episode/season/series + /// + /// The message to send to the receiver + /// The Series for the new download + public abstract void AfterRename(string message, Series series); } } diff --git a/NzbDrone.Core/Providers/ExternalNotification/Growl.cs b/NzbDrone.Core/Providers/ExternalNotification/Growl.cs index 03de0d9f08..5d7701a243 100644 --- a/NzbDrone.Core/Providers/ExternalNotification/Growl.cs +++ b/NzbDrone.Core/Providers/ExternalNotification/Growl.cs @@ -70,5 +70,10 @@ public override void OnRename(string message, Series series) { } + + public override void AfterRename(string message, Series series) + { + + } } } diff --git a/NzbDrone.Core/Providers/ExternalNotification/Prowl.cs b/NzbDrone.Core/Providers/ExternalNotification/Prowl.cs index 0bb79fd3fe..987d3c185d 100644 --- a/NzbDrone.Core/Providers/ExternalNotification/Prowl.cs +++ b/NzbDrone.Core/Providers/ExternalNotification/Prowl.cs @@ -69,5 +69,10 @@ public override void OnRename(string message, Series series) { } + + public override void AfterRename(string message, Series series) + { + + } } } diff --git a/NzbDrone.Core/Providers/ExternalNotification/Smtp.cs b/NzbDrone.Core/Providers/ExternalNotification/Smtp.cs index 33287a053f..c3bda14c2b 100644 --- a/NzbDrone.Core/Providers/ExternalNotification/Smtp.cs +++ b/NzbDrone.Core/Providers/ExternalNotification/Smtp.cs @@ -47,5 +47,10 @@ public override void OnRename(string message, Series series) { } + + public override void AfterRename(string message, Series series) + { + + } } } diff --git a/NzbDrone.Core/Providers/ExternalNotification/Twitter.cs b/NzbDrone.Core/Providers/ExternalNotification/Twitter.cs index 79fae1a9a9..83e85b3029 100644 --- a/NzbDrone.Core/Providers/ExternalNotification/Twitter.cs +++ b/NzbDrone.Core/Providers/ExternalNotification/Twitter.cs @@ -39,6 +39,12 @@ public override void OnDownload(string message, Series series) public override void OnRename(string message, Series series) { + + } + + public override void AfterRename(string message, Series series) + { + } } } diff --git a/NzbDrone.Core/Providers/ExternalNotification/Xbmc.cs b/NzbDrone.Core/Providers/ExternalNotification/Xbmc.cs index 2533fc54ec..013818835e 100644 --- a/NzbDrone.Core/Providers/ExternalNotification/Xbmc.cs +++ b/NzbDrone.Core/Providers/ExternalNotification/Xbmc.cs @@ -44,6 +44,11 @@ public override void OnDownload(string message, Series series) } public override void OnRename(string message, Series series) + { + + } + + public override void AfterRename(string message, Series series) { UpdateAndClean(series); } diff --git a/NzbDrone.Core/Providers/ExternalNotificationProvider.cs b/NzbDrone.Core/Providers/ExternalNotificationProvider.cs index 749c12875a..1016deb25f 100644 --- a/NzbDrone.Core/Providers/ExternalNotificationProvider.cs +++ b/NzbDrone.Core/Providers/ExternalNotificationProvider.cs @@ -108,5 +108,13 @@ public virtual void OnRename(string message, Series series) notifier.OnRename(message, series); } } + + public virtual void AfterRename(string message, Series series) + { + foreach (var notifier in _notifiers.Where(i => GetSettings(i.GetType()).Enable)) + { + notifier.OnRename(message, series); + } + } } } \ No newline at end of file