mirror of https://github.com/Sonarr/Sonarr
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)
|
||||
.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\})",
|
||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
private static readonly Regex FilenameCleanupRegex = new Regex(@"\.{2,}", RegexOptions.Compiled);
|
||||
|
||||
private static readonly char[] EpisodeTitleTrimCharaters = new[] { ' ', '.', '?' };
|
||||
|
||||
public FileNameBuilder(INamingConfigService namingConfigService,
|
||||
|
@ -90,6 +92,7 @@ namespace NzbDrone.Core.Organizer
|
|||
|
||||
var sortedEpisodes = episodes.OrderBy(e => e.EpisodeNumber).ToList();
|
||||
var pattern = namingConfig.StandardEpisodeFormat;
|
||||
|
||||
var episodeTitles = new List<string>
|
||||
{
|
||||
sortedEpisodes.First().Title.TrimEnd(EpisodeTitleTrimCharaters)
|
||||
|
@ -154,7 +157,10 @@ namespace NzbDrone.Core.Organizer
|
|||
tokenValues.Add("{Episode Title}", GetEpisodeTitle(episodeTitles));
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue