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);
|
||||
|
||||
Mocker.GetMock<SabProvider>()
|
||||
.Setup(s => s.AddByUrl(parseResult.NzbUrl, sabTitle))
|
||||
.Setup(s => s.AddByUrl(parseResult, sabTitle))
|
||||
.Returns(true);
|
||||
|
||||
Mocker.GetMock<SabProvider>()
|
||||
|
|
|
@ -206,6 +206,10 @@ namespace NzbDrone.Core.Test.ProviderTests.InventoryProviderTests
|
|||
.Setup(s => s.Get(It.IsAny<int>()))
|
||||
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
||||
|
||||
Mocker.GetMock<HistoryProvider>()
|
||||
.Setup(s => s.IsBlacklisted(It.IsAny<string>()))
|
||||
.Returns(false);
|
||||
|
||||
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
||||
|
||||
//Act
|
||||
|
@ -240,6 +244,10 @@ namespace NzbDrone.Core.Test.ProviderTests.InventoryProviderTests
|
|||
.Setup(s => s.Get(It.IsAny<int>()))
|
||||
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
||||
|
||||
Mocker.GetMock<HistoryProvider>()
|
||||
.Setup(s => s.IsBlacklisted(It.IsAny<string>()))
|
||||
.Returns(false);
|
||||
|
||||
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
||||
//Act
|
||||
bool result = Mocker.Resolve<InventoryProvider>().IsQualityNeeded(parseResultSingle);
|
||||
|
@ -299,6 +307,10 @@ namespace NzbDrone.Core.Test.ProviderTests.InventoryProviderTests
|
|||
.Setup(s => s.Get(It.IsAny<int>()))
|
||||
.Returns(new QualityType { MaxSize = 100, MinSize = 0 });
|
||||
|
||||
Mocker.GetMock<HistoryProvider>()
|
||||
.Setup(s => s.IsBlacklisted(It.IsAny<string>()))
|
||||
.Returns(false);
|
||||
|
||||
episode.EpisodeFile.Quality = QualityTypes.SDTV;
|
||||
//Act
|
||||
bool result = Mocker.Resolve<InventoryProvider>().IsQualityNeeded(parseResultSingle, true);
|
||||
|
|
|
@ -21,6 +21,9 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
|||
// ReSharper disable InconsistentNaming
|
||||
public class SabProviderTest : CoreTest
|
||||
{
|
||||
private EpisodeParseResult newzbinResult;
|
||||
private EpisodeParseResult nonNewzbinResult;
|
||||
|
||||
[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.SabPassword).Returns(password);
|
||||
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()
|
||||
{
|
||||
|
@ -59,9 +71,7 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
|||
.Returns("ok");
|
||||
|
||||
//Act
|
||||
bool result = Mocker.Resolve<SabProvider>().AddByUrl(
|
||||
"http://www.nzbclub.com/nzb_download.aspx?mid=1950232",
|
||||
"This is an Nzb");
|
||||
bool result = Mocker.Resolve<SabProvider>().AddByUrl(nonNewzbinResult, "This is an Nzb");
|
||||
|
||||
//Assert
|
||||
result.Should().BeTrue();
|
||||
|
@ -79,9 +89,7 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
|||
.Returns("ok");
|
||||
|
||||
//Act
|
||||
bool result = Mocker.Resolve<SabProvider>().AddByUrl(
|
||||
"http://www.newzbin.com/browse/post/6107863/nzb",
|
||||
"This is an Nzb");
|
||||
bool result = Mocker.Resolve<SabProvider>().AddByUrl(newzbinResult, "This is an Nzb");
|
||||
|
||||
//Assert
|
||||
result.Should().BeTrue();
|
||||
|
@ -94,7 +102,7 @@ namespace NzbDrone.Core.Test.ProviderTests.SabProviderTests
|
|||
|
||||
//Act
|
||||
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.IsFalse(result);
|
||||
|
|
|
@ -39,6 +39,8 @@ namespace NzbDrone.Core.Model
|
|||
|
||||
public long Size { get; set; }
|
||||
|
||||
public int NewzbinId { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (AirDate != null && EpisodeNumbers == null)
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace NzbDrone.Core.Providers
|
|||
}
|
||||
|
||||
var sabTitle = _sabProvider.GetSabTitle(parseResult);
|
||||
var addSuccess = _sabProvider.AddByUrl(parseResult.NzbUrl, sabTitle);
|
||||
var addSuccess = _sabProvider.AddByUrl(parseResult, sabTitle);
|
||||
|
||||
if (addSuccess)
|
||||
{
|
||||
|
@ -54,6 +54,7 @@ namespace NzbDrone.Core.Providers
|
|||
history.NzbTitle = parseResult.OriginalString;
|
||||
history.EpisodeId = episode.EpisodeId;
|
||||
history.SeriesId = episode.SeriesId;
|
||||
history.NewzbinId = parseResult.NewzbinId;
|
||||
|
||||
_historyProvider.Add(history);
|
||||
_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
|
||||
{
|
||||
get { return "Newzbin"; }
|
||||
|
@ -94,19 +94,18 @@ namespace NzbDrone.Core.Providers.Indexer
|
|||
if (currentResult != null)
|
||||
{
|
||||
var quality = Parser.ParseQuality(item.Summary.Text);
|
||||
|
||||
currentResult.Quality = quality;
|
||||
|
||||
var languageString = Regex.Match(item.Summary.Text, @"Language - \w*", RegexOptions.IgnoreCase).Value;
|
||||
|
||||
currentResult.Language = Parser.ParseLanguage(languageString);
|
||||
|
||||
var sizeString = Regex.Match(item.Summary.Text, @"\(Size: \d*\,?\d+\.\d{1,2}\w{2}\)", RegexOptions.IgnoreCase).Value;
|
||||
|
||||
currentResult.Size = Parser.GetReportSize(sizeString);
|
||||
|
||||
var id = Regex.Match(NzbDownloadUrl(item), @"\d{5,10}").Value;
|
||||
currentResult.NewzbinId = Int32.Parse(id);
|
||||
}
|
||||
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);
|
||||
|
|
|
@ -31,21 +31,23 @@ namespace NzbDrone.Core.Providers
|
|||
_httpProvider = httpProvider;
|
||||
}
|
||||
|
||||
public virtual bool AddByUrl(string url, string title)
|
||||
public virtual bool AddByUrl(EpisodeParseResult parseResult, string title)
|
||||
{
|
||||
string cat = _configProvider.SabTvCategory;
|
||||
int priority = (int)_configProvider.SabTvPriority;
|
||||
string name = GetNzbName(url);
|
||||
string name = GetNzbName(parseResult.NzbUrl);
|
||||
string nzbName = HttpUtility.UrlEncode(title);
|
||||
string mode = "addurl";
|
||||
|
||||
string action = string.Format("mode=addurl&name={0}&priority={1}&pp=3&cat={2}&nzbname={3}",
|
||||
name, priority, cat, nzbName);
|
||||
|
||||
if (url.ToLower().Contains("newzbin"))
|
||||
if (parseResult.Indexer == "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);
|
||||
|
||||
Logger.Info("Adding report [{0}] to the queue.", title);
|
||||
|
@ -63,13 +65,6 @@ namespace NzbDrone.Core.Providers
|
|||
|
||||
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");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue