diff --git a/src/Jackett.Common/Indexers/NCore.cs b/src/Jackett.Common/Indexers/NCore.cs index 5082368aa..997167ffe 100644 --- a/src/Jackett.Common/Indexers/NCore.cs +++ b/src/Jackett.Common/Indexers/NCore.cs @@ -129,90 +129,96 @@ namespace Jackett.Common.Indexers // Check torrents only till we reach the query Limit for(int i=0; (i", " "), CultureInfo.InvariantCulture); - string[] sizeSplit = qRow.Find(".box_meret2").Get(0).InnerText.Split(' '); - release.Size = ReleaseInfo.GetBytes(sizeSplit[1].ToLower(), ParseUtil.CoerceFloat(sizeSplit[0])); - string catlink = qRow.Find("a:has(img[class='categ_link'])").First().Attr("href"); - string cat = ParseUtil.GetArgumentFromQueryString(catlink, "tipus"); - release.Category = MapTrackerCatToNewznab(cat); + CQ qRow = rows[i].Cq(); + var key = dom["link[rel=alternate]"].First().Attr("href").Split('=').Last(); - /* if the release name not contains the language we add it because it is know from category */ - if (cat.Contains("hun") && !release.Title.Contains("hun")) - release.Title += ".hun"; + release = new ReleaseInfo(); + var torrentTxt = qRow.Find(".torrent_txt, .torrent_txt2").Find("a").Get(0); + //if (torrentTxt == null) continue; + release.Title = torrentTxt.GetAttribute("title"); + release.Description = qRow.Find("span").Get(0).GetAttribute("title") + " " + qRow.Find("a.infolink").Text(); - if (seasonep == null) - releases.Add(release); - - else - { - if (query.MatchQueryStringAND(release.Title, null, seasonep)) + release.MinimumRatio = 1; + release.MinimumSeedTime = 172800; + release.DownloadVolumeFactor = 0; + release.UploadVolumeFactor = 1; + + string downloadLink = SiteLink + torrentTxt.GetAttribute("href"); + string downloadId = downloadLink.Substring(downloadLink.IndexOf("&id=") + 4); + + release.Link = new Uri(SiteLink.ToString() + "torrents.php?action=download&id=" + downloadId + "&key=" + key); + release.Comments = new Uri(SiteLink.ToString() + "torrents.php?action=details&id=" + downloadId); + release.Guid = new Uri(release.Comments.ToString() + "#comments"); ; + release.Seeders = ParseUtil.CoerceInt(qRow.Find(".box_s2").Find("a").First().Text()); + release.Peers = ParseUtil.CoerceInt(qRow.Find(".box_l2").Find("a").First().Text()) + release.Seeders; + var imdblink = qRow.Find("a[href*=\".imdb.com/title\"]").Attr("href"); + release.Imdb = ParseUtil.GetLongFromString(imdblink); + var banner = qRow.Find("img.infobar_ico").Attr("onmouseover"); + if (banner != null) { - /* For sonnar if the search querry was english the title must be english also so we need to change the Description and Title */ - var temp = release.Title; - - // releasedata everithing after Name.S0Xe0X - String releasedata =release.Title.Split(new[] { seasonep }, StringSplitOptions.None)[1].Trim(); + Regex BannerRegEx = new Regex(@"mutat\('(.*?)', '", RegexOptions.Compiled); + var BannerMatch = BannerRegEx.Match(banner); + var bannerurl = BannerMatch.Groups[1].Value; + release.BannerUrl = new Uri(bannerurl); + } + release.PublishDate = DateTime.Parse(qRow.Find(".box_feltoltve2").Get(0).InnerHTML.Replace("
", " "), CultureInfo.InvariantCulture); + string[] sizeSplit = qRow.Find(".box_meret2").Get(0).InnerText.Split(' '); + release.Size = ReleaseInfo.GetBytes(sizeSplit[1].ToLower(), ParseUtil.CoerceFloat(sizeSplit[0])); + string catlink = qRow.Find("a:has(img[class='categ_link'])").First().Attr("href"); + string cat = ParseUtil.GetArgumentFromQueryString(catlink, "tipus"); + release.Category = MapTrackerCatToNewznab(cat); - /* if the release name not contains the language we add it because it is know from category */ - if (cat.Contains("hun") && !releasedata.Contains("hun")) - releasedata += ".hun"; + /* if the release name not contains the language we add it because it is know from category */ + if (cat.Contains("hun") && !release.Title.Contains("hun")) + release.Title += ".hun"; - // release description contains [imdb: ****] but we only need the data before it for title - String[] description = {release.Description, ""}; - if (release.Description.Contains("[imdb:")) - { - description = release.Description.Split('['); - description[1] = "[" + description[1]; - } - - release.Title = (description[0].Trim() + "." + seasonep.Trim() + "." + releasedata.Trim('.')).Replace(' ', '.'); - - // if search is done for S0X than we dont want to put . between S0X and E0X - Match match = Regex.Match(releasedata, @"^E\d\d?"); - if (seasonep.Length==3 && match.Success) - release.Title = (description[0].Trim() + "." + seasonep.Trim() + releasedata.Trim('.')).Replace(' ', '.'); - - // add back imdb points to the description [imdb: 8.7] - release.Description = temp+" "+ description[1]; - release.Description = release.Description.Trim(); + if (seasonep == null) releases.Add(release); + + else + { + if (query.MatchQueryStringAND(release.Title, null, seasonep)) + { + /* For sonnar if the search querry was english the title must be english also so we need to change the Description and Title */ + var temp = release.Title; + + // releasedata everithing after Name.S0Xe0X + String releasedata = release.Title.Split(new[] { seasonep }, StringSplitOptions.None)[1].Trim(); + + /* if the release name not contains the language we add it because it is know from category */ + if (cat.Contains("hun") && !releasedata.Contains("hun")) + releasedata += ".hun"; + + // release description contains [imdb: ****] but we only need the data before it for title + String[] description = { release.Description, "" }; + if (release.Description.Contains("[imdb:")) + { + description = release.Description.Split('['); + description[1] = "[" + description[1]; + } + + release.Title = (description[0].Trim() + "." + seasonep.Trim() + "." + releasedata.Trim('.')).Replace(' ', '.'); + + // if search is done for S0X than we dont want to put . between S0X and E0X + Match match = Regex.Match(releasedata, @"^E\d\d?"); + if (seasonep.Length == 3 && match.Success) + release.Title = (description[0].Trim() + "." + seasonep.Trim() + releasedata.Trim('.')).Replace(' ', '.'); + + // add back imdb points to the description [imdb: 8.7] + release.Description = temp + " " + description[1]; + release.Description = release.Description.Trim(); + releases.Add(release); + } } } - + catch (FormatException ex) + { + logger.Error("Problem of parsing Torrent:" + rows[i].InnerHTML); + logger.Error("Exception was the following:" + ex); + } } } catch (Exception ex)