From 491d6722e19a2dc6d9b9ffd4701935d73c47cdd9 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 31 Jul 2015 21:17:56 +0200 Subject: [PATCH 1/2] merge merge --- src/Jackett/Content/logos/ncore.png | Bin 0 -> 10771 bytes src/Jackett/Indexers/nCore.cs | 182 +++++++++++++++++++ src/Jackett/Models/ConfigurationDatanCore.cs | 67 +++++++ 3 files changed, 249 insertions(+) create mode 100644 src/Jackett/Content/logos/ncore.png create mode 100644 src/Jackett/Indexers/nCore.cs create mode 100644 src/Jackett/Models/ConfigurationDatanCore.cs diff --git a/src/Jackett/Content/logos/ncore.png b/src/Jackett/Content/logos/ncore.png new file mode 100644 index 0000000000000000000000000000000000000000..052c1d667e46aaf55df83ee99d52a5645e407b71 GIT binary patch literal 10771 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 literal 0 HcmV?d00001 diff --git a/src/Jackett/Indexers/nCore.cs b/src/Jackett/Indexers/nCore.cs new file mode 100644 index 000000000..11e3d0092 --- /dev/null +++ b/src/Jackett/Indexers/nCore.cs @@ -0,0 +1,182 @@ +using CsQuery; +using Jackett.Models; +using Jackett.Services; +using Jackett.Utils; +using Jackett.Utils.Clients; +using Newtonsoft.Json; +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.Text; +using System.Threading.Tasks; +using System.Web; + +namespace Jackett.Indexers +{ + public class nCore : BaseIndexer, IIndexer + { + private string SearchUrl = "https://ncore.cc/torrents.php"; + private static string LoginUrl = "https://ncore.cc/login.php"; + private readonly string LoggedInUrl = "https://ncore.cc/index.php"; + //private string cookieHeader = ""; + private JToken configData = null; + + private readonly string enSearch = "torrents.php?oldal=1&tipus=kivalasztottak_kozott&kivalasztott_tipus=xvidser,dvdser,hdser&mire={0}&miben=name"; + private readonly string hunSearch = "torrents.php?oldal=1&tipus=kivalasztottak_kozott&kivalasztott_tipus=xvidser_hun,dvdser_hun,hdser_hun,mire={0}&miben=name"; + private readonly string enHunSearch = "torrents.php?oldal=1&tipus=kivalasztottak_kozott&kivalasztott_tipus=xvidser_hun,xvidser,dvdser_hun,dvdser,hdser_hun,hdser&mire={0}&miben=name"; + + private string SearchUrlEn { get { return SiteLink.ToString() + enSearch; } } + private string SearchUrlHun { get { return SiteLink.ToString() + hunSearch; } } + private string SearchUrlEnHun { get { return SiteLink.ToString() + enHunSearch; } } + + + public nCore(IIndexerManagerService i, IWebClient wc, Logger l) + : base(name: "nCore", + description: "A Hungarian private torrent site.", + link: "https://ncore.cc/", + caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(), + manager: i, + client:wc, + logger: l) + { + SearchUrl = SearchUrlEnHun; + //webclient = wc; + } + + public Task GetConfigurationForSetup() + { + var config = configData == null ? new ConfigurationDatanCore() : new ConfigurationDatanCore(configData); + return Task.FromResult(new ConfigurationDatanCore(configData)); + } + + public async Task ApplyConfiguration(JToken configJson) + { + var config = new ConfigurationDatanCore(); + config.LoadValuesFromJson(configJson); + + if (config.Hungarian.Value == false && config.English.Value == false) + throw new ExceptionWithConfigData("Please select atleast one language.", (ConfigurationData)config); + + var pairs = new Dictionary { + { "nev", config.Username.Value }, + { "pass", config.Password.Value }, + {"ne_leptessen_ki", "on"} + }; + + var response = await webclient.GetString(new Utils.Clients.WebRequest() + { + Url = LoginUrl, + PostData = pairs, + Referer = SiteLink.ToString(), + Type = RequestType.POST, + }); + + if (!response.RedirectingTo.Equals("index.php")) + { + var errorMessage = "Couldn't login"; + throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config); + } + else + { + var configSaveData = new JObject(); + cookieHeader = response.Cookies; + + cookieHeader = cookieHeader.Substring(0, cookieHeader.IndexOf(' ') - 1) + ";stilus=brutecore; nyelv=hu"; + configSaveData["cookies"] = cookieHeader; + configSaveData["config"] = configData = config.ToJson(); + SaveConfig(configSaveData); + IsConfigured = true; + } + } + + 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 Utils.Clients.WebRequest() + //{ + // Url = episodeSearchUrl, + // Cookies = cookieHeader, + // Referer = SiteLink.ToString(), + //}); + + // var results = response.Content; + var results= ""; + try + { + CQ dom = results; + + ReleaseInfo release; + var rows = dom[".box_torrent_all"].Find(".box_torrent"); + + foreach (var row in rows) + { + CQ qRow = row.Cq(); + + release = new ReleaseInfo(); + var torrentTxt = qRow.Find(".torrent_txt").Find("a").Get(0); + if (torrentTxt == null) continue; + release.Title = torrentTxt.GetAttribute("title"); + release.Description = release.Title; + release.MinimumRatio = 1; + release.MinimumSeedTime = 172800; + + 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); + 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; + 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])); + + releases.Add(release); + } + } + catch (Exception ex) + { + //OnParseError(response.Content, ex); + } + + + return releases.ToArray(); + } + + //public void LoadFromSavedConfiguration(JToken jsonConfig) + //{ + // if (jsonConfig["config"] != null) + // { + // string hun, eng; + // Dictionary[] configDictionary = JsonConvert.DeserializeObject[]>(jsonConfig["config"].ToString()); + // configDictionary[2].TryGetValue("value", out hun); + // configDictionary[3].TryGetValue("value", out eng); + + // bool isHun = Boolean.Parse(hun); + // bool isEng = Boolean.Parse(eng); + + // if (isHun && isEng) + // SearchUrl = SearchUrlEnHun; + // else if (isHun && !isEng) + // SearchUrl = SearchUrlHun; + // else if (!isHun && isEng) + // SearchUrl = SearchUrlEn; + + // configData = jsonConfig["config"]; + // } + // cookieHeader = (string)jsonConfig["cookies"]; + // IsConfigured = true; + //} + + } +} \ No newline at end of file diff --git a/src/Jackett/Models/ConfigurationDatanCore.cs b/src/Jackett/Models/ConfigurationDatanCore.cs new file mode 100644 index 000000000..84173dbde --- /dev/null +++ b/src/Jackett/Models/ConfigurationDatanCore.cs @@ -0,0 +1,67 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Jackett.Models +{ + public class ConfigurationDatanCore : ConfigurationData + { + public StringItem Username { get; private set; } + public StringItem Password { get; private set; } + public BoolItem Hungarian { get; set; } + public BoolItem English { get; set; } + + public ConfigurationDatanCore() + { + Username = new StringItem { Name = "Username", Value = "" }; + Password = new StringItem { Name = "Password", Value = "" }; + Hungarian = new BoolItem { Name = "Hungarian", Value = true }; + English = new BoolItem { Name = "English", Value = true }; + } + + public ConfigurationDatanCore(JToken json) + { + ConfigurationDatanCore configData = new ConfigurationDatanCore(); + + dynamic configArray = JsonConvert.DeserializeObject(json.ToString()); + foreach (var config in configArray) + { + string propertyName = UppercaseFirst((string)config.id); + switch (propertyName) + { + case "Username": + Username = new StringItem { Name = propertyName, Value = config.value }; + break; + case "Password": + Password = new StringItem { Name = propertyName, Value = config.value }; + break; + case "Hungarian": + Hungarian = new BoolItem { Name = propertyName, Value = config.value }; + break; + case "English": + English = new BoolItem { Name = propertyName, Value = config.value }; + break; + default: + break; + } + } + } + + public override Item[] GetItems() + { + return new Item[] { Username, Password, Hungarian, English }; + } + + static string UppercaseFirst(string s) + { + if (string.IsNullOrEmpty(s)) + return string.Empty; + return char.ToUpper(s[0]) + s.Substring(1); + } + } +} \ No newline at end of file From 5ebb73ec4d7d792419ec9b7a397bbf491b79c064 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 31 Jul 2015 22:32:18 +0200 Subject: [PATCH 2/2] nCore Still a problem with the login & search doesn't work anymore with the RequestStringWithCookiesAndRetry function. --- src/Jackett/Indexers/nCore.cs | 118 ++++++++++++++-------------------- src/Jackett/Jackett.csproj | 2 + 2 files changed, 52 insertions(+), 68 deletions(-) diff --git a/src/Jackett/Indexers/nCore.cs b/src/Jackett/Indexers/nCore.cs index 11e3d0092..a4f808b67 100644 --- a/src/Jackett/Indexers/nCore.cs +++ b/src/Jackett/Indexers/nCore.cs @@ -23,8 +23,7 @@ namespace Jackett.Indexers private string SearchUrl = "https://ncore.cc/torrents.php"; private static string LoginUrl = "https://ncore.cc/login.php"; private readonly string LoggedInUrl = "https://ncore.cc/index.php"; - //private string cookieHeader = ""; - private JToken configData = null; + //private JToken configData = null; private readonly string enSearch = "torrents.php?oldal=1&tipus=kivalasztottak_kozott&kivalasztott_tipus=xvidser,dvdser,hdser&mire={0}&miben=name"; private readonly string hunSearch = "torrents.php?oldal=1&tipus=kivalasztottak_kozott&kivalasztott_tipus=xvidser_hun,dvdser_hun,hdser_hun,mire={0}&miben=name"; @@ -45,55 +44,47 @@ namespace Jackett.Indexers logger: l) { SearchUrl = SearchUrlEnHun; - //webclient = wc; } public Task GetConfigurationForSetup() { - var config = configData == null ? new ConfigurationDatanCore() : new ConfigurationDatanCore(configData); - return Task.FromResult(new ConfigurationDatanCore(configData)); + //var config = configData == null ? new ConfigurationDatanCore() : new ConfigurationDatanCore(configData); + //return Task.FromResult(config); + return Task.FromResult(new ConfigurationDatanCore()); } public async Task ApplyConfiguration(JToken configJson) { - var config = new ConfigurationDatanCore(); - config.LoadValuesFromJson(configJson); + var incomingConfig = new ConfigurationDatanCore(); + incomingConfig.LoadValuesFromJson(configJson); - if (config.Hungarian.Value == false && config.English.Value == false) - throw new ExceptionWithConfigData("Please select atleast one language.", (ConfigurationData)config); + if (incomingConfig.Hungarian.Value == false && incomingConfig.English.Value == false) + throw new ExceptionWithConfigData("Please select atleast one language.", (ConfigurationData)incomingConfig); + var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty); var pairs = new Dictionary { - { "nev", config.Username.Value }, - { "pass", config.Password.Value }, - {"ne_leptessen_ki", "on"} + { "nev", incomingConfig.Username.Value }, + { "pass", incomingConfig.Password.Value }, + { "ne_leptessen_ki", "on"} }; + + var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, LoggedInUrl, LoggedInUrl); + ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Felhasználó"), () => + { + CQ dom = result.Content; + var messageEl = dom["#hibauzenet table tbody tr"]; + var msgContainer = messageEl.Get(0).ChildElements.ElementAt(1); + var errorMessage = msgContainer != null ? msgContainer.InnerText : "Error while trying to login."; + throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)incomingConfig); + }); - var response = await webclient.GetString(new Utils.Clients.WebRequest() - { - Url = LoginUrl, - PostData = pairs, - Referer = SiteLink.ToString(), - Type = RequestType.POST, - }); - - if (!response.RedirectingTo.Equals("index.php")) - { - var errorMessage = "Couldn't login"; - throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config); - } - else - { - var configSaveData = new JObject(); - cookieHeader = response.Cookies; - - cookieHeader = cookieHeader.Substring(0, cookieHeader.IndexOf(' ') - 1) + ";stilus=brutecore; nyelv=hu"; - configSaveData["cookies"] = cookieHeader; - configSaveData["config"] = configData = config.ToJson(); - SaveConfig(configSaveData); - IsConfigured = true; - } + //var configSaveData = new JObject(); + //configSaveData["config"] = incomingConfig.ToJson(); + //SaveConfig(configSaveData); } + + public async Task> PerformQuery(TorznabQuery query) { List releases = new List(); @@ -101,18 +92,10 @@ namespace Jackett.Indexers var searchString = query.SanitizedSearchTerm + " " + query.GetEpisodeSearchString(); var episodeSearchUrl = string.Format(SearchUrl, HttpUtility.UrlEncode(searchString)); - //var response = await webclient.GetString(new Utils.Clients.WebRequest() - //{ - // Url = episodeSearchUrl, - // Cookies = cookieHeader, - // Referer = SiteLink.ToString(), - //}); - - // var results = response.Content; - var results= ""; + var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl); try { - CQ dom = results; + CQ dom = response.Content; ReleaseInfo release; var rows = dom[".box_torrent_all"].Find(".box_torrent"); @@ -146,37 +129,36 @@ namespace Jackett.Indexers } catch (Exception ex) { - //OnParseError(response.Content, ex); + OnParseError(response.Content, ex); } return releases.ToArray(); } - //public void LoadFromSavedConfiguration(JToken jsonConfig) - //{ - // if (jsonConfig["config"] != null) - // { - // string hun, eng; - // Dictionary[] configDictionary = JsonConvert.DeserializeObject[]>(jsonConfig["config"].ToString()); - // configDictionary[2].TryGetValue("value", out hun); - // configDictionary[3].TryGetValue("value", out eng); + public override void LoadFromSavedConfiguration(JToken jsonConfig) + { + base.LoadFromSavedConfiguration(jsonConfig); + //if (jsonConfig["config"] != null) + //{ + // string hun, eng; + // Dictionary[] configDictionary = JsonConvert.DeserializeObject[]>(jsonConfig["config"].ToString()); + // configDictionary[2].TryGetValue("value", out hun); + // configDictionary[3].TryGetValue("value", out eng); - // bool isHun = Boolean.Parse(hun); - // bool isEng = Boolean.Parse(eng); + // bool isHun = Boolean.Parse(hun); + // bool isEng = Boolean.Parse(eng); - // if (isHun && isEng) - // SearchUrl = SearchUrlEnHun; - // else if (isHun && !isEng) - // SearchUrl = SearchUrlHun; - // else if (!isHun && isEng) - // SearchUrl = SearchUrlEn; + // if (isHun && isEng) + // SearchUrl = SearchUrlEnHun; + // else if (isHun && !isEng) + // SearchUrl = SearchUrlHun; + // else if (!isHun && isEng) + // SearchUrl = SearchUrlEn; - // configData = jsonConfig["config"]; - // } - // cookieHeader = (string)jsonConfig["cookies"]; - // IsConfigured = true; - //} + // configData = jsonConfig["config"]; + //} + } } } \ No newline at end of file diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 21bc6aeac..cac0757a2 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -186,6 +186,7 @@ + @@ -205,6 +206,7 @@ +