More work on implementing blacklisting. Refactored AddByUrl to use already parsed NewzbinId.
This commit is contained in:
parent
0b6ad3d0c2
commit
51bec56741
|
@ -38,7 +38,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
.Returns(false);
|
.Returns(false);
|
||||||
|
|
||||||
Mocker.GetMock<SabProvider>()
|
Mocker.GetMock<SabProvider>()
|
||||||
.Setup(s => s.AddByUrl(parseResult.NzbUrl, sabTitle))
|
.Setup(s => s.AddByUrl(parseResult, sabTitle))
|
||||||
.Returns(true);
|
.Returns(true);
|
||||||
|
|
||||||
Mocker.GetMock<SabProvider>()
|
Mocker.GetMock<SabProvider>()
|
||||||
|
|
|
@ -206,6 +206,10 @@ namespace NzbDrone.Core.Test.ProviderTests.InventoryProviderTests
|
||||||
.Setup(s => s.Get(It.IsAny<int>()))
|
.Setup(s => s.Get(It.IsAny<int>()))
|
||||||
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
||||||
|
|
||||||
|
Mocker.GetMock<HistoryProvider>()
|
||||||
|
.Setup(s => s.IsBlacklisted(It.IsAny<string>()))
|
||||||
|
.Returns(false);
|
||||||
|
|
||||||
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
|
@ -240,6 +244,10 @@ namespace NzbDrone.Core.Test.ProviderTests.InventoryProviderTests
|
||||||
.Setup(s => s.Get(It.IsAny<int>()))
|
.Setup(s => s.Get(It.IsAny<int>()))
|
||||||
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
||||||
|
|
||||||
|
Mocker.GetMock<HistoryProvider>()
|
||||||
|
.Setup(s => s.IsBlacklisted(It.IsAny<string>()))
|
||||||
|
.Returns(false);
|
||||||
|
|
||||||
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
||||||
//Act
|
//Act
|
||||||
bool result = Mocker.Resolve<InventoryProvider>().IsQualityNeeded(parseResultSingle);
|
bool result = Mocker.Resolve<InventoryProvider>().IsQualityNeeded(parseResultSingle);
|
||||||
|
@ -299,6 +307,10 @@ namespace NzbDrone.Core.Test.ProviderTests.InventoryProviderTests
|
||||||
.Setup(s => s.Get(It.IsAny<int>()))
|
.Setup(s => s.Get(It.IsAny<int>()))
|
||||||
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
||||||
|
|
||||||
|
Mocker.GetMock<HistoryProvider>()
|
||||||
|
.Setup(s => s.IsBlacklisted(It.IsAny<string>()))
|
||||||
|
.Returns(false);
|
||||||
|
|
||||||
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
||||||
//Act
|
//Act
|
||||||
bool result = Mocker.Resolve<InventoryProvider>().IsQualityNeeded(parseResultSingle, true);
|
bool result = Mocker.Resolve<InventoryProvider>().IsQualityNeeded(parseResultSingle, true);
|
||||||
|
|
|
@ -21,6 +21,9 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
||||||
// ReSharper disable InconsistentNaming
|
// ReSharper disable InconsistentNaming
|
||||||
public class SabProviderTest : CoreTest
|
public class SabProviderTest : CoreTest
|
||||||
{
|
{
|
||||||
|
private EpisodeParseResult newzbinResult;
|
||||||
|
private EpisodeParseResult nonNewzbinResult;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
|
@ -39,8 +42,17 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
||||||
fakeConfig.SetupGet(c => c.SabUsername).Returns(username);
|
fakeConfig.SetupGet(c => c.SabUsername).Returns(username);
|
||||||
fakeConfig.SetupGet(c => c.SabPassword).Returns(password);
|
fakeConfig.SetupGet(c => c.SabPassword).Returns(password);
|
||||||
fakeConfig.SetupGet(c => c.SabTvCategory).Returns(cat);
|
fakeConfig.SetupGet(c => c.SabTvCategory).Returns(cat);
|
||||||
}
|
|
||||||
|
|
||||||
|
newzbinResult = Builder<EpisodeParseResult>.CreateNew()
|
||||||
|
.With(r => r.NewzbinId = 6107863)
|
||||||
|
.With(r => r.Indexer = "Newzbin")
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
nonNewzbinResult = Builder<EpisodeParseResult>.CreateNew()
|
||||||
|
.With(r => r.NzbUrl = "http://www.nzbclub.com/nzb_download.aspx?mid=1950232")
|
||||||
|
.With(r => r.Indexer = "Not Newzbin")
|
||||||
|
.Build();
|
||||||
|
}
|
||||||
|
|
||||||
private void WithFailResponse()
|
private void WithFailResponse()
|
||||||
{
|
{
|
||||||
|
@ -59,9 +71,7 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
||||||
.Returns("ok");
|
.Returns("ok");
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
bool result = Mocker.Resolve<SabProvider>().AddByUrl(
|
bool result = Mocker.Resolve<SabProvider>().AddByUrl(nonNewzbinResult, "This is an Nzb");
|
||||||
"http://www.nzbclub.com/nzb_download.aspx?mid=1950232",
|
|
||||||
"This is an Nzb");
|
|
||||||
|
|
||||||
//Assert
|
//Assert
|
||||||
result.Should().BeTrue();
|
result.Should().BeTrue();
|
||||||
|
@ -79,9 +89,7 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
||||||
.Returns("ok");
|
.Returns("ok");
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
bool result = Mocker.Resolve<SabProvider>().AddByUrl(
|
bool result = Mocker.Resolve<SabProvider>().AddByUrl(newzbinResult, "This is an Nzb");
|
||||||
"http://www.newzbin.com/browse/post/6107863/nzb",
|
|
||||||
"This is an Nzb");
|
|
||||||
|
|
||||||
//Assert
|
//Assert
|
||||||
result.Should().BeTrue();
|
result.Should().BeTrue();
|
||||||
|
@ -94,7 +102,7 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
var sabProvider = Mocker.Resolve<SabProvider>();
|
var sabProvider = Mocker.Resolve<SabProvider>();
|
||||||
var result = sabProvider.AddByUrl("http://www.nzbclub.com/nzb_download.aspx?mid=1950232", "This is an nzb");
|
var result = sabProvider.AddByUrl(nonNewzbinResult, "This is an nzb");
|
||||||
|
|
||||||
//Assert
|
//Assert
|
||||||
Assert.IsFalse(result);
|
Assert.IsFalse(result);
|
||||||
|
|
|
@ -39,6 +39,8 @@ namespace NzbDrone.Core.Model
|
||||||
|
|
||||||
public long Size { get; set; }
|
public long Size { get; set; }
|
||||||
|
|
||||||
|
public int NewzbinId { get; set; }
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
if (AirDate != null && EpisodeNumbers == null)
|
if (AirDate != null && EpisodeNumbers == null)
|
||||||
|
|
|
@ -38,7 +38,7 @@ namespace NzbDrone.Core.Providers
|
||||||
}
|
}
|
||||||
|
|
||||||
var sabTitle = _sabProvider.GetSabTitle(parseResult);
|
var sabTitle = _sabProvider.GetSabTitle(parseResult);
|
||||||
var addSuccess = _sabProvider.AddByUrl(parseResult.NzbUrl, sabTitle);
|
var addSuccess = _sabProvider.AddByUrl(parseResult, sabTitle);
|
||||||
|
|
||||||
if (addSuccess)
|
if (addSuccess)
|
||||||
{
|
{
|
||||||
|
@ -54,6 +54,7 @@ namespace NzbDrone.Core.Providers
|
||||||
history.NzbTitle = parseResult.OriginalString;
|
history.NzbTitle = parseResult.OriginalString;
|
||||||
history.EpisodeId = episode.EpisodeId;
|
history.EpisodeId = episode.EpisodeId;
|
||||||
history.SeriesId = episode.SeriesId;
|
history.SeriesId = episode.SeriesId;
|
||||||
|
history.NewzbinId = parseResult.NewzbinId;
|
||||||
|
|
||||||
_historyProvider.Add(history);
|
_historyProvider.Add(history);
|
||||||
_episodeProvider.MarkEpisodeAsFetched(episode.EpisodeId);
|
_episodeProvider.MarkEpisodeAsFetched(episode.EpisodeId);
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace NzbDrone.Core.Providers.Indexer
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Don't change the name or things that rely on it being "Newzbin" will fail... ugly...
|
||||||
public override string Name
|
public override string Name
|
||||||
{
|
{
|
||||||
get { return "Newzbin"; }
|
get { return "Newzbin"; }
|
||||||
|
@ -94,19 +94,18 @@ namespace NzbDrone.Core.Providers.Indexer
|
||||||
if (currentResult != null)
|
if (currentResult != null)
|
||||||
{
|
{
|
||||||
var quality = Parser.ParseQuality(item.Summary.Text);
|
var quality = Parser.ParseQuality(item.Summary.Text);
|
||||||
|
|
||||||
currentResult.Quality = quality;
|
currentResult.Quality = quality;
|
||||||
|
|
||||||
var languageString = Regex.Match(item.Summary.Text, @"Language - \w*", RegexOptions.IgnoreCase).Value;
|
var languageString = Regex.Match(item.Summary.Text, @"Language - \w*", RegexOptions.IgnoreCase).Value;
|
||||||
|
|
||||||
currentResult.Language = Parser.ParseLanguage(languageString);
|
currentResult.Language = Parser.ParseLanguage(languageString);
|
||||||
|
|
||||||
var sizeString = Regex.Match(item.Summary.Text, @"\(Size: \d*\,?\d+\.\d{1,2}\w{2}\)", RegexOptions.IgnoreCase).Value;
|
var sizeString = Regex.Match(item.Summary.Text, @"\(Size: \d*\,?\d+\.\d{1,2}\w{2}\)", RegexOptions.IgnoreCase).Value;
|
||||||
|
|
||||||
currentResult.Size = Parser.GetReportSize(sizeString);
|
currentResult.Size = Parser.GetReportSize(sizeString);
|
||||||
|
|
||||||
|
var id = Regex.Match(NzbDownloadUrl(item), @"\d{5,10}").Value;
|
||||||
|
currentResult.NewzbinId = Int32.Parse(id);
|
||||||
}
|
}
|
||||||
return currentResult;
|
return currentResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -116,6 +116,26 @@ namespace NzbDrone.Core.Providers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parsedReport.Indexer == "Newzbin")
|
||||||
|
{
|
||||||
|
//Check for Blacklisting by NewzbinId
|
||||||
|
Logger.Trace("Checking if Newzbin ID has been black listed: ", parsedReport.NewzbinId);
|
||||||
|
if (_historyProvider.IsBlacklisted(parsedReport.NewzbinId))
|
||||||
|
{
|
||||||
|
Logger.Info("Newzbin ID has been blacklisted: [{0}] Skipping", parsedReport.NewzbinId);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.Trace("Checking if Nzb has been black listed: ", parsedReport.OriginalString);
|
||||||
|
if(_historyProvider.IsBlacklisted(parsedReport.OriginalString))
|
||||||
|
{
|
||||||
|
Logger.Info("Nzb has been blacklisted: [{0}] Skipping", parsedReport.OriginalString);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.Debug("Episode {0} is needed", parsedReport);
|
Logger.Debug("Episode {0} is needed", parsedReport);
|
||||||
|
|
|
@ -31,21 +31,23 @@ namespace NzbDrone.Core.Providers
|
||||||
_httpProvider = httpProvider;
|
_httpProvider = httpProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool AddByUrl(string url, string title)
|
public virtual bool AddByUrl(EpisodeParseResult parseResult, string title)
|
||||||
{
|
{
|
||||||
string cat = _configProvider.SabTvCategory;
|
string cat = _configProvider.SabTvCategory;
|
||||||
int priority = (int)_configProvider.SabTvPriority;
|
int priority = (int)_configProvider.SabTvPriority;
|
||||||
string name = GetNzbName(url);
|
string name = GetNzbName(parseResult.NzbUrl);
|
||||||
string nzbName = HttpUtility.UrlEncode(title);
|
string nzbName = HttpUtility.UrlEncode(title);
|
||||||
|
string mode = "addurl";
|
||||||
|
|
||||||
string action = string.Format("mode=addurl&name={0}&priority={1}&pp=3&cat={2}&nzbname={3}",
|
if (parseResult.Indexer == "Newzbin")
|
||||||
name, priority, cat, nzbName);
|
|
||||||
|
|
||||||
if (url.ToLower().Contains("newzbin"))
|
|
||||||
{
|
{
|
||||||
action = action.Replace("mode=addurl", "mode=addid");
|
mode = "addid";
|
||||||
|
name = parseResult.NewzbinId.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string action = string.Format("mode={0}&name={1}&priority={2}&pp=3&cat={3}&nzbname={4}", mode,
|
||||||
|
name, priority, cat, nzbName);
|
||||||
|
|
||||||
string request = GetSabRequest(action);
|
string request = GetSabRequest(action);
|
||||||
|
|
||||||
Logger.Info("Adding report [{0}] to the queue.", title);
|
Logger.Info("Adding report [{0}] to the queue.", title);
|
||||||
|
@ -63,13 +65,6 @@ namespace NzbDrone.Core.Providers
|
||||||
|
|
||||||
private static string GetNzbName(string urlString)
|
private static string GetNzbName(string urlString)
|
||||||
{
|
{
|
||||||
var url = new Uri(urlString);
|
|
||||||
if (url.Host.ToLower().Contains("newzbin"))
|
|
||||||
{
|
|
||||||
var postId = Regex.Match(urlString, @"\d{5,10}").Value;
|
|
||||||
return postId;
|
|
||||||
}
|
|
||||||
|
|
||||||
return urlString.Replace("&", "%26");
|
return urlString.Replace("&", "%26");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue