From 8be7d57d50d631466476026eb027528ecddbadb5 Mon Sep 17 00:00:00 2001 From: Kantraz Date: Fri, 9 Oct 2015 11:34:32 +0200 Subject: [PATCH] Added new indexer - Hounddawgs.org Added new indexer for Danish private tracker Hounddawgs It needs to be implemented, can't setup indexer? --- src/Jackett/Content/logos/hounddawgs.png | Bin 0 -> 7317 bytes src/Jackett/Indexers/Hounddawgs.cs | 125 +++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 src/Jackett/Content/logos/hounddawgs.png create mode 100644 src/Jackett/Indexers/Hounddawgs.cs diff --git a/src/Jackett/Content/logos/hounddawgs.png b/src/Jackett/Content/logos/hounddawgs.png new file mode 100644 index 0000000000000000000000000000000000000000..c170e5e18d8b1f2ceb3c466da24c342cca88ed39 GIT binary patch literal 7317 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 literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/Hounddawgs.cs b/src/Jackett/Indexers/Hounddawgs.cs new file mode 100644 index 000000000..76bf643d6 --- /dev/null +++ b/src/Jackett/Indexers/Hounddawgs.cs @@ -0,0 +1,125 @@ +using CsQuery; +using Jackett.Indexers; +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.Globalization; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.UI.WebControls; +using Jackett.Models.IndexerConfig; + +namespace Jackett.Indexers +{ + public class Hounddawgs : BaseIndexer, IIndexer + { + private string LoginUrl { get { return SiteLink + "login.php"; } } + private string SearchUrl { get { return SiteLink + "torrents.php"; } } + + new ConfigurationDataBasicLogin configData + { + get { return (ConfigurationDataBasicLogin)base.configData; } + set { base.configData = value; } + } + + public Hounddawgs(IIndexerManagerService i, Logger l, IWebClient c, IProtectionService ps) + : base(name: "Hounddawgs", + description: "A danish closed torrent tracker", + link: "https://hounddawgs.org/", + caps: TorznabUtil.CreateDefaultTorznabTVCaps(), + manager: i, + client: c, + logger: l, + p: ps, + configData: new ConfigurationDataBasicLogin()) + { + } + + public async Task ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + var pairs = new Dictionary { + { "username", configData.Username.Value }, + { "password", configData.Password.Value }, + { "Submit", "Submit" } + + }; + // Get inital cookies + var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl); + + await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("Velkommen til vores seneste bruger"), () => + { + CQ dom = response.Content; + var messageEl = dom["inputs"]; + var errorMessage = messageEl.Text().Trim(); + throw new ExceptionWithConfigData(errorMessage, configData); + }); + return IndexerConfigurationStatus.RequiresTesting; + } + + public async Task> PerformQuery(TorznabQuery query) + { + var releases = new List(); + var episodeSearchUrl = string.Format("{0}?&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.GetQueryString())); + var results = await RequestStringWithCookiesAndRetry(episodeSearchUrl); + if (results.Content.Contains("Din søgning gav intet resultat.")) + { + return releases; + } + try + { + CQ dom = results.Content; + + var rows = dom["#torrent_table > tbody > tr"].ToArray(); + + foreach (var row in rows.Skip(1)) + { + var release = new ReleaseInfo(); + release.MinimumRatio = 1; + release.MinimumSeedTime = 172800; + + release.PublishDate = DateTime.Now; + +// var qAdded = row.ChildElements.ElementAt(4).Cq(); +// var addedStr = qAdded.Attr("title").Trim(); +// //var addedStr = "Oct 02 2015, 03:55"; +// //release.PublishDate = DateTime.ParseExact(addedStr, "MMM dd yyyy, HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime(); + + var qLink = row.ChildElements.ElementAt(1).ChildElements.ElementAt(2).Cq(); + release.Title = qLink.Text().Trim(); + release.Description = release.Title; + + release.Comments = new Uri(SiteLink + qLink.Attr("href")); + release.Guid = release.Comments; + + var qDownload = row.ChildElements.ElementAt(1).ChildElements.ElementAt(1).ChildElements.ElementAt(0).Cq(); + release.Link = new Uri(SiteLink + qDownload.Attr("href")); + + var sizeStr = row.ChildElements.ElementAt(5).Cq().Text(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(6).Cq().Text()); + release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(7).Cq().Text()) + release.Seeders; + + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(results.Content, ex); + } + + return releases; + } + } +}