Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/Readarr/commit/e269494ff80bb297b1a26e7da8214161a322fa5f You should set ROOT_URL correctly, otherwise the web may not work correctly.

ParseSeriesName will now return normalized version of the title if it doesn't match any predefined

PostDownload provider will skip subfolders that are known series folders.
pull/6/head
kay.one 14 years ago
parent f5a8c3de87
commit e269494ff8

@ -115,7 +115,7 @@
<Compile Include="ProviderTests\DiskProviderTests\ExtractArchiveFixture.cs" />
<Compile Include="ProviderTests\PostDownloadProviderTests\PostDownloadProviderFixture.cs" />
<Compile Include="JobTests\SearchJobTest.cs" />
<Compile Include="ProviderTests\PostDownloadProviderTests\ProcessDownloadFixture.cs" />
<Compile Include="ProviderTests\PostDownloadProviderTests\ProcessDownloadProviderFixture.cs" />
<Compile Include="ProviderTests\JobProviderTests\TestJobs.cs" />
<Compile Include="JobTests\AppUpdateJobFixture.cs" />
<Compile Include="ProviderTests\UpdateProviderTests\GetUpdateLogFixture.cs" />

@ -288,9 +288,10 @@ namespace NzbDrone.Core.Test
[TestCase("Chuck - 4x05 - Title", "Chuck")]
[TestCase("Law & Order - 4x05 - Title", "laworder")]
[TestCase("This Isn't a Valid Post", "")]
[TestCase("Bad Format", "badformat")]
[TestCase("Mad Men - Season 1 [Bluray720p]", "madmen")]
[TestCase("Mad Men - Season 1 [Bluray1080p]", "madmen")]
[TestCase("The Daily Show With Jon Stewart -", "dailyshowwithjonstewart")]
public void parse_series_name(string postTitle, string title)
{
var result = Parser.ParseSeriesName(postTitle);

@ -10,7 +10,6 @@ using NUnit.Framework;
using NzbDrone.Common;
using NzbDrone.Core.Model;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
@ -19,7 +18,7 @@ using NzbDrone.Test.Common.AutoMoq;
namespace NzbDrone.Core.Test.ProviderTests.PostDownloadProviderTests
{
[TestFixture]
public class ProcessDownloadFixture : CoreTest
public class ProcessDownloadProviderFixture : CoreTest
{
[Test]
public void should_skip_if_folder_is_tagged_and_too_fresh()
@ -245,5 +244,44 @@ namespace NzbDrone.Core.Test.ProviderTests.PostDownloadProviderTests
Times.Exactly(fakeEpisodeFiles.Count));
mocker.VerifyAllMocks();
}
[Test]
public void ProcessDropFolder_should_only_process_folders_that_arent_known_series_folders()
{
var subFolders = new List<string>
{
@"c:\drop\episode1",
@"c:\drop\episode2",
@"c:\drop\episode3",
@"c:\drop\episode4"
};
Mocker.GetMock<DiskProvider>()
.Setup(c => c.GetDirectories(It.IsAny<String>()))
.Returns(subFolders);
Mocker.GetMock<SeriesProvider>()
.Setup(c => c.SeriesPathExists(subFolders[1]))
.Returns(true);
Mocker.GetMock<SeriesProvider>()
.Setup(c => c.FindSeries(It.IsAny<String>()))
.Returns(new Series());
Mocker.GetMock<DiskScanProvider>()
.Setup(c => c.Scan(It.IsAny<Series>(), It.IsAny<String>()))
.Returns(new List<EpisodeFile>());
//Act
Mocker.Resolve<PostDownloadProvider>().ProcessDropFolder(@"C:\drop\");
//Assert
Mocker.GetMock<DiskScanProvider>().Verify(c => c.Scan(It.IsAny<Series>(), subFolders[0]), Times.Once());
Mocker.GetMock<DiskScanProvider>().Verify(c => c.Scan(It.IsAny<Series>(), subFolders[1]), Times.Never());
Mocker.GetMock<DiskScanProvider>().Verify(c => c.Scan(It.IsAny<Series>(), subFolders[2]), Times.Once());
Mocker.GetMock<DiskScanProvider>().Verify(c => c.Scan(It.IsAny<Series>(), subFolders[3]), Times.Once());
}
}
}

@ -96,7 +96,7 @@ namespace NzbDrone.Core
{
//Check if episode is in the future (most likley a parse error)
if (result.AirDate > DateTime.Now.AddDays(1).Date)
break;
break;
result.Language = ParseLanguage(title);
result.Quality = ParseQuality(title);
@ -185,12 +185,7 @@ namespace NzbDrone.Core
return parsedEpisode;
}
/// <summary>
/// Parses a post title to find the series that relates to it
/// </summary>
/// <param name = "title">Title of the report</param>
/// <returns>Normalized Series Name</returns>
internal static string ParseSeriesName(string title)
public static string ParseSeriesName(string title)
{
Logger.Trace("Parsing string '{0}'", title);
@ -207,7 +202,7 @@ namespace NzbDrone.Core
}
}
return String.Empty;
return NormalizeTitle(title);
}
internal static Quality ParseQuality(string name)

@ -36,7 +36,10 @@ namespace NzbDrone.Core.Providers
{
try
{
ProcessDownload(new DirectoryInfo(subfolder));
if (!_seriesProvider.SeriesPathExists(subfolder))
{
ProcessDownload(new DirectoryInfo(subfolder));
}
}
catch (Exception e)
{

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Common;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Repository.Quality;
@ -176,12 +177,11 @@ namespace NzbDrone.Core.Providers
}
}
public virtual bool SeriesPathExists(string cleanPath)
public virtual bool SeriesPathExists(string path)
{
if (GetAllSeries().Any(s => s.Path.ToLower() == cleanPath.ToLower()))
return true;
var normilizedPath = path.NormalizePath();
return false;
return GetAllSeries().Any(s => s.Path.NormalizePath() == normilizedPath);
}
public virtual List<Series> SearchForSeries(string title)

Loading…
Cancel
Save