New: Rename all series added to Series Editor

pull/4/head
Mark McDowall 12 years ago
parent 4ca828db81
commit e5b6f63e6e

@ -43,55 +43,65 @@ namespace NzbDrone.Core.Jobs
public void Start(ProgressNotification notification, int targetId, int secondaryTargetId) public void Start(ProgressNotification notification, int targetId, int secondaryTargetId)
{ {
if (targetId <= 0) List<Series> seriesToRename;
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); if (targetId <= 0)
var episodeFiles = _mediaFileProvider.GetSeriesFiles(series.SeriesId);
if (episodeFiles == null || episodeFiles.Count == 0)
{ {
Logger.Warn("No episodes in database found for series: {0}", series.SeriesId); seriesToRename = _seriesProvider.GetAllSeries().ToList();
return;
} }
var newEpisodeFiles = new List<EpisodeFile>(); else
var oldEpisodeFiles = new List<EpisodeFile>(); {
seriesToRename = new List<Series>{ _seriesProvider.GetSeries(targetId) };
}
foreach (var episodeFile in episodeFiles) foreach(var series in seriesToRename)
{ {
try 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)
{ {
var oldFile = new EpisodeFile(episodeFile); Logger.Warn("No episodes in database found for series: {0}", series.SeriesId);
var newFile = _diskScanProvider.MoveEpisodeFile(episodeFile); return;
}
var newEpisodeFiles = new List<EpisodeFile>();
var oldEpisodeFiles = new List<EpisodeFile>();
if (newFile != null) foreach (var episodeFile in episodeFiles)
{
try
{ {
newEpisodeFiles.Add(newFile); var oldFile = new EpisodeFile(episodeFile);
oldEpisodeFiles.Add(oldFile); var newFile = _diskScanProvider.MoveEpisodeFile(episodeFile);
if (newFile != null)
{
newEpisodeFiles.Add(newFile);
oldEpisodeFiles.Add(oldFile);
}
} }
}
catch(Exception e) catch (Exception e)
{ {
Logger.WarnException("An error has occurred while renaming file", e); Logger.WarnException("An error has occurred while renaming file", e);
}
} }
}
//Remove & Create Metadata for episode files //Remove & Create Metadata for episode files
_metadataProvider.RemoveForEpisodeFiles(oldEpisodeFiles); _metadataProvider.RemoveForEpisodeFiles(oldEpisodeFiles);
_metadataProvider.CreateForEpisodeFiles(newEpisodeFiles); _metadataProvider.CreateForEpisodeFiles(newEpisodeFiles);
//Start AfterRename //Start AfterRename
var message = String.Format("Renamed: Series {0}", series.Title); var message = String.Format("Renamed: Series {0}", series.Title);
_externalNotificationProvider.AfterRename(message, series); _externalNotificationProvider.AfterRename(message, series);
notification.CurrentMessage = String.Format("Rename completed for {0}", series.Title); notification.CurrentMessage = String.Format("Rename completed for {0}", series.Title);
}
} }
} }
} }

@ -41,10 +41,16 @@ namespace NzbDrone.Web.Controllers
} }
public JsonResult RenameEpisodes(int seriesId) public JsonResult RenameSeries(int seriesId)
{ {
_jobProvider.QueueJob(typeof(RenameSeriesJob), seriesId); _jobProvider.QueueJob(typeof(RenameSeriesJob), seriesId);
return JsonNotificationResult.Queued("Series rename"); return JsonNotificationResult.Queued("Series rename");
} }
public JsonResult RenameAllSeries()
{
_jobProvider.QueueJob(typeof(RenameSeriesJob));
return JsonNotificationResult.Queued("Series rename");
}
} }
} }

@ -72,7 +72,7 @@
<li><a class="editButton" value="@Model.SeriesId" rel="@Model.Title" title="Edit series">Edit</a></li> <li><a class="editButton" value="@Model.SeriesId" rel="@Model.Title" title="Edit series">Edit</a></li>
<li>@Ajax.ActionLink("Force Refresh", "ForceRefresh", "Command", new { seriesId = Model.SeriesId }, null, new { Title = "Refresh episode and series information and scan for new episodes" })</li> <li>@Ajax.ActionLink("Force Refresh", "ForceRefresh", "Command", new { seriesId = Model.SeriesId }, null, new { Title = "Refresh episode and series information and scan for new episodes" })</li>
<li>@Ajax.ActionLink("Search for missing episodes", "BacklogSeries", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Search for episodes missing from this series" })</li> <li>@Ajax.ActionLink("Search for missing episodes", "BacklogSeries", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Search for episodes missing from this series" })</li>
<li>@Ajax.ActionLink("Rename Episode Files", "RenameEpisodes", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Rename all episode files to match your preferred naming" })</li> <li>@Ajax.ActionLink("Rename Episode Files", "RenameSeries", "Episode", new { seriesId = Model.SeriesId }, null, new { Title = "Rename all episode files to match your preferred naming" })</li>
</ul> </ul>
} }

@ -58,6 +58,7 @@
{ {
<ul class="sub-menu"> <ul class="sub-menu">
<li>@Ajax.ActionLink("Force Refresh", "ForceRefreshAll", "Command", null, null, new { Title = "Refresh episode and series information and scan for new episodes for all series" })</li> <li>@Ajax.ActionLink("Force Refresh", "ForceRefreshAll", "Command", null, null, new { Title = "Refresh episode and series information and scan for new episodes for all series" })</li>
<li>@Ajax.ActionLink("Rename All Series", "RenameAllSeries", "Episode", null, new AjaxOptions { Confirm = "Are you sure you want to rename all series?" }, new { Title = "Rename all series monitored by NzbDrone" })</li>
</ul> </ul>
} }

Loading…
Cancel
Save