mirror of https://github.com/Radarr/Radarr
Fixed: Double periods in filenames will be replaces with a single period
This commit is contained in:
parent
859e36aa6b
commit
6d8b38366f
|
@ -405,5 +405,35 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
Subject.BuildFilename(new List<Episode> { episode }, new Series { Title = "30 Rock" }, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { episode }, new Series { Title = "30 Rock" }, _episodeFile)
|
||||||
.Should().Be("30 Rock - S06E06 - Part 1");
|
.Should().Be("30 Rock - S06E06 - Part 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_replace_double_period_with_single_period()
|
||||||
|
{
|
||||||
|
_namingConfig.StandardEpisodeFormat = "{Series.Title}.S{season:00}E{episode:00}.{Episode.Title}";
|
||||||
|
|
||||||
|
var episode = Builder<Episode>.CreateNew()
|
||||||
|
.With(e => e.Title = "Part 1")
|
||||||
|
.With(e => e.SeasonNumber = 6)
|
||||||
|
.With(e => e.EpisodeNumber = 6)
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
Subject.BuildFilename(new List<Episode> { episode }, new Series { Title = "Chicago P.D." }, _episodeFile)
|
||||||
|
.Should().Be("Chicago.P.D.S06E06.Part.1");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_replace_triple_period_with_single_period()
|
||||||
|
{
|
||||||
|
_namingConfig.StandardEpisodeFormat = "{Series.Title}.S{season:00}E{episode:00}.{Episode.Title}";
|
||||||
|
|
||||||
|
var episode = Builder<Episode>.CreateNew()
|
||||||
|
.With(e => e.Title = "Part 1")
|
||||||
|
.With(e => e.SeasonNumber = 6)
|
||||||
|
.With(e => e.EpisodeNumber = 6)
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
Subject.BuildFilename(new List<Episode> { episode }, new Series { Title = "Chicago P.D.." }, _episodeFile)
|
||||||
|
.Should().Be("Chicago.P.D.S06E06.Part.1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -46,6 +46,8 @@ namespace NzbDrone.Core.Organizer
|
||||||
public static readonly Regex SeriesTitleRegex = new Regex(@"(?<token>\{(?:Series)(?<separator>\s|\.|-|_)Title\})",
|
public static readonly Regex SeriesTitleRegex = new Regex(@"(?<token>\{(?:Series)(?<separator>\s|\.|-|_)Title\})",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
private static readonly Regex FilenameCleanupRegex = new Regex(@"\.{2,}", RegexOptions.Compiled);
|
||||||
|
|
||||||
private static readonly char[] EpisodeTitleTrimCharaters = new[] { ' ', '.', '?' };
|
private static readonly char[] EpisodeTitleTrimCharaters = new[] { ' ', '.', '?' };
|
||||||
|
|
||||||
public FileNameBuilder(INamingConfigService namingConfigService,
|
public FileNameBuilder(INamingConfigService namingConfigService,
|
||||||
|
@ -90,6 +92,7 @@ namespace NzbDrone.Core.Organizer
|
||||||
|
|
||||||
var sortedEpisodes = episodes.OrderBy(e => e.EpisodeNumber).ToList();
|
var sortedEpisodes = episodes.OrderBy(e => e.EpisodeNumber).ToList();
|
||||||
var pattern = namingConfig.StandardEpisodeFormat;
|
var pattern = namingConfig.StandardEpisodeFormat;
|
||||||
|
|
||||||
var episodeTitles = new List<string>
|
var episodeTitles = new List<string>
|
||||||
{
|
{
|
||||||
sortedEpisodes.First().Title.TrimEnd(EpisodeTitleTrimCharaters)
|
sortedEpisodes.First().Title.TrimEnd(EpisodeTitleTrimCharaters)
|
||||||
|
@ -154,7 +157,10 @@ namespace NzbDrone.Core.Organizer
|
||||||
tokenValues.Add("{Episode Title}", GetEpisodeTitle(episodeTitles));
|
tokenValues.Add("{Episode Title}", GetEpisodeTitle(episodeTitles));
|
||||||
tokenValues.Add("{Quality Title}", GetQualityTitle(episodeFile.Quality));
|
tokenValues.Add("{Quality Title}", GetQualityTitle(episodeFile.Quality));
|
||||||
|
|
||||||
return CleanFilename(ReplaceTokens(pattern, tokenValues).Trim());
|
var filename = ReplaceTokens(pattern, tokenValues).Trim();
|
||||||
|
filename = FilenameCleanupRegex.Replace(filename, match => match.Captures[0].Value[0].ToString() );
|
||||||
|
|
||||||
|
return CleanFilename(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string BuildFilePath(Series series, int seasonNumber, string fileName, string extension)
|
public string BuildFilePath(Series series, int seasonNumber, string fileName, string extension)
|
||||||
|
|
Loading…
Reference in New Issue