mirror of
https://github.com/Sonarr/Sonarr.git
synced 2024-12-12 11:15:43 +02:00
Hacked sabprovider to support addbyurl from newzbin
This commit is contained in:
parent
4f16615e8b
commit
c0814fa95d
@ -135,6 +135,7 @@ public void parsing_our_own_quality_enum()
|
|||||||
[TestCase("The Borgias S01e01 e02 ShoHD On Demand 1080i DD5 1 ALANiS", "The Borgias", 1, new[] { 1, 2 }, 2)]
|
[TestCase("The Borgias S01e01 e02 ShoHD On Demand 1080i DD5 1 ALANiS", "The Borgias", 1, new[] { 1, 2 }, 2)]
|
||||||
[TestCase("Big Time Rush 1x01 to 10 480i DD2 0 Sianto", "Big Time Rush", 1, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 10)]
|
[TestCase("Big Time Rush 1x01 to 10 480i DD2 0 Sianto", "Big Time Rush", 1, new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 10)]
|
||||||
[TestCase("White.Collar.2x04.2x05.720p.BluRay-FUTV", "White.Collar", 2, new[] { 4, 5 }, 2)]
|
[TestCase("White.Collar.2x04.2x05.720p.BluRay-FUTV", "White.Collar", 2, new[] { 4, 5 }, 2)]
|
||||||
|
[TestCase("Desperate.Housewives.S07E22E23.720p.HDTV.X264-DIMENSION", "Desperate.Housewives", 7, new[] { 22,23 }, 2)]
|
||||||
//[Row("The.Kennedys.Part.1.and.Part.2.DSR.XviD-SYS", 1, new[] { 1, 2 })]
|
//[Row("The.Kennedys.Part.1.and.Part.2.DSR.XviD-SYS", 1, new[] { 1, 2 })]
|
||||||
public void episode_multipart_parse(string postTitle, string title, int season, int[] episodes, int count)
|
public void episode_multipart_parse(string postTitle, string title, int season, int[] episodes, int count)
|
||||||
{
|
{
|
||||||
|
@ -66,6 +66,53 @@ public void AddByUrlSuccess()
|
|||||||
Assert.IsTrue(result);
|
Assert.IsTrue(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AddByUrlNewzbin()
|
||||||
|
{
|
||||||
|
//Setup
|
||||||
|
const string sabHost = "192.168.5.55";
|
||||||
|
const int sabPort = 2222;
|
||||||
|
const string apikey = "5c770e3197e4fe763423ee7c392c25d1";
|
||||||
|
const string username = "admin";
|
||||||
|
const string password = "pass";
|
||||||
|
const SabnzbdPriorityType priority = SabnzbdPriorityType.Normal;
|
||||||
|
const string category = "tv";
|
||||||
|
|
||||||
|
|
||||||
|
var mocker = new AutoMoqer();
|
||||||
|
|
||||||
|
var fakeConfig = mocker.GetMock<ConfigProvider>();
|
||||||
|
fakeConfig.SetupGet(c => c.SabHost)
|
||||||
|
.Returns(sabHost);
|
||||||
|
fakeConfig.SetupGet(c => c.SabPort)
|
||||||
|
.Returns(sabPort);
|
||||||
|
fakeConfig.SetupGet(c => c.SabApiKey)
|
||||||
|
.Returns(apikey);
|
||||||
|
fakeConfig.SetupGet(c => c.SabUsername)
|
||||||
|
.Returns(username);
|
||||||
|
fakeConfig.SetupGet(c => c.SabPassword)
|
||||||
|
.Returns(password);
|
||||||
|
fakeConfig.SetupGet(c => c.SabTvPriority)
|
||||||
|
.Returns(priority);
|
||||||
|
fakeConfig.SetupGet(c => c.SabTvCategory)
|
||||||
|
.Returns(category);
|
||||||
|
|
||||||
|
mocker.GetMock<HttpProvider>(MockBehavior.Strict)
|
||||||
|
.Setup(
|
||||||
|
s =>
|
||||||
|
s.DownloadString(
|
||||||
|
"http://192.168.5.55:2222/api?mode=addid&name=6107863&priority=0&pp=3&cat=tv&nzbname=This+is+an+Nzb&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass"))
|
||||||
|
.Returns("ok");
|
||||||
|
|
||||||
|
//Act
|
||||||
|
bool result = mocker.Resolve<SabProvider>().AddByUrl(
|
||||||
|
"http://www.newzbin.com/browse/post/6107863/nzb", "This is an Nzb");
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void AddByUrlError()
|
public void AddByUrlError()
|
||||||
{
|
{
|
||||||
@ -179,7 +226,7 @@ public void IsInQueue_False_Empty()
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[ExpectedException(typeof(ApplicationException), ExpectedMessage= "API Key Incorrect")]
|
[ExpectedException(typeof(ApplicationException), ExpectedMessage = "API Key Incorrect")]
|
||||||
public void IsInQueue_False_Error()
|
public void IsInQueue_False_Error()
|
||||||
{
|
{
|
||||||
//Setup
|
//Setup
|
||||||
@ -213,12 +260,12 @@ public void IsInQueue_False_Error()
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, false, "My Series Name - 1x2 - My Episode Title [DVD]")]
|
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, false, "My Series Name - 1x2 - My Episode Title [DVD]")]
|
||||||
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, true, "My Series Name - 1x2 - My Episode Title [DVD] [Proper]")]
|
[TestCase(1, new[] { 2 }, "My Episode Title", QualityTypes.DVD, true, "My Series Name - 1x2 - My Episode Title [DVD] [Proper]")]
|
||||||
[TestCase(1, new[] { 2 }, "", QualityTypes.DVD, true, "My Series Name - 1x2 - [DVD] [Proper]")]
|
[TestCase(1, new[] { 2 }, "", QualityTypes.DVD, true, "My Series Name - 1x2 - [DVD] [Proper]")]
|
||||||
[TestCase(1, new[] { 2, 4 }, "My Episode Title", QualityTypes.HDTV, false, "My Series Name - 1x2-1x4 - My Episode Title [HDTV]")]
|
[TestCase(1, new[] { 2, 4 }, "My Episode Title", QualityTypes.HDTV, false, "My Series Name - 1x2-1x4 - My Episode Title [HDTV]")]
|
||||||
[TestCase(1, new[] { 2, 4 }, "My Episode Title", QualityTypes.HDTV, true, "My Series Name - 1x2-1x4 - My Episode Title [HDTV] [Proper]")]
|
[TestCase(1, new[] { 2, 4 }, "My Episode Title", QualityTypes.HDTV, true, "My Series Name - 1x2-1x4 - My Episode Title [HDTV] [Proper]")]
|
||||||
[TestCase(1, new[] { 2, 4 }, "", QualityTypes.HDTV, true, "My Series Name - 1x2-1x4 - [HDTV] [Proper]")]
|
[TestCase(1, new[] { 2, 4 }, "", QualityTypes.HDTV, true, "My Series Name - 1x2-1x4 - [HDTV] [Proper]")]
|
||||||
public void sab_title(int seasons, int[] episodes, string title, QualityTypes quality, bool proper, string excpected)
|
public void sab_title(int seasons, int[] episodes, string title, QualityTypes quality, bool proper, string excpected)
|
||||||
{
|
{
|
||||||
var mocker = new AutoMoqer();
|
var mocker = new AutoMoqer();
|
||||||
@ -235,7 +282,7 @@ public void sab_title(int seasons, int[] episodes, string title, QualityTypes qu
|
|||||||
{
|
{
|
||||||
AirDate = DateTime.Now,
|
AirDate = DateTime.Now,
|
||||||
EpisodeNumbers = episodes.ToList(),
|
EpisodeNumbers = episodes.ToList(),
|
||||||
Quality = new Quality(quality,proper),
|
Quality = new Quality(quality, proper),
|
||||||
SeasonNumber = seasons,
|
SeasonNumber = seasons,
|
||||||
Series = series,
|
Series = series,
|
||||||
Episodes = new List<Episode>() { episode }
|
Episodes = new List<Episode>() { episode }
|
||||||
@ -247,5 +294,49 @@ public void sab_title(int seasons, int[] episodes, string title, QualityTypes qu
|
|||||||
//Assert
|
//Assert
|
||||||
Assert.AreEqual(excpected, actual);
|
Assert.AreEqual(excpected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
[Explicit]
|
||||||
|
public void AddNewzbingByUrlSuccess()
|
||||||
|
{
|
||||||
|
//Setup
|
||||||
|
const string sabHost = "192.168.1.50";
|
||||||
|
const int sabPort = 8080;
|
||||||
|
const string apikey = "f37dc33baec2e5566f5aec666287870d";
|
||||||
|
const string username = "root";
|
||||||
|
const string password = "*************";
|
||||||
|
const SabnzbdPriorityType priority = SabnzbdPriorityType.Normal;
|
||||||
|
const string category = "tv";
|
||||||
|
|
||||||
|
|
||||||
|
var mocker = new AutoMoqer();
|
||||||
|
|
||||||
|
var fakeConfig = mocker.GetMock<ConfigProvider>();
|
||||||
|
fakeConfig.SetupGet(c => c.SabHost)
|
||||||
|
.Returns(sabHost);
|
||||||
|
fakeConfig.SetupGet(c => c.SabPort)
|
||||||
|
.Returns(sabPort);
|
||||||
|
fakeConfig.SetupGet(c => c.SabApiKey)
|
||||||
|
.Returns(apikey);
|
||||||
|
fakeConfig.SetupGet(c => c.SabUsername)
|
||||||
|
.Returns(username);
|
||||||
|
fakeConfig.SetupGet(c => c.SabPassword)
|
||||||
|
.Returns(password);
|
||||||
|
fakeConfig.SetupGet(c => c.SabTvPriority)
|
||||||
|
.Returns(priority);
|
||||||
|
fakeConfig.SetupGet(c => c.SabTvCategory)
|
||||||
|
.Returns(category);
|
||||||
|
|
||||||
|
|
||||||
|
mocker.SetConstant(new HttpProvider());
|
||||||
|
|
||||||
|
//Act
|
||||||
|
bool result = mocker.Resolve<SabProvider>().AddByUrl(
|
||||||
|
"http://www.newzbin.com/browse/post/6107863/nzb", "This is an Nzb");
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
Assert.IsTrue(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
@ -30,11 +31,17 @@ public virtual bool AddByUrl(string url, string title)
|
|||||||
{
|
{
|
||||||
string cat = _configProvider.SabTvCategory;
|
string cat = _configProvider.SabTvCategory;
|
||||||
int priority = (int)_configProvider.SabTvPriority;
|
int priority = (int)_configProvider.SabTvPriority;
|
||||||
string name = url.Replace("&", "%26");
|
string name = GetNzbName(url);
|
||||||
string nzbName = HttpUtility.UrlEncode(title);
|
string nzbName = HttpUtility.UrlEncode(title);
|
||||||
|
|
||||||
string action = string.Format("mode=addurl&name={0}&priority={1}&pp=3&cat={2}&nzbname={3}",
|
string action = string.Format("mode=addurl&name={0}&priority={1}&pp=3&cat={2}&nzbname={3}",
|
||||||
name, priority, cat, nzbName);
|
name, priority, cat, nzbName);
|
||||||
|
|
||||||
|
if (url.ToLower().Contains("newzbin"))
|
||||||
|
{
|
||||||
|
action = action.Replace("mode=addurl", "mode=addid");
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
@ -50,6 +57,18 @@ public virtual bool AddByUrl(string url, string title)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
public virtual bool IsInQueue(string title)
|
public virtual bool IsInQueue(string title)
|
||||||
{
|
{
|
||||||
const string action = "mode=queue&output=xml";
|
const string action = "mode=queue&output=xml";
|
||||||
|
Loading…
Reference in New Issue
Block a user