From fd9c79e2894f3a291f782a371e7ae178befaf3e7 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 25 Jul 2015 20:33:01 -0600 Subject: [PATCH] Implemented pretome --- README.md | 1 + src/Jackett/Content/logos/pretome.png | Bin 0 -> 35007 bytes src/Jackett/Indexers/Pretome.cs | 190 ++++++++++++++++++++++++++ src/Jackett/Jackett.csproj | 4 + src/Jackett/Models/ReleaseInfo.cs | 35 +++-- 5 files changed, 215 insertions(+), 15 deletions(-) create mode 100644 src/Jackett/Content/logos/pretome.png create mode 100644 src/Jackett/Indexers/Pretome.cs diff --git a/README.md b/README.md index d47f84ea6..7b0d97a18 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ Download in the [Releases page](https://github.com/zone117x/Jackett/releases) * [HD-Torrents.org](https://hd-torrents.org/) * [IPTorrents](https://iptorrents.com/) * [MoreThan.tv](https://morethan.tv/) + * [pretome](https://pretome.info) * [PrivateHD](https://privatehd.to/) * [RARBG](https://rarbg.com) * [SceneAccess](https://sceneaccess.eu/login) diff --git a/src/Jackett/Content/logos/pretome.png b/src/Jackett/Content/logos/pretome.png new file mode 100644 index 0000000000000000000000000000000000000000..549abe9258afa0d9e20a6d0b065349072880b8d6 GIT binary patch literal 35007 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 IM6N<$g2t>EFaQ7m literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/Pretome.cs b/src/Jackett/Indexers/Pretome.cs new file mode 100644 index 000000000..be1acc50e --- /dev/null +++ b/src/Jackett/Indexers/Pretome.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Jackett.Models; +using Newtonsoft.Json.Linq; +using Jackett.Utils.Clients; +using Jackett.Services; +using NLog; +using Jackett.Utils; +using CsQuery; +using System.Web; + +namespace Jackett.Indexers +{ + public class Pretome : BaseIndexer, IIndexer + { + + class PretomeConfiguration : ConfigurationDataBasicLogin + { + public StringItem Pin { get; private set; } + + public PretomeConfiguration() : base() + { + Pin = new StringItem { Name = "Login Pin Number" }; + } + + public override Item[] GetItems() + { + return new Item[] { Pin, Username, Password }; + } + + } + + private readonly string LoginUrl = ""; + private readonly string LoginReferer = ""; + private readonly string SearchUrl = ""; + private string cookieHeader = ""; + + private IWebClient webclient; + + public Pretome(IIndexerManagerService i, IWebClient wc, Logger l) + : base(name: "PrivateHD", + description: "BitTorrent site for High Quality, High Definition (HD) movies and TV Shows", + link: new Uri("https://pretome.info"), + caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(), + manager: i, + logger: l) + { + LoginUrl = SiteLink + "takelogin.php"; + LoginReferer = SiteLink + "index.php?cat=1"; + SearchUrl = SiteLink + "browse.php?tags=&st=1&tf=all&cat%5B%5D=7&search={0}"; + webclient = wc; + } + + public Task GetConfigurationForSetup() + { + var config = new PretomeConfiguration(); + return Task.FromResult(config); + } + + public async Task ApplyConfiguration(JToken configJson) + { + var config = new PretomeConfiguration(); + config.LoadValuesFromJson(configJson); + + var loginPage = await webclient.GetString(new WebRequest() + { + Url = LoginUrl, + Type = RequestType.GET + }); + + var pairs = new Dictionary { + { "returnto", "%2F" }, + { "login_pin", config.Pin.Value }, + { "username", config.Username.Value }, + { "password", config.Password.Value }, + { "login", "Login" } + }; + + + // Send Post + var loginPost = await webclient.GetString(new WebRequest() + { + Url = LoginUrl, + PostData = pairs, + Referer = LoginReferer, + Type = RequestType.POST, + Cookies = loginPage.Cookies + }); + + if (loginPost.RedirectingTo == null) + { + throw new ExceptionWithConfigData("Login failed. Did you use the PIN number that pretome emailed you?", (ConfigurationData)config); + } + + // Get result from redirect + var loginResult = await webclient.GetString(new WebRequest() + { + Url = loginPost.RedirectingTo, + Type = RequestType.GET, + Cookies = loginPost.Cookies + }); + + if (!loginResult.Content.Contains("logout.php")) + { + throw new ExceptionWithConfigData("Failed", (ConfigurationData)config); + } + else + { + cookieHeader = loginPost.Cookies; + var configSaveData = new JObject(); + configSaveData["cookies"] = cookieHeader; + SaveConfig(configSaveData); + IsConfigured = true; + } + } + + public void LoadFromSavedConfiguration(JToken jsonConfig) + { + cookieHeader = (string)jsonConfig["cookies"]; + IsConfigured = true; + } + + public async Task Download(Uri link) + { + var response = await webclient.GetBytes(new WebRequest() + { + Url = link.ToString(), + Cookies = cookieHeader + }); + return response.Content; + } + + public async Task PerformQuery(TorznabQuery query) + { + List releases = new List(); + + var searchString = query.SanitizedSearchTerm + " " + query.GetEpisodeSearchString(); + var episodeSearchUrl = string.Format(SearchUrl, HttpUtility.UrlEncode(searchString)); + + var response = await webclient.GetString(new WebRequest() + { + Url = episodeSearchUrl, + Referer = SiteLink.ToString(), + Cookies = cookieHeader + }); + var results = response.Content; + + try + { + CQ dom = results; + var rows = dom["table > tbody > tr.browse"]; + foreach (var row in rows) + { + CQ qRow = row.Cq(); + var release = new ReleaseInfo(); + + release.MinimumRatio = 1; + release.MinimumSeedTime = 172800; + + var qLink = row.ChildElements.ElementAt(1).Cq().Find("a").First(); + release.Title = qLink.Text().Trim(); + release.Comments = new Uri(SiteLink + qLink.Attr("href")); + release.Guid = release.Comments; + + var qDownload = row.ChildElements.ElementAt(2).Cq().Find("a").First(); + release.Link = new Uri(SiteLink + qDownload.Attr("href")); + + var dateStr = row.ChildElements.ElementAt(5).Cq().Text(); + release.PublishDate = DateTimeUtil.FromTimeAgo(dateStr); + + var sizeStr = row.ChildElements.ElementAt(7).Cq().Text(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(9).InnerText); + release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(10).InnerText) + release.Seeders; + + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(results, ex); + } + return releases.ToArray(); + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 5ec664aa1..94e683c77 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -158,6 +158,7 @@ + @@ -292,6 +293,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/src/Jackett/Models/ReleaseInfo.cs b/src/Jackett/Models/ReleaseInfo.cs index b81d810e7..a12dac0bf 100644 --- a/src/Jackett/Models/ReleaseInfo.cs +++ b/src/Jackett/Models/ReleaseInfo.cs @@ -1,7 +1,9 @@ -using System; +using Jackett.Utils; +using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Jackett.Models @@ -53,22 +55,25 @@ namespace Jackett.Models }; } + // ex: " 3.5 gb " + public static long GetBytes(string str) + { + var valStr = new string(str.Where(c => char.IsDigit(c) || c == '.').ToArray()); + var unit = new string(str.Where(char.IsLetter).ToArray()); + var val = ParseUtil.CoerceFloat(valStr); + return GetBytes(unit, val); + } + public static long GetBytes(string unit, float value) { - switch (unit.ToLower()) - { - case "kb": - case "kib": - return BytesFromKB(value); - case "mb": - case "mib": - return BytesFromMB(value); - case "gb": - case "gib": - return BytesFromGB(value); - default: - return 0; - } + unit = unit.Replace("i", "").ToLowerInvariant(); + if (unit.Contains("kb")) + return BytesFromKB(value); + if (unit.Contains("mb")) + return BytesFromMB(value); + if (unit.Contains("gb")) + return BytesFromGB(value); + return 0; } public static long BytesFromGB(float gb)