diff --git a/NzbDrone.Core/Jobs/RenameSeriesJob.cs b/NzbDrone.Core/Jobs/RenameSeriesJob.cs index ceabbf555..622acf5cc 100644 --- a/NzbDrone.Core/Jobs/RenameSeriesJob.cs +++ b/NzbDrone.Core/Jobs/RenameSeriesJob.cs @@ -43,55 +43,65 @@ namespace NzbDrone.Core.Jobs public void Start(ProgressNotification notification, int targetId, int secondaryTargetId) { + List seriesToRename; + if (targetId <= 0) - throw new ArgumentOutOfRangeException("targetId"); - - var series = _seriesProvider.GetSeries(targetId); - - notification.CurrentMessage = String.Format("Renaming episodes for '{0}'", series.Title); - - Logger.Debug("Getting episodes from database for series: {0}", series.SeriesId); - var episodeFiles = _mediaFileProvider.GetSeriesFiles(series.SeriesId); - - if (episodeFiles == null || episodeFiles.Count == 0) { - Logger.Warn("No episodes in database found for series: {0}", series.SeriesId); - return; + seriesToRename = _seriesProvider.GetAllSeries().ToList(); } - var newEpisodeFiles = new List(); - var oldEpisodeFiles = new List(); - - foreach (var episodeFile in episodeFiles) + else { - try - { - var oldFile = new EpisodeFile(episodeFile); - var newFile = _diskScanProvider.MoveEpisodeFile(episodeFile); + seriesToRename = new List{ _seriesProvider.GetSeries(targetId) }; + } - if (newFile != null) + foreach(var series in seriesToRename) + { + notification.CurrentMessage = String.Format("Renaming episodes for '{0}'", series.Title); + + Logger.Debug("Getting episodes from database for series: {0}", series.SeriesId); + var episodeFiles = _mediaFileProvider.GetSeriesFiles(series.SeriesId); + + if (episodeFiles == null || episodeFiles.Count == 0) + { + Logger.Warn("No episodes in database found for series: {0}", series.SeriesId); + return; + } + + var newEpisodeFiles = new List(); + var oldEpisodeFiles = new List(); + + foreach (var episodeFile in episodeFiles) + { + try { - newEpisodeFiles.Add(newFile); - oldEpisodeFiles.Add(oldFile); + var oldFile = new EpisodeFile(episodeFile); + var newFile = _diskScanProvider.MoveEpisodeFile(episodeFile); + + if (newFile != null) + { + newEpisodeFiles.Add(newFile); + oldEpisodeFiles.Add(oldFile); + } + } + + catch (Exception e) + { + Logger.WarnException("An error has occurred while renaming file", e); } } - catch(Exception e) - { - Logger.WarnException("An error has occurred while renaming file", e); - } + //Remove & Create Metadata for episode files + _metadataProvider.RemoveForEpisodeFiles(oldEpisodeFiles); + _metadataProvider.CreateForEpisodeFiles(newEpisodeFiles); + + //Start AfterRename + + var message = String.Format("Renamed: Series {0}", series.Title); + _externalNotificationProvider.AfterRename(message, series); + + notification.CurrentMessage = String.Format("Rename completed for {0}", series.Title); } - - //Remove & Create Metadata for episode files - _metadataProvider.RemoveForEpisodeFiles(oldEpisodeFiles); - _metadataProvider.CreateForEpisodeFiles(newEpisodeFiles); - - //Start AfterRename - - var message = String.Format("Renamed: Series {0}", series.Title); - _externalNotificationProvider.AfterRename(message, series); - - notification.CurrentMessage = String.Format("Rename completed for {0}", series.Title); } } } \ No newline at end of file diff --git a/NzbDrone.Web/Controllers/EpisodeController.cs b/NzbDrone.Web/Controllers/EpisodeController.cs index e3330c33f..49b98f6f0 100644 --- a/NzbDrone.Web/Controllers/EpisodeController.cs +++ b/NzbDrone.Web/Controllers/EpisodeController.cs @@ -41,10 +41,16 @@ namespace NzbDrone.Web.Controllers } - public JsonResult RenameEpisodes(int seriesId) + public JsonResult RenameSeries(int seriesId) { _jobProvider.QueueJob(typeof(RenameSeriesJob), seriesId); return JsonNotificationResult.Queued("Series rename"); } + + public JsonResult RenameAllSeries() + { + _jobProvider.QueueJob(typeof(RenameSeriesJob)); + return JsonNotificationResult.Queued("Series rename"); + } } } \ No newline at end of file diff --git a/NzbDrone.Web/Views/Series/Details.cshtml b/NzbDrone.Web/Views/Series/Details.cshtml index 53a0b7bb2..69c0f7569 100644 --- a/NzbDrone.Web/Views/Series/Details.cshtml +++ b/NzbDrone.Web/Views/Series/Details.cshtml @@ -72,7 +72,7 @@
  • Edit
  • @Ajax.ActionLink("Force Refresh", "ForceRefresh", "Command", new { seriesId = Model.SeriesId }, null, new { Title = "Refresh episode and series information and scan for new episodes" })
  • @Ajax.ActionLink("Search for missing episodes", "BacklogSeries", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Search for episodes missing from this series" })
  • -
  • @Ajax.ActionLink("Rename Episode Files", "RenameEpisodes", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Rename all episode files to match your preferred naming" })
  • +
  • @Ajax.ActionLink("Rename Episode Files", "RenameSeries", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Rename all episode files to match your preferred naming" })
  • } diff --git a/NzbDrone.Web/Views/Series/Editor.cshtml b/NzbDrone.Web/Views/Series/Editor.cshtml index 3a4ab3f29..a76ad5ae0 100644 --- a/NzbDrone.Web/Views/Series/Editor.cshtml +++ b/NzbDrone.Web/Views/Series/Editor.cshtml @@ -58,6 +58,7 @@ { }