diff --git a/src/NzbDrone.Core.Test/OrganizerTests/BuildFilePathFixture.cs b/src/NzbDrone.Core.Test/OrganizerTests/BuildFilePathFixture.cs index 40c7e43c2..628bca46f 100644 --- a/src/NzbDrone.Core.Test/OrganizerTests/BuildFilePathFixture.cs +++ b/src/NzbDrone.Core.Test/OrganizerTests/BuildFilePathFixture.cs @@ -31,6 +31,7 @@ namespace NzbDrone.Core.Test.OrganizerTests [TestCase("30 Rock - S01E05 - Episode Title", 1, false, "Season %0s", @"C:\Test\30 Rock\30 Rock - S01E05 - Episode Title.mkv")] [TestCase("30 Rock - S01E05 - Episode Title", 1, false, "Season %s", @"C:\Test\30 Rock\30 Rock - S01E05 - Episode Title.mkv")] [TestCase("30 Rock - S01E05 - Episode Title", 1, true, "ReallyUglySeasonFolder %s", @"C:\Test\30 Rock\ReallyUglySeasonFolder 1\30 Rock - S01E05 - Episode Title.mkv")] + [TestCase("30 Rock - S00E05 - Episode Title", 0, true, "Season %s", @"C:\Test\30 Rock\Specials\30 Rock - S00E05 - Episode Title.mkv")] public void CalculateFilePath_SeasonFolder_SingleNumber(string filename, int seasonNumber, bool useSeasonFolder, string seasonFolderFormat, string expectedPath) { var fakeSeries = Builder.CreateNew() @@ -41,7 +42,7 @@ namespace NzbDrone.Core.Test.OrganizerTests Mocker.GetMock().Setup(e => e.SeasonFolderFormat).Returns(seasonFolderFormat); - Subject.BuildFilePath(fakeSeries, 1, filename, ".mkv").Should().Be(expectedPath.AsOsAgnostic()); + Subject.BuildFilePath(fakeSeries, seasonNumber, filename, ".mkv").Should().Be(expectedPath.AsOsAgnostic()); } } } \ No newline at end of file diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index cab26aa10..837fbae3b 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -170,12 +170,22 @@ namespace NzbDrone.Core.Organizer string path = series.Path; if (series.SeasonFolder) { - var seasonFolder = _configService.SeasonFolderFormat + string seasonFolder; + + if (seasonNumber == 0) + { + seasonFolder = "Specials"; + } + + else + { + seasonFolder = _configService.SeasonFolderFormat .Replace("%sn", series.Title) .Replace("%s.n", series.Title.Replace(' ', '.')) .Replace("%s_n", series.Title.Replace(' ', '_')) .Replace("%0s", seasonNumber.ToString("00")) .Replace("%s", seasonNumber.ToString()); + } path = Path.Combine(path, seasonFolder); }