From 605c6bcadad7ee0a789a790c496ed7ea392e1221 Mon Sep 17 00:00:00 2001 From: halali Date: Fri, 22 Sep 2017 08:02:03 +0200 Subject: [PATCH] Trezzor: Convert to cardigan (#1860) * Convert Trezzor to cardigan * Change encoding --- src/Jackett/Definitions/trezzor.yml | 113 +++++++++++++++ src/Jackett/Indexers/Trezzor.cs | 217 ---------------------------- src/Jackett/Jackett.csproj | 1 - 3 files changed, 113 insertions(+), 218 deletions(-) create mode 100644 src/Jackett/Definitions/trezzor.yml delete mode 100644 src/Jackett/Indexers/Trezzor.cs diff --git a/src/Jackett/Definitions/trezzor.yml b/src/Jackett/Definitions/trezzor.yml new file mode 100644 index 000000000..d85cc0cca --- /dev/null +++ b/src/Jackett/Definitions/trezzor.yml @@ -0,0 +1,113 @@ + site: trezzor + name: Trezzor + language: cs-cz + type: private + encoding: windows-1250 + links: + - https://tracker.czech-server.com/ + + caps: + categorymappings: + - {id: 1, cat: Movies/DVD, desc: "DVD CZ/SK dabing"} + - {id: 2, cat: Movies/DVD, desc: "DVD CZ/SK titulky"} + - {id: 3, cat: Audio/Video, desc: "DVD Hudební video"} + - {id: 4, cat: Movies/SD, desc: "XviD, DivX CZ/SK dabing"} + - {id: 13, cat: Audio, desc: "Hudba CZ/SK scéna"} + - {id: 24, cat: Audio, desc: "Mluv. slovo CZ/SK dabing"} + - {id: 10, cat: Audio/Other, desc: "DTS audio"} + - {id: 14, cat: PC/Games, desc: "Hry"} + - {id: 17, cat: PC, desc: "Programy"} + - {id: 14, cat: PC, desc: "Cestiny,patche,upgrady"} + - {id: 18, cat: Books, desc: "Knihy CZ/SK lokalizace"} + - {id: 18, cat: Books/Comics, desc: "Komiks CZ/SK lokalizace"} + - {id: 16, cat: Other, desc: "Foto,obrázky"} + - {id: 20, cat: Console, desc: "Konzole"} + - {id: 21, cat: PC/Phone-Other, desc: "Mobilmánia"} + - {id: 22, cat: Other, desc: "Ostatní CZ/SK scéna"} + - {id: 23, cat: Other, desc: "Na prani non CZ/SK"} + - {id: 27, cat: Other, desc: "TreZzoR rls"} + - {id: 35, cat: Audio/Video, desc: "HDTV Hudební video"} + - {id: 36, cat: Movies/SD, desc: "XviD, DivX CZ/SK titulky"} + - {id: 31, cat: Movies/HD, desc: "HDTV CZ/SK Dabing"} + - {id: 33, cat: Movies/HD, desc: "HDTV CZ/SK Titulky"} + - {id: 39, cat: Movies/3D, desc: "3D HDTV CZ/SK Dabing"} + - {id: 40, cat: Movies/3D, desc: "3D HDTV CZ/SK Titulky"} + - {id: 5, cat: Movies/SD, desc: "TV-rip CZ/SK dabing"} + - {id: 41, cat: TV/HD, desc: "HD Seriály CZ/SK dabing"} + - {id: 42, cat: TV/HD, desc: "HD Seriály CZ/SK titulky"} + - {id: 7, cat: TV/SD, desc: "Seriály CZ/SK dabing"} + - {id: 37, cat: TV/SD, desc: "Seriály CZ/SK titulky"} + - {id: 9, cat: XXX/XviD, desc: "XXX CZ/SK dabing"} + - {id: 32, cat: XXX/x264, desc: "XXX HD CZ/SK dabing"} + - {id: 27, cat: Other, desc: "TreZzoR rls"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + + login: + path: prihlasenie.php + method: form + form: form[action^="prihlasenie.php"] + inputs: + uid: "{{ .Config.username }}" + pwd: "{{ .Config.password }}" + error: + - selector: div > font:contains("V pripade problemov kontaktujte") + test: + path: torrents.php + + search: + path: torrents.php + inputs: + search: "{{ .Keywords }}" + category: "0" + active: "1" + rows: + selector: tr.torrenty_lista + fields: + title: + selector: a[href^="details.php?id="] +# attribute: title + filters: + - name: re_replace + args: [".*? / ", ""] + - name: diacritics + args: replace + category: + selector: a[href^="torrents.php?onlycat="] + attribute: href + filters: + - name: querystring + args: onlycat + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + size: + selector: td:nth-child(7) + date: + selector: td:nth-child(6) + filters: + - name: append + args: " +02:00" + - name: dateparse + args: "2/1/2006 15:04 -07:00" + seeders: + selector: td:nth-child(8) a + leechers: + selector: td:nth-child(9) a + grabs: + selector: td:nth-child(10) + filters: + - name: replace + args: ["---", "0"] + downloadvolumefactor: + case: + "*": "1" + uploadvolumefactor: + case: + "*": "1" \ No newline at end of file diff --git a/src/Jackett/Indexers/Trezzor.cs b/src/Jackett/Indexers/Trezzor.cs deleted file mode 100644 index b555a7aca..000000000 --- a/src/Jackett/Indexers/Trezzor.cs +++ /dev/null @@ -1,217 +0,0 @@ -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; - -namespace Jackett.Indexers -{ - public class Trezzor : BaseWebIndexer - { - string LoginUrl { get { return SiteLink + "prihlasenie.php"; } } - private string SearchUrl { get { return SiteLink + "torrents.php?"; } } - - - new ConfigurationDataBasicLogin configData - { - get { return (ConfigurationDataBasicLogin)base.configData; } - set { base.configData = value; } - } - - public Trezzor(IIndexerConfigurationService configService, IWebClient wc, Logger l, IProtectionService ps) - : base(name: "Trezzor", - description: "SK/CZ Tracker.", - link: "https://tracker.czech-server.com/", - caps: new TorznabCapabilities(), - configService: configService, - client: wc, - logger: l, - p: ps, - configData: new ConfigurationDataBasicLogin()) - { - Encoding = Encoding.GetEncoding("windows-1250"); - Language = "cs-cz"; - Type = "private"; - - AddCategoryMapping(1, TorznabCatType.MoviesDVD, "DVD CZ/SK dabing"); - AddCategoryMapping(2, TorznabCatType.MoviesDVD, "DVD CZ/SK titulky"); - AddCategoryMapping(3, TorznabCatType.AudioVideo, "DVD Hudební video"); - AddCategoryMapping(4, TorznabCatType.MoviesSD, "XviD, DivX CZ/SK dabing"); - AddCategoryMapping(13, TorznabCatType.Audio, "Hudba CZ/SK scéna"); - AddCategoryMapping(24, TorznabCatType.Audio, "Mluv. slovo CZ/SK dabing"); - AddCategoryMapping(10, TorznabCatType.AudioOther, "DTS audio"); - AddCategoryMapping(14, TorznabCatType.PCGames, "Hry"); - AddCategoryMapping(17, TorznabCatType.PC, "Programy"); - AddCategoryMapping(14, TorznabCatType.PC, "Cestiny,patche,upgrady"); - AddCategoryMapping(18, TorznabCatType.Books, "Knihy CZ/SK lokalizace"); - AddCategoryMapping(18, TorznabCatType.BooksComics, "Komiks CZ/SK lokalizace"); - AddCategoryMapping(16, TorznabCatType.Other, "Foto,obrázky"); - AddCategoryMapping(20, TorznabCatType.Console, "Konzole"); - AddCategoryMapping(21, TorznabCatType.PCPhoneOther, "Mobilmánia"); - AddCategoryMapping(22, TorznabCatType.Other, "Ostatní CZ/SK scéna"); - AddCategoryMapping(23, TorznabCatType.Other, "Na prani non CZ/SK"); - AddCategoryMapping(27, TorznabCatType.Other, "TreZzoR rls"); - AddCategoryMapping(35, TorznabCatType.AudioVideo, "HDTV Hudební video"); - AddCategoryMapping(36, TorznabCatType.MoviesSD, "XviD, DivX CZ/SK titulky"); - AddCategoryMapping(31, TorznabCatType.MoviesHD, "HDTV CZ/SK Dabing"); - AddCategoryMapping(33, TorznabCatType.MoviesHD, "HDTV CZ/SK Titulky"); - AddCategoryMapping(39, TorznabCatType.Movies3D, "3D HDTV CZ/SK Dabing"); - AddCategoryMapping(40, TorznabCatType.Movies3D, "3D HDTV CZ/SK Titulky"); - AddCategoryMapping(5, TorznabCatType.MoviesSD, "TV-rip CZ/SK dabing"); - - AddCategoryMapping(41, TorznabCatType.TVHD, "HD Seriály CZ/SK dabing"); - AddCategoryMapping(42, TorznabCatType.TVHD, "HD Seriály CZ/SK titulky"); - AddCategoryMapping(7, TorznabCatType.TVSD, "Seriály CZ/SK dabing"); - AddCategoryMapping(37, TorznabCatType.TVSD, "Seriály CZ/SK titulky"); - - AddCategoryMapping(9, TorznabCatType.XXXXviD, "XXX CZ/SK dabing"); - AddCategoryMapping(32, TorznabCatType.XXXx264, "XXX HD CZ/SK dabing"); - AddCategoryMapping(27, TorznabCatType.Other, "TreZzoR rls"); - - } - - public override async Task ApplyConfiguration(JToken configJson) - { - LoadValuesFromJson(configJson); - - var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty); - - var pairs = new Dictionary { - { "uid", configData.Username.Value }, - { "pwd", configData.Password.Value } - }; - - var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl); - - await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("If your browser doesn't have javascript enabled"), () => - { - var errorMessage = "Couldn't login"; - throw new ExceptionWithConfigData(errorMessage, configData); - }); - return IndexerConfigurationStatus.RequiresTesting; - } - - protected override async Task> PerformQuery(TorznabQuery query) - { - var releases = new List(); - var searchurls = new List(); - var searchUrl = SearchUrl; - var queryCollection = new NameValueCollection(); - var searchString = query.GetQueryString(); - - - // assign category only if one cat is required, otherwise search in whole tracker (tracker has ability to search only in one category or in everything) - var _cats = MapTorznabCapsToTrackers(query); - if (_cats.Count == 1) searchUrl += "category=" + _cats.First() + "&"; - - - - if (!string.IsNullOrWhiteSpace(searchString)) - { - queryCollection.Add("search", searchString); - } - - - - queryCollection.Add("active", "1"); - - searchUrl += queryCollection.GetQueryString().Replace("(", "%28").Replace(")", "%29"); // maually url encode brackets to prevent "hacking" detection - - - var results = await RequestStringWithCookiesAndRetry(searchUrl); - - // Check for being logged out - if (results.IsRedirect) - if (results.RedirectingTo.Contains("prihlasenie.php")) - throw new ExceptionWithConfigData("Login failed, please reconfigure the tracker to update the cookies", configData); - else - throw new ExceptionWithConfigData(string.Format("Got a redirect to {0}, please adjust your the alternative link", results.RedirectingTo), configData); - - if (results.Content.Contains("prihlasenie.php")) throw new ExceptionWithConfigData("Login failed, please reconfigure the tracker to update the cookies", configData); - - try - { - CQ dom = results.Content; - ReleaseInfo release; - - var rows = dom[".torrenty_lista"]; - foreach (var row in rows) - { - CQ qRow = row.Cq(); - - release = new ReleaseInfo(); - - string _cat = qRow.Find("td").Get(0).FirstChild.GetAttribute("href"); - string _catName = qRow.Find("td a img").Get(0).GetAttribute("alt"); - int _from = _cat.IndexOf("="); - _cat = _cat.Substring(_from + 1); - - // filter results from categories, that were not requested - if ((_cats.Count > 1) && (!_cats.Contains(_cat))) continue; - release.Category = MapTrackerCatToNewznab(_cat); - - string _guid = qRow.Find("td").Get(1).FirstChild.GetAttribute("href"); - release.Guid = new Uri(SiteLink + _guid); - - string _title = qRow.Find("td").Get(1).FirstChild.InnerText; - release.Title = _title + " [" + _catName + "]"; - - string _commentsLink = qRow.Find("td").Get(2).FirstChild.GetAttribute("href"); - release.Comments = new Uri(SiteLink + _guid); - - string _downloadLink = qRow.Find("td").Get(3).FirstChild.GetAttribute("href"); - release.Link = new Uri(SiteLink + _downloadLink); - - string _publishDate = qRow.Find("td").Get(5).InnerText; - DateTime _parsed; - DateTime.TryParse(_publishDate, out _parsed); - release.PublishDate = _parsed; - - string _size = qRow.Find("td").Get(6).InnerText; - release.Size = ReleaseInfo.GetBytes(_size); - - string _seeds = qRow.Find("td").Get(7).FirstChild.InnerText; - string _leechs = qRow.Find("td").Get(8).FirstChild.InnerText; - int seeders, peers; - if (ParseUtil.TryCoerceInt(_seeds, out seeders)) - { - release.Seeders = seeders; - if (ParseUtil.TryCoerceInt(_leechs, out peers)) - { - release.Peers = peers + release.Seeders; - } - } - - release.MinimumRatio = 1; - release.MinimumSeedTime = 172800; - - release.UploadVolumeFactor = 1; - - if (release.Title.Contains("FREELEECH")) release.DownloadVolumeFactor = 0; - else release.DownloadVolumeFactor = 1; - - releases.Add(release); - } - } - catch (Exception ex) - { - OnParseError(results.Content, ex); - } - - return releases; - } - } -} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 9d6ae58f3..fc4b03502 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -201,7 +201,6 @@ -