diff --git a/src/Jackett.Common/Definitions/ilcorsaroblu.yml b/src/Jackett.Common/Definitions/ilcorsaroblu.yml index 2bf565ff5..865a785dc 100644 --- a/src/Jackett.Common/Definitions/ilcorsaroblu.yml +++ b/src/Jackett.Common/Definitions/ilcorsaroblu.yml @@ -144,18 +144,18 @@ - name: regexp args: "src=(.+?) " size: - selector: td:nth-child(10) + selector: td:nth-child(9) date: - selector: td:nth-child(6) + selector: td:nth-child(5) filters: - name: dateparse args: "02/01/2006" grabs: - selector: td:nth-child(9) + selector: td:nth-child(8) filters: - name: replace args: ["---", "0"] seeders: - selector: td:nth-child(7) + selector: td:nth-child(6) leechers: - selector: td:nth-child(8) + selector: td:nth-child(7) diff --git a/src/Jackett.Common/Indexers/NCore.cs b/src/Jackett.Common/Indexers/NCore.cs index 0fda6890e..97201461f 100644 --- a/src/Jackett.Common/Indexers/NCore.cs +++ b/src/Jackett.Common/Indexers/NCore.cs @@ -117,45 +117,9 @@ namespace Jackett.Common.Indexers return IndexerConfigurationStatus.RequiresTesting; } - protected async Task> PerformQuery(TorznabQuery query, String seasonep) + List parseTorrents(WebClientStringResult results, String seasonep, TorznabQuery query, int already_founded) { var releases = new List(); - var searchString = query.GetQueryString(); - var pairs = new List>(); - - if (seasonep != null) - { - searchString = query.SanitizedSearchTerm; - } - - pairs.Add(new KeyValuePair("nyit_sorozat_resz", "true")); - pairs.Add(new KeyValuePair("miben", "name")); - pairs.Add(new KeyValuePair("tipus", "kivalasztottak_kozott")); - pairs.Add(new KeyValuePair("submit.x", "1")); - pairs.Add(new KeyValuePair("submit.y", "1")); - pairs.Add(new KeyValuePair("submit", "Ok")); - pairs.Add(new KeyValuePair("mire", searchString)); - - var cats = MapTorznabCapsToTrackers(query); - - if (cats.Count == 0) - cats = GetAllTrackerCategories(); - - foreach (var lcat in LanguageCats) - { - if (!configData.Hungarian.Value) - cats.Remove(lcat + "_hun"); - if (!configData.English.Value) - cats.Remove(lcat); - } - - foreach (var cat in cats) - { - pairs.Add(new KeyValuePair("kivalasztott_tipus[]", cat)); - } - - var results = await PostDataWithCookiesAndRetry(SearchUrl, pairs); - try { CQ dom = results.Content; @@ -163,9 +127,10 @@ namespace Jackett.Common.Indexers ReleaseInfo release; var rows = dom[".box_torrent_all"].Find(".box_torrent"); - foreach (var row in rows) + // Check torrents only till we reach the query Limit + for(int i=0; (i> PerformQuery(TorznabQuery query, String seasonep) + { + var releases = new List(); + var searchString = query.GetQueryString(); + var pairs = new List>(); + + if (seasonep != null) + { + searchString = query.SanitizedSearchTerm; + } + + pairs.Add(new KeyValuePair("nyit_sorozat_resz", "true")); + pairs.Add(new KeyValuePair("miben", "name")); + pairs.Add(new KeyValuePair("tipus", "kivalasztottak_kozott")); + pairs.Add(new KeyValuePair("submit.x", "1")); + pairs.Add(new KeyValuePair("submit.y", "1")); + pairs.Add(new KeyValuePair("submit", "Ok")); + pairs.Add(new KeyValuePair("mire", searchString)); + + var cats = MapTorznabCapsToTrackers(query); + + if (cats.Count == 0) + cats = GetAllTrackerCategories(); + + foreach (var lcat in LanguageCats) + { + if (!configData.Hungarian.Value) + cats.Remove(lcat + "_hun"); + if (!configData.English.Value) + cats.Remove(lcat); + } + + foreach (var cat in cats) + { + pairs.Add(new KeyValuePair("kivalasztott_tipus[]", cat)); + } + + var results = await PostDataWithCookiesAndRetry(SearchUrl, pairs); + + + CQ dom = results.Content; + int numVal = 0; + + // find pagelinks in the bottom + var pagelinks = dom["div[id=pager_bottom]"].Find("a"); + if (pagelinks.Length > 0) + { + // If there are several pages find the link for the latest one + var last_page_link = (pagelinks[pagelinks.Length - 1].Cq().Attr("href")).Trim(); + + // find out the number of the last page from the link + Match match = Regex.Match(last_page_link, @"(?<=[\?,&]oldal=)(\d+)(?=&)"); + numVal = Int32.Parse(match.Value); + } + + releases = parseTorrents(results, seasonep, query, releases.Count); + + // Check all the pages for the torrents. + // The starting index is 2. (the first one is the original where we parse out the pages.) + for (int i=2; (i<= numVal && releases.Count < query.Limit); i++ ) + { + pairs.Add(new KeyValuePair("oldal", i.ToString())); + results = await PostDataWithCookiesAndRetry(SearchUrl, pairs); + releases.AddRange(parseTorrents(results, seasonep, query, releases.Count)); + pairs.Remove(new KeyValuePair("oldal", i.ToString())); + } + + return releases; + } + protected override async Task> PerformQuery(TorznabQuery query) { var results = await PerformQuery(query, null);