mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-30 11:48:26 -07:00
Cleanedup get GetNewFilename
This commit is contained in:
parent
8b484601f6
commit
d3f823734e
4 changed files with 484 additions and 107 deletions
|
@ -192,7 +192,7 @@ namespace NzbDrone.Core.Providers
|
|||
public virtual void Update(EpisodeFile episodeFile)
|
||||
{
|
||||
_database.Update(episodeFile);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual EpisodeFile GetEpisodeFile(int episodeFileId)
|
||||
{
|
||||
|
@ -315,134 +315,82 @@ namespace NzbDrone.Core.Providers
|
|||
{
|
||||
var separatorStyle = EpisodeSortingHelper.GetSeparatorStyle(_configProvider.SeparatorStyle);
|
||||
var numberStyle = EpisodeSortingHelper.GetNumberStyle(_configProvider.NumberStyle);
|
||||
var useSeriesName = _configProvider.SeriesName;
|
||||
var useEpisodeName = _configProvider.EpisodeName;
|
||||
var replaceSpaces = _configProvider.ReplaceSpaces;
|
||||
var appendQuality = _configProvider.AppendQuality;
|
||||
|
||||
var title = String.Empty;
|
||||
|
||||
if (episodes.Count == 1)
|
||||
{
|
||||
if (useSeriesName)
|
||||
{
|
||||
title += seriesName;
|
||||
title += separatorStyle.Pattern;
|
||||
}
|
||||
|
||||
title += numberStyle.Pattern.Replace("%s", String.Format("{0}", episodes[0].SeasonNumber))
|
||||
.Replace("%0s", String.Format("{0:00}", episodes[0].SeasonNumber))
|
||||
.Replace("%0e", String.Format("{0:00}", episodes[0].EpisodeNumber));
|
||||
|
||||
if (useEpisodeName)
|
||||
{
|
||||
title += separatorStyle.Pattern;
|
||||
title += episodes[0].Title;
|
||||
}
|
||||
|
||||
if (appendQuality)
|
||||
title += String.Format(" [{0}]", quality);
|
||||
|
||||
if (replaceSpaces)
|
||||
title = title.Replace(' ', '.');
|
||||
|
||||
Logger.Debug("New File Name is: {0}", title);
|
||||
return title;
|
||||
}
|
||||
|
||||
var multiEpisodeStyle = EpisodeSortingHelper.GetMultiEpisodeStyle(_configProvider.MultiEpisodeStyle);
|
||||
|
||||
if (useSeriesName)
|
||||
{
|
||||
title += seriesName;
|
||||
title += separatorStyle.Pattern;
|
||||
}
|
||||
|
||||
title += numberStyle.Pattern.Replace("%s", String.Format("{0}", episodes[0].SeasonNumber))
|
||||
.Replace("%0s", String.Format("{0:00}", episodes[0].SeasonNumber))
|
||||
.Replace("%0e", String.Format("{0:00}", episodes[0].EpisodeNumber));
|
||||
|
||||
var numbers = String.Empty;
|
||||
var episodeNames = episodes[0].Title;
|
||||
|
||||
for (int i = 1; i < episodes.Count; i++)
|
||||
var result = String.Empty;
|
||||
|
||||
if (_configProvider.SeriesName)
|
||||
{
|
||||
var episode = episodes[i];
|
||||
|
||||
if (multiEpisodeStyle.Name == "Duplicate")
|
||||
{
|
||||
numbers += separatorStyle.Pattern + numberStyle.Pattern.Replace("%s", String.Format("{0}", episode.SeasonNumber))
|
||||
.Replace("%0s", String.Format("{0:00}", episode.SeasonNumber))
|
||||
.Replace("%0e", String.Format("{0:00}", episode.EpisodeNumber));
|
||||
}
|
||||
else
|
||||
{
|
||||
numbers += multiEpisodeStyle.Pattern.Replace("%s", String.Format("{0}", episode.SeasonNumber))
|
||||
.Replace("%0s", String.Format("{0:00}", episode.SeasonNumber))
|
||||
.Replace("%0e", String.Format("{0:00}", episode.EpisodeNumber))
|
||||
.Replace("%x", numberStyle.EpisodeSeparator)
|
||||
.Replace("%p", separatorStyle.Pattern);
|
||||
}
|
||||
|
||||
episodeNames += String.Format(" + {0}", episode.Title);
|
||||
result += seriesName + separatorStyle.Pattern;
|
||||
}
|
||||
|
||||
title += numbers;
|
||||
result += numberStyle.Pattern.Replace("%0e", String.Format("{0:00}", episodes[0].EpisodeNumber));
|
||||
|
||||
if (useEpisodeName)
|
||||
if (episodes.Count > 1)
|
||||
{
|
||||
var multiEpisodeStyle = EpisodeSortingHelper.GetMultiEpisodeStyle(_configProvider.MultiEpisodeStyle);
|
||||
|
||||
foreach (var episode in episodes.OrderBy(e => e.EpisodeNumber).Skip(1))
|
||||
{
|
||||
if (multiEpisodeStyle.Name == "Duplicate")
|
||||
{
|
||||
result += separatorStyle.Pattern + numberStyle.Pattern;
|
||||
}
|
||||
else
|
||||
{
|
||||
result += multiEpisodeStyle.Pattern;
|
||||
}
|
||||
|
||||
result = result.Replace("%0e", String.Format("{0:00}", episode.EpisodeNumber));
|
||||
episodeNames += String.Format(" + {0}", episode.Title);
|
||||
}
|
||||
}
|
||||
|
||||
result = result
|
||||
.Replace("%s", String.Format("{0}", episodes.First().SeasonNumber))
|
||||
.Replace("%0s", String.Format("{0:00}", episodes.First().SeasonNumber))
|
||||
.Replace("%x", numberStyle.EpisodeSeparator)
|
||||
.Replace("%p", separatorStyle.Pattern);
|
||||
|
||||
if (_configProvider.EpisodeName)
|
||||
{
|
||||
episodeNames = episodeNames.TrimEnd(' ', '+');
|
||||
|
||||
title += separatorStyle.Pattern;
|
||||
title += episodeNames;
|
||||
result += separatorStyle.Pattern + episodeNames;
|
||||
}
|
||||
|
||||
if (appendQuality)
|
||||
title += String.Format(" [{0}]", quality);
|
||||
if (_configProvider.AppendQuality)
|
||||
result += String.Format(" [{0}]", quality);
|
||||
|
||||
if (replaceSpaces)
|
||||
title = title.Replace(' ', '.');
|
||||
if (_configProvider.ReplaceSpaces)
|
||||
result = result.Replace(' ', '.');
|
||||
|
||||
Logger.Debug("New File Name is: {0}", title);
|
||||
return title;
|
||||
Logger.Debug("New File Name is: {0}", result.Trim());
|
||||
return result.Trim();
|
||||
}
|
||||
|
||||
public virtual bool RenameEpisodeFile(int episodeFileId, ProgressNotification notification)
|
||||
public virtual bool RenameEpisodeFile(EpisodeFile episodeFile)
|
||||
{
|
||||
var episodeFile = GetEpisodeFile(episodeFileId);
|
||||
|
||||
if (episodeFile == null)
|
||||
return false;
|
||||
throw new ArgumentNullException("episodeFile");
|
||||
|
||||
try
|
||||
{
|
||||
notification.CurrentMessage = String.Format("Renaming '{0}'", episodeFile.Path);
|
||||
var series = _seriesProvider.GetSeries(episodeFile.SeriesId);
|
||||
var folder = new FileInfo(episodeFile.Path).DirectoryName;
|
||||
var ext = _diskProvider.GetExtension(episodeFile.Path);
|
||||
var episodes = _episodeProvider.GetEpisodesByFileId(episodeFile.EpisodeFileId);
|
||||
|
||||
var series = _seriesProvider.GetSeries(episodeFile.SeriesId);
|
||||
var folder = new FileInfo(episodeFile.Path).DirectoryName;
|
||||
var episodes = _episodeProvider.EpisodesByFileId(episodeFileId);
|
||||
var ext = _diskProvider.GetExtension(episodeFile.Path);
|
||||
var newFileName = GetNewFilename(episodes, series.Title, episodeFile.Quality);
|
||||
|
||||
var newFileName = GetNewFilename(episodes, series.Title, episodeFile.Quality);
|
||||
var newFile = folder + Path.DirectorySeparatorChar + newFileName + ext;
|
||||
|
||||
var newFile = folder + Path.DirectorySeparatorChar + newFileName + ext;
|
||||
//Do the rename
|
||||
_diskProvider.RenameFile(episodeFile.Path, newFile);
|
||||
|
||||
//Do the rename
|
||||
_diskProvider.RenameFile(episodeFile.Path, newFile);
|
||||
//Update the filename in the DB
|
||||
episodeFile.Path = newFile;
|
||||
Update(episodeFile);
|
||||
|
||||
//Update the filename in the DB
|
||||
episodeFile.Path = newFile;
|
||||
Update(episodeFile);
|
||||
|
||||
notification.CurrentMessage = String.Format("Finished Renaming '{0}'", newFile);
|
||||
}
|
||||
|
||||
catch (Exception e)
|
||||
{
|
||||
notification.CurrentMessage = String.Format("Failed to Rename '{0}'", episodeFile.Path);
|
||||
Logger.ErrorException("An error has occurred while renaming episode: " + episodeFile.Path, e);
|
||||
throw;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue