mirror of https://github.com/Sonarr/Sonarr
Fixed: Double periods before extensions when episode title ends in a period
This commit is contained in:
parent
1cc4c11a7e
commit
1b21f4a2d7
|
@ -371,5 +371,22 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
Subject.BuildFilename(new List<Episode> { _episode1 }, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { _episode1 }, _series, _episodeFile)
|
||||||
.Should().Be("30 Rock - 30.Rock.S01E01.xvid-LOL");
|
.Should().Be("30 Rock - 30.Rock.S01E01.xvid-LOL");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_trim_periods_from_end_of_episode_title()
|
||||||
|
{
|
||||||
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
|
_namingConfig.MultiEpisodeStyle = 3;
|
||||||
|
|
||||||
|
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 = "30 Rock" }, _episodeFile)
|
||||||
|
.Should().Be("30 Rock - S06E06 - Part 1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -44,6 +44,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 char[] EpisodeTitleTrimCharaters = new[] { ' ', '.' };
|
||||||
|
|
||||||
public FileNameBuilder(INamingConfigService namingConfigService,
|
public FileNameBuilder(INamingConfigService namingConfigService,
|
||||||
IQualityDefinitionService qualityDefinitionService,
|
IQualityDefinitionService qualityDefinitionService,
|
||||||
ICacheManger cacheManger,
|
ICacheManger cacheManger,
|
||||||
|
@ -88,7 +90,7 @@ namespace NzbDrone.Core.Organizer
|
||||||
var pattern = namingConfig.StandardEpisodeFormat;
|
var pattern = namingConfig.StandardEpisodeFormat;
|
||||||
var episodeTitles = new List<string>
|
var episodeTitles = new List<string>
|
||||||
{
|
{
|
||||||
sortedEpisodes.First().Title
|
sortedEpisodes.First().Title.TrimEnd(EpisodeTitleTrimCharaters)
|
||||||
};
|
};
|
||||||
|
|
||||||
var tokenValues = new Dictionary<string, string>(FilenameBuilderTokenEqualityComparer.Instance);
|
var tokenValues = new Dictionary<string, string>(FilenameBuilderTokenEqualityComparer.Instance);
|
||||||
|
@ -140,7 +142,7 @@ namespace NzbDrone.Core.Organizer
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
episodeTitles.Add(episode.Title);
|
episodeTitles.Add(episode.Title.TrimEnd(EpisodeTitleTrimCharaters));
|
||||||
}
|
}
|
||||||
|
|
||||||
seasonEpisodePattern = ReplaceNumberTokens(seasonEpisodePattern, sortedEpisodes);
|
seasonEpisodePattern = ReplaceNumberTokens(seasonEpisodePattern, sortedEpisodes);
|
||||||
|
|
Loading…
Reference in New Issue