Using season:00 instead of 0season
This commit is contained in:
parent
41cb5c02e8
commit
48ece3d367
|
@ -26,9 +26,9 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCase("30 Rock - S01E05 - Episode Title", 1, true, "Season {0season}", @"C:\Test\30 Rock\Season 01\30 Rock - S01E05 - Episode Title.mkv")]
|
[TestCase("30 Rock - S01E05 - Episode Title", 1, true, "Season {season:00}", @"C:\Test\30 Rock\Season 01\30 Rock - S01E05 - Episode Title.mkv")]
|
||||||
[TestCase("30 Rock - S01E05 - Episode Title", 1, true, "Season {season}", @"C:\Test\30 Rock\Season 1\30 Rock - S01E05 - Episode Title.mkv")]
|
[TestCase("30 Rock - S01E05 - Episode Title", 1, true, "Season {season}", @"C:\Test\30 Rock\Season 1\30 Rock - S01E05 - Episode Title.mkv")]
|
||||||
[TestCase("30 Rock - S01E05 - Episode Title", 1, false, "Season {0season}", @"C:\Test\30 Rock\30 Rock - S01E05 - Episode Title.mkv")]
|
[TestCase("30 Rock - S01E05 - Episode Title", 1, false, "Season {season:00}", @"C:\Test\30 Rock\30 Rock - S01E05 - Episode Title.mkv")]
|
||||||
[TestCase("30 Rock - S01E05 - Episode Title", 1, false, "Season {season}", @"C:\Test\30 Rock\30 Rock - S01E05 - Episode Title.mkv")]
|
[TestCase("30 Rock - S01E05 - Episode Title", 1, false, "Season {season}", @"C:\Test\30 Rock\30 Rock - S01E05 - Episode Title.mkv")]
|
||||||
[TestCase("30 Rock - S01E05 - Episode Title", 1, true, "ReallyUglySeasonFolder {season}", @"C:\Test\30 Rock\ReallyUglySeasonFolder 1\30 Rock - S01E05 - Episode Title.mkv")]
|
[TestCase("30 Rock - S01E05 - Episode Title", 1, true, "ReallyUglySeasonFolder {season}", @"C:\Test\30 Rock\ReallyUglySeasonFolder 1\30 Rock - S01E05 - Episode Title.mkv")]
|
||||||
[TestCase("30 Rock - S00E05 - Episode Title", 0, true, "Season {season}", @"C:\Test\30 Rock\Specials\30 Rock - S00E05 - Episode Title.mkv")]
|
[TestCase("30 Rock - S00E05 - Episode Title", 0, true, "Season {season}", @"C:\Test\30 Rock\Specials\30 Rock - S00E05 - Episode Title.mkv")]
|
||||||
|
|
|
@ -120,8 +120,6 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
.Should().Be("south park");
|
.Should().Be("south park");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_replace_episode_title()
|
public void should_replace_episode_title()
|
||||||
{
|
{
|
||||||
|
@ -151,10 +149,10 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_replace_0season_number_with_two_digits()
|
public void should_replace_season00_number_with_two_digits()
|
||||||
{
|
{
|
||||||
_episode1.SeasonNumber = 1;
|
_episode1.SeasonNumber = 1;
|
||||||
_namingConfig.StandardEpisodeFormat = "{0season}x{episode}";
|
_namingConfig.StandardEpisodeFormat = "{season:00}x{episode}";
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> { _episode1 }, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { _episode1 }, _series, _episodeFile)
|
||||||
.Should().Be("01x6");
|
.Should().Be("01x6");
|
||||||
|
@ -171,10 +169,10 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_replace_0episode_number_with_two_digits()
|
public void should_replace_episode00_number_with_two_digits()
|
||||||
{
|
{
|
||||||
_episode1.SeasonNumber = 1;
|
_episode1.SeasonNumber = 1;
|
||||||
_namingConfig.StandardEpisodeFormat = "{season}x{0episode}";
|
_namingConfig.StandardEpisodeFormat = "{season}x{episode:00}";
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> { _episode1 }, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { _episode1 }, _series, _episodeFile)
|
||||||
.Should().Be("1x06");
|
.Should().Be("1x06");
|
||||||
|
@ -202,7 +200,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_replace_all_contents_in_pattern()
|
public void should_replace_all_contents_in_pattern()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title} [{Quality Title}]";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title} [{Quality Title}]";
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> {_episode1}, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> {_episode1}, _series, _episodeFile)
|
||||||
.Should().Be("South Park - S15E06 - City Sushi [HDTV-720p]");
|
.Should().Be("South Park - S15E06 - City Sushi [HDTV-720p]");
|
||||||
|
@ -232,7 +230,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_only_have_one_episodeTitle_when_episode_titles_are_the_same()
|
public void should_only_have_one_episodeTitle_when_episode_titles_are_the_same()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title}";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
_namingConfig.MultiEpisodeStyle = 3;
|
_namingConfig.MultiEpisodeStyle = 3;
|
||||||
|
|
||||||
var episode = Builder<Episode>.CreateNew()
|
var episode = Builder<Episode>.CreateNew()
|
||||||
|
@ -255,7 +253,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_have_two_episodeTitles_when_episode_titles_are_not_the_same()
|
public void should_have_two_episodeTitles_when_episode_titles_are_not_the_same()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title}";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
_namingConfig.MultiEpisodeStyle = 3;
|
_namingConfig.MultiEpisodeStyle = 3;
|
||||||
|
|
||||||
_episode1.Title = "Hello";
|
_episode1.Title = "Hello";
|
||||||
|
@ -298,7 +296,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_format_extend_multi_episode_properly()
|
public void should_format_extend_multi_episode_properly()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title}";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
_namingConfig.MultiEpisodeStyle = 0;
|
_namingConfig.MultiEpisodeStyle = 0;
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> {_episode1, _episode2}, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> {_episode1, _episode2}, _series, _episodeFile)
|
||||||
|
@ -308,7 +306,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_format_duplicate_multi_episode_properly()
|
public void should_format_duplicate_multi_episode_properly()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title}";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
_namingConfig.MultiEpisodeStyle = 1;
|
_namingConfig.MultiEpisodeStyle = 1;
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> { _episode1, _episode2 }, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { _episode1, _episode2 }, _series, _episodeFile)
|
||||||
|
@ -318,7 +316,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_format_repeat_multi_episode_properly()
|
public void should_format_repeat_multi_episode_properly()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title}";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
_namingConfig.MultiEpisodeStyle = 2;
|
_namingConfig.MultiEpisodeStyle = 2;
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> { _episode1, _episode2 }, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { _episode1, _episode2 }, _series, _episodeFile)
|
||||||
|
@ -328,7 +326,7 @@ namespace NzbDrone.Core.Test.OrganizerTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_format_scene_multi_episode_properly()
|
public void should_format_scene_multi_episode_properly()
|
||||||
{
|
{
|
||||||
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{0season}E{0episode} - {Episode Title}";
|
_namingConfig.StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title}";
|
||||||
_namingConfig.MultiEpisodeStyle = 3;
|
_namingConfig.MultiEpisodeStyle = 3;
|
||||||
|
|
||||||
Subject.BuildFilename(new List<Episode> { _episode1, _episode2 }, _series, _episodeFile)
|
Subject.BuildFilename(new List<Episode> { _episode1, _episode2 }, _series, _episodeFile)
|
||||||
|
|
|
@ -103,7 +103,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
||||||
{
|
{
|
||||||
Id = 0,
|
Id = 0,
|
||||||
Name = "1x05",
|
Name = "1x05",
|
||||||
Pattern = "{season}x{0episode}",
|
Pattern = "{season}x{episode:00}",
|
||||||
EpisodeSeparator = "x"
|
EpisodeSeparator = "x"
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -111,21 +111,21 @@ namespace NzbDrone.Core.Datastore.Migration
|
||||||
{
|
{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
Name = "01x05",
|
Name = "01x05",
|
||||||
Pattern = "{0season}x{0episode}",
|
Pattern = "{season:00}x{episode:00}",
|
||||||
EpisodeSeparator = "x"
|
EpisodeSeparator = "x"
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Name = "S01E05",
|
Name = "S01E05",
|
||||||
Pattern = "S{0season}E{0episode}",
|
Pattern = "S{season:00}E{episode:00}",
|
||||||
EpisodeSeparator = "E"
|
EpisodeSeparator = "E"
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Name = "s01e05",
|
Name = "s01e05",
|
||||||
Pattern = "s{0season}e{0episode}",
|
Pattern = "s{season:00}e{episode:00}",
|
||||||
EpisodeSeparator = "e"
|
EpisodeSeparator = "e"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,9 +28,9 @@ namespace NzbDrone.Core.Datastore.Migration
|
||||||
value = value.Replace("%sn", "{Series Title}")
|
value = value.Replace("%sn", "{Series Title}")
|
||||||
.Replace("%s.n", "{Series.Title}")
|
.Replace("%s.n", "{Series.Title}")
|
||||||
.Replace("%s", "{season}")
|
.Replace("%s", "{season}")
|
||||||
.Replace("%0s", "{0season}")
|
.Replace("%0s", "{season:00}")
|
||||||
.Replace("%e", "{episode}")
|
.Replace("%e", "{episode}")
|
||||||
.Replace("%0e", "{0episode}");
|
.Replace("%0e", "{episode:00}");
|
||||||
|
|
||||||
|
|
||||||
using (IDbCommand updateCmd = conn.CreateCommand())
|
using (IDbCommand updateCmd = conn.CreateCommand())
|
||||||
|
|
|
@ -28,13 +28,13 @@ namespace NzbDrone.Core.Organizer
|
||||||
private static readonly Regex TitleRegex = new Regex(@"(?<token>\{(?:\w+)(?<separator>\s|\W|_)\w+\})",
|
private static readonly Regex TitleRegex = new Regex(@"(?<token>\{(?:\w+)(?<separator>\s|\W|_)\w+\})",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private static readonly Regex EpisodeRegex = new Regex(@"(?<episode>\{0*(?:episode)})",
|
private static readonly Regex EpisodeRegex = new Regex(@"(?<episode>\{episode(?:\:0+)?})",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private static readonly Regex SeasonRegex = new Regex(@"(?<season>\{0*(?:season)})",
|
private static readonly Regex SeasonRegex = new Regex(@"(?<season>\{season(?:\:0+)?})",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private static readonly Regex SeasonEpisodePatternRegex = new Regex(@"(?<separator>(?<=}).+?)?(?<seasonEpisode>s?{0?season}(?<episodeSeparator>e|x)?(?<episode>{0?episode}))(?<separator>.+?(?={))?",
|
private static readonly Regex SeasonEpisodePatternRegex = new Regex(@"(?<separator>(?<=}).+?)?(?<seasonEpisode>s?{season(?:\:0+)?}(?<episodeSeparator>e|x)?(?<episode>{episode(?:\:0+)?}))(?<separator>.+?(?={))?",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
public FileNameBuilder(INamingConfigService namingConfigService, IConfigService configService, Logger logger)
|
public FileNameBuilder(INamingConfigService namingConfigService, IConfigService configService, Logger logger)
|
||||||
|
@ -240,10 +240,11 @@ namespace NzbDrone.Core.Organizer
|
||||||
|
|
||||||
private string ReplaceNumberToken(string token, int value)
|
private string ReplaceNumberToken(string token, int value)
|
||||||
{
|
{
|
||||||
var zeroCount = token.Count(z => z == '0');
|
var split = token.Trim('{', '}').Split(':');
|
||||||
return value.ToString().PadLeft(zeroCount + 1, '0');
|
if (split.Length == 1) return value.ToString("0");
|
||||||
}
|
|
||||||
|
|
||||||
|
return value.ToString(split[1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum MultiEpisodeStyle
|
public enum MultiEpisodeStyle
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace NzbDrone.Integration.Test
|
||||||
{
|
{
|
||||||
var config = NamingConfig.GetSingle();
|
var config = NamingConfig.GetSingle();
|
||||||
config.RenameEpisodes = false;
|
config.RenameEpisodes = false;
|
||||||
config.StandardEpisodeFormat = "{Series Title} - {season}x{0episode} - {Episode Title}";
|
config.StandardEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}";
|
||||||
config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}";
|
config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}";
|
||||||
|
|
||||||
var result = NamingConfig.Put(config);
|
var result = NamingConfig.Put(config);
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
<a href="#" tabindex="-1" data-token="episode">Episode</a>
|
<a href="#" tabindex="-1" data-token="episode">Episode</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a href="#" data-token="episode">1</a></li>
|
<li><a href="#" data-token="episode">1</a></li>
|
||||||
<li><a href="#" data-token="0episode">01</a></li>
|
<li><a href="#" data-token="episode:00">01</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
<a href="#" tabindex="-1" data-token="season">Season</a>
|
<a href="#" tabindex="-1" data-token="season">Season</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a href="#" data-token="season">1</a></li>
|
<li><a href="#" data-token="season">1</a></li>
|
||||||
<li><a href="#" data-token="0season">01</a></li>
|
<li><a href="#" data-token="season:00">01</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -84,16 +84,16 @@ define(
|
||||||
|
|
||||||
switch (this.model.get('numberStyle')) {
|
switch (this.model.get('numberStyle')) {
|
||||||
case '0':
|
case '0':
|
||||||
this.standardEpisodeFormat += '{season}x{0episode}';
|
this.standardEpisodeFormat += '{season}x{episode:00}';
|
||||||
break;
|
break;
|
||||||
case '1':
|
case '1':
|
||||||
this.standardEpisodeFormat += '{0season}x{0episode}';
|
this.standardEpisodeFormat += '{season:00}x{episode:00}';
|
||||||
break;
|
break;
|
||||||
case '2':
|
case '2':
|
||||||
this.standardEpisodeFormat += 'S{0season}E{0episode}';
|
this.standardEpisodeFormat += 'S{season:00}E{episode:00}';
|
||||||
break;
|
break;
|
||||||
case '3':
|
case '3':
|
||||||
this.standardEpisodeFormat += 's{0season}e{0episode}';
|
this.standardEpisodeFormat += 's{season:00}e{episode:00}';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
this.standardEpisodeFormat += 'Unknown Number Pattern';
|
this.standardEpisodeFormat += 'Unknown Number Pattern';
|
||||||
|
|
Loading…
Reference in New Issue