From 9ffe8ea4cdb2b2e2c943ee7a8a2a959bc926e6cd Mon Sep 17 00:00:00 2001 From: markus101 Date: Wed, 23 Feb 2011 17:23:58 -0800 Subject: [PATCH] Fixed the badly broken Renaming, it will now only attempt to rename episodes with files and works with multi-episode files. --- NzbDrone.Core/Model/EpisodeRenameModel.cs | 3 - NzbDrone.Core/Providers/RenameProvider.cs | 96 ++++++++++++----------- 2 files changed, 49 insertions(+), 50 deletions(-) diff --git a/NzbDrone.Core/Model/EpisodeRenameModel.cs b/NzbDrone.Core/Model/EpisodeRenameModel.cs index 591865e46..9583ce3e2 100644 --- a/NzbDrone.Core/Model/EpisodeRenameModel.cs +++ b/NzbDrone.Core/Model/EpisodeRenameModel.cs @@ -9,9 +9,6 @@ namespace NzbDrone.Core.Model public class EpisodeRenameModel { public string SeriesName { get; set; } - public int SeasonNumber { get; set; } - public int EpisodeNumber { get; set; } - public string EpisodeName { get; set; } public string Folder { get; set; } public EpisodeFile EpisodeFile { get; set; } } diff --git a/NzbDrone.Core/Providers/RenameProvider.cs b/NzbDrone.Core/Providers/RenameProvider.cs index 437d2e945..84678f6d2 100644 --- a/NzbDrone.Core/Providers/RenameProvider.cs +++ b/NzbDrone.Core/Providers/RenameProvider.cs @@ -42,21 +42,15 @@ namespace NzbDrone.Core.Providers var seasonFolder = _configProvider.GetValue("SeasonFolder", "Season %s", true); - foreach (var series in _seriesProvider.GetAllSeries()) + foreach (var episodeFile in _mediaFileProvider.GetEpisodeFiles()) { - foreach (var episode in series.Episodes) - { - var episodeRenameModel = new EpisodeRenameModel(); - episodeRenameModel.SeriesName = series.Title; - episodeRenameModel.SeasonNumber = episode.SeasonNumber; - episodeRenameModel.EpisodeNumber = episode.EpisodeNumber; - episodeRenameModel.EpisodeName = episode.Title; - episodeRenameModel.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; - episodeRenameModel.EpisodeFile = episode.EpisodeFile; - - _epsToRename.Add(episodeRenameModel); - StartRename(); - } + var series = _seriesProvider.GetSeries(episodeFile.SeriesId); + var erm = new EpisodeRenameModel(); + erm.SeriesName = series.Title; + erm.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; + erm.EpisodeFile = episodeFile; + _epsToRename.Add(erm); + StartRename(); } } @@ -67,17 +61,13 @@ namespace NzbDrone.Core.Providers var series = _seriesProvider.GetSeries(seriesId); var seasonFolder = _configProvider.GetValue("SeasonFolder", "Season %s", true); - foreach (var episode in series.Episodes) + foreach (var episodeFile in _mediaFileProvider.GetEpisodeFiles().Where(s => s.SeriesId == seriesId)) { - var episodeRenameModel = new EpisodeRenameModel(); - episodeRenameModel.SeriesName = series.Title; - episodeRenameModel.SeasonNumber = episode.SeasonNumber; - episodeRenameModel.EpisodeNumber = episode.EpisodeNumber; - episodeRenameModel.EpisodeName = episode.Title; - episodeRenameModel.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; - episodeRenameModel.EpisodeFile = episode.EpisodeFile; - - _epsToRename.Add(episodeRenameModel); + var erm = new EpisodeRenameModel(); + erm.SeriesName = series.Title; + erm.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; + erm.EpisodeFile = episodeFile; + _epsToRename.Add(erm); StartRename(); } } @@ -89,36 +79,31 @@ namespace NzbDrone.Core.Providers var series = _seriesProvider.GetSeries(season.SeriesId); var seasonFolder = _configProvider.GetValue("SeasonFolder", "Season %s", true); - foreach (var episode in season.Episodes) + foreach (var episodeFile in _mediaFileProvider.GetEpisodeFiles().Where(s => s.Episodes[0].SeasonId == seasonId)) { - var episodeRenameModel = new EpisodeRenameModel(); - episodeRenameModel.SeriesName = series.Title; - episodeRenameModel.SeasonNumber = episode.SeasonNumber; - episodeRenameModel.EpisodeNumber = episode.EpisodeNumber; - episodeRenameModel.EpisodeName = episode.Title; - episodeRenameModel.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; - episodeRenameModel.EpisodeFile = episode.EpisodeFile; - - _epsToRename.Add(episodeRenameModel); + var erm = new EpisodeRenameModel(); + erm.SeriesName = series.Title; + erm.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; + erm.EpisodeFile = episodeFile; + _epsToRename.Add(erm); StartRename(); } } public void RenameEpisode(int episodeId) { + //This will properly rename multi-episode files if asked to rename either of the episode var episode = _episodeProvider.GetEpisode(episodeId); var series = _seriesProvider.GetSeries(episode.SeriesId); var seasonFolder = _configProvider.GetValue("SeasonFolder", "Season %s", true); - var episodeRenameModel = new EpisodeRenameModel(); - episodeRenameModel.SeriesName = series.Title; - episodeRenameModel.SeasonNumber = episode.SeasonNumber; - episodeRenameModel.EpisodeNumber = episode.EpisodeNumber; - episodeRenameModel.EpisodeName = episode.Title; - episodeRenameModel.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; - episodeRenameModel.EpisodeFile = episode.EpisodeFile; + var episodeFile = _mediaFileProvider.GetEpisodeFiles().Where(s => s.Episodes.Contains(episode)).FirstOrDefault(); - _epsToRename.Add(episodeRenameModel); + var erm = new EpisodeRenameModel(); + erm.SeriesName = series.Title; + erm.Folder = series.Path + Path.DirectorySeparatorChar + seasonFolder; + erm.EpisodeFile = episodeFile; + _epsToRename.Add(erm); StartRename(); } @@ -178,13 +163,30 @@ namespace NzbDrone.Core.Providers } } - private string GetNewName(EpisodeRenameModel episodeRenameModel) + private string GetNewName(EpisodeRenameModel erm) { //Todo: Get the users preferred naming convention instead of hard-coding it - return String.Format("{0} - S{1:00}E{2:00} - {3}", episodeRenameModel.SeriesName, - episodeRenameModel.SeasonNumber, episodeRenameModel.EpisodeNumber, - episodeRenameModel.EpisodeName); - //var fileString = _configProvider.GetValue("") + + if (erm.EpisodeFile.Episodes.Count == 1) + { + return String.Format("{0} - S{1:00}E{2:00} - {3}", erm.SeriesName, + erm.EpisodeFile.Episodes[0].SeasonNumber, erm.EpisodeFile.Episodes[0].EpisodeNumber, + erm.EpisodeFile.Episodes[0].Title); + } + + var epNumberString = String.Empty; + var epNameString = String.Empty; + + foreach (var episode in erm.EpisodeFile.Episodes) + { + epNumberString = epNumberString + String.Format("E{0:00}", episode.EpisodeNumber); + epNameString = epNameString + String.Format("+ {0}", episode.Title).Trim(' ', '+'); + } + + return String.Format("{0} - S{1:00}E{2} - {3}", erm.SeriesName, erm.EpisodeFile.Episodes[0].SeasonNumber, + epNumberString, epNameString); } + + } }