ShowRSS should use raw title #173

This commit is contained in:
KZ 2015-09-21 19:58:17 +01:00
parent f6240c3cf0
commit b8d0c75f7e
1 changed files with 132 additions and 132 deletions

View File

@ -1,132 +1,132 @@
using Jackett.Models; using Jackett.Models;
using Jackett.Services; using Jackett.Services;
using Jackett.Utils; using Jackett.Utils;
using Jackett.Utils.Clients; using Jackett.Utils.Clients;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NLog; using NLog;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web; using System.Web;
using System.Xml; using System.Xml;
using Jackett.Models.IndexerConfig; using Jackett.Models.IndexerConfig;
namespace Jackett.Indexers namespace Jackett.Indexers
{ {
public class ShowRSS : BaseIndexer, IIndexer public class ShowRSS : BaseIndexer, IIndexer
{ {
readonly static string defaultSiteLink = "http://showrss.info/"; readonly static string defaultSiteLink = "http://showrss.info/";
private Uri BaseUri private Uri BaseUri
{ {
get { return new Uri(configData.Url.Value); } get { return new Uri(configData.Url.Value); }
set { configData.Url.Value = value.ToString(); } set { configData.Url.Value = value.ToString(); }
} }
private string SearchAllUrl { get { return BaseUri + "feeds/all.rss"; } } private string SearchAllUrl { get { return BaseUri + "feeds/all.rss"; } }
new ConfigurationDataUrl configData new ConfigurationDataUrl configData
{ {
get { return (ConfigurationDataUrl)base.configData; } get { return (ConfigurationDataUrl)base.configData; }
set { base.configData = value; } set { base.configData = value; }
} }
public ShowRSS(IIndexerManagerService i, Logger l, IWebClient wc, IProtectionService ps) public ShowRSS(IIndexerManagerService i, Logger l, IWebClient wc, IProtectionService ps)
: base(name: "ShowRSS", : base(name: "ShowRSS",
description: "showRSS is a service that allows you to keep track of your favorite TV shows", description: "showRSS is a service that allows you to keep track of your favorite TV shows",
link: defaultSiteLink, link: defaultSiteLink,
caps: TorznabUtil.CreateDefaultTorznabTVCaps(), caps: TorznabUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
client: wc, client: wc,
logger: l, logger: l,
p: ps, p: ps,
configData: new ConfigurationDataUrl(defaultSiteLink)) configData: new ConfigurationDataUrl(defaultSiteLink))
{ {
} }
public async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson) public async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{ {
configData.LoadValuesFromJson(configJson); configData.LoadValuesFromJson(configJson);
var releases = await PerformQuery(new TorznabQuery()); var releases = await PerformQuery(new TorznabQuery());
await ConfigureIfOK(string.Empty, releases.Count() > 0, () => await ConfigureIfOK(string.Empty, releases.Count() > 0, () =>
{ {
throw new Exception("Could not find releases from this URL"); throw new Exception("Could not find releases from this URL");
}); });
return IndexerConfigurationStatus.RequiresTesting; return IndexerConfigurationStatus.RequiresTesting;
} }
// Override to load legacy config format // Override to load legacy config format
public override void LoadFromSavedConfiguration(JToken jsonConfig) public override void LoadFromSavedConfiguration(JToken jsonConfig)
{ {
if (jsonConfig is JObject) if (jsonConfig is JObject)
{ {
BaseUri = new Uri(jsonConfig.Value<string>("base_url")); BaseUri = new Uri(jsonConfig.Value<string>("base_url"));
SaveConfig(); SaveConfig();
IsConfigured = true; IsConfigured = true;
return; return;
} }
base.LoadFromSavedConfiguration(jsonConfig); base.LoadFromSavedConfiguration(jsonConfig);
} }
public override Task<byte[]> Download(Uri link) public override Task<byte[]> Download(Uri link)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query) public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{ {
var releases = new List<ReleaseInfo>(); var releases = new List<ReleaseInfo>();
var episodeSearchUrl = string.Format(SearchAllUrl); var episodeSearchUrl = string.Format(SearchAllUrl);
var result = await RequestStringWithCookiesAndRetry(episodeSearchUrl, string.Empty); var result = await RequestStringWithCookiesAndRetry(episodeSearchUrl, string.Empty);
var xmlDoc = new XmlDocument(); var xmlDoc = new XmlDocument();
try try
{ {
xmlDoc.LoadXml(result.Content); xmlDoc.LoadXml(result.Content);
ReleaseInfo release; ReleaseInfo release;
string serie_title; string serie_title;
foreach (XmlNode node in xmlDoc.GetElementsByTagName("item")) foreach (XmlNode node in xmlDoc.GetElementsByTagName("item"))
{ {
release = new ReleaseInfo(); release = new ReleaseInfo();
release.MinimumRatio = 1; release.MinimumRatio = 1;
release.MinimumSeedTime = 172800; release.MinimumSeedTime = 172800;
serie_title = node.SelectSingleNode("title").InnerText; serie_title = node.SelectSingleNode(".//*[local-name()='rawtitle']").InnerText;
release.Title = serie_title; release.Title = serie_title;
release.Comments = new Uri(node.SelectSingleNode("link").InnerText); release.Comments = new Uri(node.SelectSingleNode("link").InnerText);
int category = 0; int category = 0;
int.TryParse(node.SelectSingleNode("title").InnerText, out category); int.TryParse(node.SelectSingleNode("title").InnerText, out category);
release.Category = category; release.Category = category;
var test = node.SelectSingleNode("enclosure"); var test = node.SelectSingleNode("enclosure");
release.Guid = new Uri(test.Attributes["url"].Value); release.Guid = new Uri(test.Attributes["url"].Value);
release.PublishDate = DateTime.Parse(node.SelectSingleNode("pubDate").InnerText, CultureInfo.InvariantCulture); release.PublishDate = DateTime.Parse(node.SelectSingleNode("pubDate").InnerText, CultureInfo.InvariantCulture);
release.Description = node.SelectSingleNode("description").InnerText; release.Description = node.SelectSingleNode("description").InnerText;
release.InfoHash = node.SelectSingleNode("description").InnerText; release.InfoHash = node.SelectSingleNode("description").InnerText;
release.Size = 0; release.Size = 0;
release.Seeders = 1; release.Seeders = 1;
release.Peers = 1; release.Peers = 1;
release.MagnetUri = new Uri(node.SelectSingleNode("link").InnerText); release.MagnetUri = new Uri(node.SelectSingleNode("link").InnerText);
releases.Add(release); releases.Add(release);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
OnParseError(result.Content, ex); OnParseError(result.Content, ex);
} }
return releases; return releases;
} }
} }
} }