From ccde11945456a9cb2a1995c0ad461f5869cfd27c Mon Sep 17 00:00:00 2001 From: KZ Date: Mon, 10 Aug 2015 21:33:16 +0100 Subject: [PATCH] Implement TVChaos UK --- src/Jackett/Content/logos/tvchaosuk.png | Bin 0 -> 25166 bytes src/Jackett/Indexers/TVChaosUK.cs | 244 ++++++++++++++++++ src/Jackett/Jackett.csproj | 5 + .../ConfigurationDataBasicLoginWithRSS.cs | 23 ++ 4 files changed, 272 insertions(+) create mode 100644 src/Jackett/Content/logos/tvchaosuk.png create mode 100644 src/Jackett/Indexers/TVChaosUK.cs create mode 100644 src/Jackett/Models/IndexerConfig/ConfigurationDataBasicLoginWithRSS.cs diff --git a/src/Jackett/Content/logos/tvchaosuk.png b/src/Jackett/Content/logos/tvchaosuk.png new file mode 100644 index 0000000000000000000000000000000000000000..468ff1750504d1b0f961392e3185ef6ead739187 GIT binary patch literal 25166 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 N002ovPDHLkV1gUruwVcH literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/TVChaosUK.cs b/src/Jackett/Indexers/TVChaosUK.cs new file mode 100644 index 000000000..77ef1bcca --- /dev/null +++ b/src/Jackett/Indexers/TVChaosUK.cs @@ -0,0 +1,244 @@ +using CsQuery; +using Jackett.Models; +using Jackett.Services; +using Jackett.Utils; +using Jackett.Utils.Clients; +using Newtonsoft.Json.Linq; +using NLog; +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Globalization; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using Jackett.Models.IndexerConfig; +using System.Text.RegularExpressions; +using System.Xml.Linq; + +namespace Jackett.Indexers +{ + public class TVChaosUK : BaseIndexer, IIndexer + { + string LoginUrl { get { return SiteLink + "takelogin.php"; } } + string GetRSSKeyUrl { get { return SiteLink + "getrss.php"; } } + string SearchUrl { get { return SiteLink + "browse.php"; } } + string RSSUrl { get { return SiteLink + "rss.php?secret_key={0}&feedtype=download&timezone=0&showrows=50&categories=all"; } } + string CommentUrl { get { return SiteLink + "details.php?id={0}"; } } + string DownloadUrl { get { return SiteLink + "download.php?id={0}"; } } + + new ConfigurationDataBasicLoginWithRSS configData + { + get { return (ConfigurationDataBasicLoginWithRSS)base.configData; } + set { base.configData = value; } + } + + public TVChaosUK(IIndexerManagerService i, IWebClient wc, Logger l, IProtectionService ps) + : base(name: "TV Chaos", + description: "Total Chaos", + link: "https://tvchaosuk.com/", + caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(), + manager: i, + client: wc, + logger: l, + p: ps, + configData: new ConfigurationDataBasicLoginWithRSS()) + { + AddCategoryMapping(72, TorznabCatType.Apps); + AddCategoryMapping(86, TorznabCatType.Audio); + AddCategoryMapping(87, TorznabCatType.AudioBooks); + AddCategoryMapping(88, TorznabCatType.Audio); + + AddCategoryMapping(83, TorznabCatType.Movies); + AddCategoryMapping(171, TorznabCatType.Movies); + AddCategoryMapping(178, TorznabCatType.MoviesHD); + AddCategoryMapping(181, TorznabCatType.Movies); + AddCategoryMapping(182, TorznabCatType.Movies); + + AddCategoryMapping(75, TorznabCatType.TVDocs); + AddCategoryMapping(189, TorznabCatType.TVDocs); + AddCategoryMapping(224, TorznabCatType.TVDocs); + AddCategoryMapping(174, TorznabCatType.TVDocs); + AddCategoryMapping(113, TorznabCatType.TVDocs); + AddCategoryMapping(100, TorznabCatType.TVDocs); + AddCategoryMapping(98, TorznabCatType.TVDocs); + + AddCategoryMapping(176, TorznabCatType.TVHD); + AddCategoryMapping(175, TorznabCatType.TVHD); + AddCategoryMapping(177, TorznabCatType.TVHD); + AddCategoryMapping(223, TorznabCatType.TVHD); + AddCategoryMapping(222, TorznabCatType.TVHD); + AddCategoryMapping(172, TorznabCatType.TVHD); + AddCategoryMapping(221, TorznabCatType.TVHD); + + // RSS Textual categories + AddCategoryMapping("Appz", TorznabCatType.Apps); + AddCategoryMapping("Radio/Audio", TorznabCatType.Audio); + AddCategoryMapping("Audio Books", TorznabCatType.AudioBooks); + AddCategoryMapping("Radio Comedy", TorznabCatType.AudioBooks); + + AddCategoryMapping("TV Aired Movies", TorznabCatType.Movies); + AddCategoryMapping("Classic Movies", TorznabCatType.Movies); + AddCategoryMapping("HD TV Aired Movies", TorznabCatType.MoviesHD); + AddCategoryMapping("Made for TV", TorznabCatType.Movies); + AddCategoryMapping("TV Aired Movies", TorznabCatType.Movies); + + AddCategoryMapping("Documentary & News", TorznabCatType.TVDocs); + AddCategoryMapping("Docudrama", TorznabCatType.TVDocs); + AddCategoryMapping("Documentary", TorznabCatType.TVDocs); + AddCategoryMapping("HD Documentary", TorznabCatType.TVDocs); + AddCategoryMapping("Historical", TorznabCatType.TVDocs); + AddCategoryMapping("True Crime", TorznabCatType.TVDocs); + AddCategoryMapping("Wildlife/Nature", TorznabCatType.TVDocs); + + AddCategoryMapping("HD Sci-Fi", TorznabCatType.TVHD); + AddCategoryMapping("HD Drama", TorznabCatType.TVHD); + AddCategoryMapping("HD Soaps", TorznabCatType.TVHD); + AddCategoryMapping("HD Entertainment", TorznabCatType.TVHD); + AddCategoryMapping("HD Sport", TorznabCatType.TVHD); + AddCategoryMapping("HD Comedy", TorznabCatType.TVHD); + AddCategoryMapping("HD Factual/Reality", TorznabCatType.TVHD); + } + + public async Task ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + var pairs = new Dictionary { + { "username", configData.Username.Value }, + { "password", configData.Password.Value } + }; + + var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SearchUrl, SiteLink); + + // Get RSS key + var rssParams = new Dictionary { + { "feedtype", "download" }, + { "timezone", "0" }, + { "showrows", "50" } + }; + + var rssPage = await PostDataWithCookies(GetRSSKeyUrl, rssParams, result.Cookies); + var match = Regex.Match(rssPage.Content, "(?<=secret_key\\=)([a-zA-z0-9]*)"); + configData.RSSKey.Value = match.Success ? match.Value : string.Empty; + if (string.IsNullOrWhiteSpace(configData.RSSKey.Value)) + throw new Exception("Failed to get RSS Key"); + + await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () => + { + CQ dom = result.Content; + var errorMessage = dom[".left_side table:eq(0) tr:eq(1)"].Text().Trim().Replace("\n\t", " "); + throw new ExceptionWithConfigData(errorMessage, configData); + }); + } + + public async Task> PerformQuery(TorznabQuery query) + { + var releases = new List(); + var searchString = query.SanitizedSearchTerm + " " + query.GetEpisodeSearchString(); + + // If we have no query use the RSS Page as their server is slow enough at times! + if (string.IsNullOrWhiteSpace(searchString)) + { + var rssPage = await RequestStringWithCookiesAndRetry(string.Format(RSSUrl, configData.RSSKey.Value)); + var rssDoc = XDocument.Parse(rssPage.Content); + + foreach (var item in rssDoc.Descendants("item")) + { + var title = item.Descendants("title").First().Value; + var description = item.Descendants("description").First().Value; + var link = item.Descendants("link").First().Value; + var category = item.Descendants("category").First().Value; + var date = item.Descendants("pubDate").First().Value; + + var torrentIdMatch = Regex.Match(link, "(?<=id=)(\\d)*"); + var torrentId = torrentIdMatch.Success ? torrentIdMatch.Value : string.Empty; + if (string.IsNullOrWhiteSpace(torrentId)) + throw new Exception("Missing torrent id"); + + var infoMatch = Regex.Match(description, @"Category:\W(?.*)\W\/\WSeeders:\W(?\d*)\W\/\WLeechers:\W(?\d*)\W\/\WSize:\W(?[\d\.]*\W\S*)"); + if (!infoMatch.Success) + throw new Exception("Unable to find info"); + + var release = new ReleaseInfo() + { + Title = title, + Description = title, + Guid = new Uri(string.Format(DownloadUrl, torrentId)), + Comments = new Uri(string.Format(CommentUrl, torrentId)), + PublishDate = DateTime.ParseExact(date, "yyyy-MM-dd H:mm:ss", CultureInfo.InvariantCulture), //2015-08-08 21:20:31 + Link = new Uri(string.Format(DownloadUrl, torrentId)), + Seeders = ParseUtil.CoerceInt(infoMatch.Groups["seeders"].Value), + Peers = ParseUtil.CoerceInt(infoMatch.Groups["leechers"].Value), + Size = ReleaseInfo.GetBytes(infoMatch.Groups["size"].Value), + Category = MapTrackerCatToNewznab(infoMatch.Groups["cat"].Value) + }; + + // If its not apps or audio we can only mark as general TV + if (release.Category == 0) + release.Category = 5030; + + release.Peers += release.Seeders; + releases.Add(release); + } + } + else + { + var searchParams = new Dictionary { + { "do", "search" }, + { "keywords", searchString }, + { "search_type", "t_name" }, + { "category", "0" }, + { "include_dead_torrents", "no" } + }; + + var searchPage = await PostDataWithCookiesAndRetry(SearchUrl, searchParams); + try + { + CQ dom = searchPage.Content; + var rows = dom["#listtorrents tbody tr"]; + foreach (var row in rows.Skip(1)) + { + var release = new ReleaseInfo(); + var qRow = row.Cq(); + + release.Title = qRow.Find("td:eq(1) .tooltip-content div:eq(0)").Text(); + + if (string.IsNullOrWhiteSpace(release.Title)) + continue; + + release.Description = release.Title; + release.Guid = new Uri(qRow.Find("td:eq(2) a").Attr("href")); + release.Link = release.Guid; + release.Comments = new Uri(qRow.Find("td:eq(1) .tooltip-target a").Attr("href")); + release.PublishDate = DateTime.ParseExact(qRow.Find("td:eq(1) div").Last().Text().Trim(), "dd-MM-yyyy H:mm", CultureInfo.InvariantCulture); //08-08-2015 12:51 + release.Seeders = ParseUtil.CoerceInt(qRow.Find("td:eq(6)").Text()); + release.Peers = release.Seeders + ParseUtil.CoerceInt(qRow.Find("td:eq(7)").Text().Trim()); + release.Size = ReleaseInfo.GetBytes(qRow.Find("td:eq(4)").Text().Trim()); + + + var cat = row.Cq().Find("td:eq(0) a").First().Attr("href"); + var catSplit = cat.LastIndexOf('='); + if (catSplit > -1) + cat = cat.Substring(catSplit + 1); + release.Category = MapTrackerCatToNewznab(cat); + + // If its not apps or audio we can only mark as general TV + if (release.Category == 0) + release.Category = 5030; + + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(searchPage.Content, ex); + } + } + + return releases; + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index f109239cd..aad1e0302 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -191,6 +191,7 @@ + @@ -213,6 +214,7 @@ + @@ -512,6 +514,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/src/Jackett/Models/IndexerConfig/ConfigurationDataBasicLoginWithRSS.cs b/src/Jackett/Models/IndexerConfig/ConfigurationDataBasicLoginWithRSS.cs new file mode 100644 index 000000000..5eede176a --- /dev/null +++ b/src/Jackett/Models/IndexerConfig/ConfigurationDataBasicLoginWithRSS.cs @@ -0,0 +1,23 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Jackett.Models.IndexerConfig +{ + public class ConfigurationDataBasicLoginWithRSS : ConfigurationData + { + public StringItem Username { get; private set; } + public StringItem Password { get; private set; } + public HiddenItem RSSKey { get; private set; } + + public ConfigurationDataBasicLoginWithRSS() + { + Username = new StringItem { Name = "Username" }; + Password = new StringItem { Name = "Password" }; + RSSKey = new HiddenItem { Name = "RSSKey" }; + } + } +}