mirror of https://github.com/Sonarr/Sonarr
New: Original Filename renaming token to use original filename as-is
This commit is contained in:
parent
29ee0ef2be
commit
6b56e912eb
|
@ -838,5 +838,31 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
Subject.BuildFileName(new List<Episode> { _episode1 }, _series, _episodeFile)
|
Subject.BuildFileName(new List<Episode> { _episode1 }, _series, _episodeFile)
|
||||||
.Should().Be("[DRONE]South.Park.100");
|
.Should().Be("[DRONE]South.Park.100");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_be_able_to_use_original_filename()
|
||||||
|
{
|
||||||
|
_series.Title = "30 Rock";
|
||||||
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - {Original Filename}";
|
||||||
|
|
||||||
|
_episodeFile.SceneName = "30.Rock.S01E01.xvid-LOL";
|
||||||
|
_episodeFile.RelativePath = "30 Rock - S01E01 - Test";
|
||||||
|
|
||||||
|
Subject.BuildFileName(new List<Episode> { _episode1 }, _series, _episodeFile)
|
||||||
|
.Should().Be("30 Rock - 30 Rock - S01E01 - Test");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_be_able_to_use_original_filename_only()
|
||||||
|
{
|
||||||
|
_series.Title = "30 Rock";
|
||||||
|
_namingConfig.StandardEpisodeFormat = "{Original Filename}";
|
||||||
|
|
||||||
|
_episodeFile.SceneName = "30.Rock.S01E01.xvid-LOL";
|
||||||
|
_episodeFile.RelativePath = "30 Rock - S01E01 - Test";
|
||||||
|
|
||||||
|
Subject.BuildFileName(new List<Episode> { _episode1 }, _series, _episodeFile)
|
||||||
|
.Should().Be("30 Rock - S01E01 - Test");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -54,9 +54,6 @@ namespace NzbDrone.Core.Organizer
|
||||||
public static readonly Regex SeriesTitleRegex = new Regex(@"(?<token>\{(?:Series)(?<separator>[- ._])(Clean)?Title\})",
|
public static readonly Regex SeriesTitleRegex = new Regex(@"(?<token>\{(?:Series)(?<separator>[- ._])(Clean)?Title\})",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private static readonly Regex OriginalTitleRegex = new Regex(@"(\^{original[- ._]title\}$)",
|
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
|
||||||
|
|
||||||
private static readonly Regex FileNameCleanupRegex = new Regex(@"([- ._])(\1)+", RegexOptions.Compiled);
|
private static readonly Regex FileNameCleanupRegex = new Regex(@"([- ._])(\1)+", RegexOptions.Compiled);
|
||||||
private static readonly Regex TrimSeparatorsRegex = new Regex(@"[- ._]$", RegexOptions.Compiled);
|
private static readonly Regex TrimSeparatorsRegex = new Regex(@"[- ._]$", RegexOptions.Compiled);
|
||||||
|
|
||||||
|
@ -420,6 +417,7 @@ namespace NzbDrone.Core.Organizer
|
||||||
private void AddEpisodeFileTokens(Dictionary<String, Func<TokenMatch, String>> tokenHandlers, Series series, EpisodeFile episodeFile)
|
private void AddEpisodeFileTokens(Dictionary<String, Func<TokenMatch, String>> tokenHandlers, Series series, EpisodeFile episodeFile)
|
||||||
{
|
{
|
||||||
tokenHandlers["{Original Title}"] = m => GetOriginalTitle(episodeFile);
|
tokenHandlers["{Original Title}"] = m => GetOriginalTitle(episodeFile);
|
||||||
|
tokenHandlers["{Original Filename}"] = m => GetOriginalFileName(episodeFile);
|
||||||
tokenHandlers["{Release Group}"] = m => episodeFile.ReleaseGroup ?? "DRONE";
|
tokenHandlers["{Release Group}"] = m => episodeFile.ReleaseGroup ?? "DRONE";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,7 +647,7 @@ namespace NzbDrone.Core.Organizer
|
||||||
}).ToArray());
|
}).ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String GetEpisodeTitle(List<Episode> episodes)
|
private string GetEpisodeTitle(List<Episode> episodes)
|
||||||
{
|
{
|
||||||
if (episodes.Count == 1)
|
if (episodes.Count == 1)
|
||||||
{
|
{
|
||||||
|
@ -664,7 +662,7 @@ namespace NzbDrone.Core.Organizer
|
||||||
return String.Join(" + ", titles);
|
return String.Join(" + ", titles);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String GetQualityProper(Series series, QualityModel quality)
|
private string GetQualityProper(Series series, QualityModel quality)
|
||||||
{
|
{
|
||||||
if (quality.Revision.Version > 1)
|
if (quality.Revision.Version > 1)
|
||||||
{
|
{
|
||||||
|
@ -679,20 +677,25 @@ namespace NzbDrone.Core.Organizer
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String GetOriginalTitle(EpisodeFile episodeFile)
|
private string GetOriginalTitle(EpisodeFile episodeFile)
|
||||||
{
|
{
|
||||||
if (episodeFile.SceneName.IsNullOrWhiteSpace())
|
if (episodeFile.SceneName.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
if (episodeFile.RelativePath.IsNullOrWhiteSpace())
|
return GetOriginalFileName(episodeFile);
|
||||||
{
|
|
||||||
return Path.GetFileNameWithoutExtension(episodeFile.Path);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Path.GetFileNameWithoutExtension(episodeFile.RelativePath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return episodeFile.SceneName;
|
return episodeFile.SceneName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetOriginalFileName(EpisodeFile episodeFile)
|
||||||
|
{
|
||||||
|
if (episodeFile.RelativePath.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
return Path.GetFileNameWithoutExtension(episodeFile.Path);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Path.GetFileNameWithoutExtension(episodeFile.RelativePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal sealed class TokenMatch
|
internal sealed class TokenMatch
|
||||||
|
|
Loading…
Reference in New Issue