///<summary>Returns true if Update(SiteLink,SiteLink) would make changes to the database. ///Does not make any changes to the database and can be called before remoting role is checked.</summary> public static bool UpdateComparison(SiteLink siteLink, SiteLink oldSiteLink) { if (siteLink.SiteNum != oldSiteLink.SiteNum) { return(true); } if (siteLink.OctetStart != oldSiteLink.OctetStart) { return(true); } if (siteLink.EmployeeNum != oldSiteLink.EmployeeNum) { return(true); } if (siteLink.SiteColor != oldSiteLink.SiteColor) { return(true); } if (siteLink.ForeColor != oldSiteLink.ForeColor) { return(true); } if (siteLink.InnerColor != oldSiteLink.InnerColor) { return(true); } if (siteLink.OuterColor != oldSiteLink.OuterColor) { return(true); } return(false); }
/// <summary> /// Add new link to db. /// </summary> private void AddNewLink() { LinksManager linkObj = new LinksManager(); SiteLink linkToSave = new SiteLink(); try { // assign newlink info. linkToSave.link_details = editorLinkDetails.Value; linkToSave.link_lang_id = Convert.ToInt32(ddlLanguage.SelectedValue); //if (ddlParentLinks.SelectedIndex > 0) { linkToSave.ParentID = Convert.ToInt32(ddlParentLinks.SelectedValue); } //if (txtLinkURL.Text.Trim() != String.Empty) { linkToSave.link_url = txtLinkURL.Text; } linkToSave.link_name = txtName.Text; linkToSave.link_order = Convert.ToInt32(txtPriority.Text); //linkToSave.link_place = GetPlaceofLink(); linkToSave.Active = cbActive.Checked; // perform saving method. if (linkObj.AddNewLink(linkToSave)) { // go to links list. string url = "SiteLinksView.aspx"; //?langid=" + ddlLanguageID.SelectedValue; Response.Redirect(url); } else { lblError.Text = Resources.AdminResources_en.ErrorSave; } } catch { lblError.Text = Resources.AdminResources_en.ErrorSave; } }
void PopulateSiteLinks(ComboBox cb) { List <SiteLink> items = new List <SiteLink>(); try { int odd = 1; SiteLink link = null; string input = File.ReadAllText(_exe_dir + "\\website.txt"); StringReader reader = new StringReader(input); string line = string.Empty; do { line = reader.ReadLine(); if (line != null) // do something with the line { if (odd++ % 2 != 0) { link = new SiteLink { Name = line }; } else { link.Link = line; items.Add(link); } } } while (line != null); } catch { }; cb.ItemsSource = items; }
///<summary>Inserts one SiteLink into the database. Provides option to use the existing priKey.</summary> public static long Insert(SiteLink siteLink, bool useExistingPK) { if (!useExistingPK && PrefC.RandomKeys) { siteLink.SiteLinkNum = ReplicationServers.GetKey("sitelink", "SiteLinkNum"); } string command = "INSERT INTO sitelink ("; if (useExistingPK || PrefC.RandomKeys) { command += "SiteLinkNum,"; } command += "SiteNum,OctetStart,EmployeeNum,SiteColor,ForeColor,InnerColor,OuterColor) VALUES("; if (useExistingPK || PrefC.RandomKeys) { command += POut.Long(siteLink.SiteLinkNum) + ","; } command += POut.Long(siteLink.SiteNum) + "," + "'" + POut.String(siteLink.OctetStart) + "'," + POut.Long(siteLink.EmployeeNum) + "," + POut.Int(siteLink.SiteColor.ToArgb()) + "," + POut.Int(siteLink.ForeColor.ToArgb()) + "," + POut.Int(siteLink.InnerColor.ToArgb()) + "," + POut.Int(siteLink.OuterColor.ToArgb()) + ")"; if (useExistingPK || PrefC.RandomKeys) { Db.NonQ(command); } else { siteLink.SiteLinkNum = Db.NonQ(command, true, "SiteLinkNum", "siteLink"); } return(siteLink.SiteLinkNum); }
/// <summary> /// Show palce of the link /// (v= vertical, h= horizontal). /// </summary> /// <param name="val"></param> /// <returns></returns> //private void ShowLinkPlace(string val) //{ // if (val == "v") // v.Checked = true; // else // h.Checked = true; //} private void UpdateLinkInfo() { LinksManager linkObj = new LinksManager(); SiteLink linkToSave = new SiteLink(); try { linkToSave.id = hfID.Value != String.Empty ? Convert.ToInt32(hfID.Value) : 0; // ConvertLinkIdToInt(); linkToSave.link_name = txtName.Text; //if (ddlParentLinks.SelectedIndex > 0) { linkToSave.ParentID = Convert.ToInt32(ddlParentLinks.SelectedValue); } //if (txtLinkURL.Text.Trim() != String.Empty) { linkToSave.link_url = txtLinkURL.Text; } //linkToSave.link_place = GetPlaceofLink(); linkToSave.link_lang_id = Convert.ToInt32(ddlLanguage.SelectedValue); linkToSave.link_order = Convert.ToInt32(txtPriority.Text); linkToSave.link_details = editorLinkDetails.Value; linkToSave.Active = cbActive.Checked; // Perform saving data. if (linkObj.UpdateLinkInfo(linkToSave)) { Response.Redirect("../SiteLinksView.aspx"); //?langid=" + ddlLanguageID.SelectedValue); // success save. } else { lblError.Text = Resources.AdminResources_en.ErrorSave; lblError.ForeColor = System.Drawing.Color.DarkRed; } // fail save. } catch { lblError.Text = Resources.AdminResources_en.ErrorSave; lblError.ForeColor = System.Drawing.Color.DarkRed; } }
///<summary>Inserts one SiteLink into the database. Returns the new priKey.</summary> public static long Insert(SiteLink siteLink) { if (DataConnection.DBtype == DatabaseType.Oracle) { siteLink.SiteLinkNum = DbHelper.GetNextOracleKey("sitelink", "SiteLinkNum"); int loopcount = 0; while (loopcount < 100) { try { return(Insert(siteLink, true)); } catch (Oracle.ManagedDataAccess.Client.OracleException ex) { if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated")) { siteLink.SiteLinkNum++; loopcount++; } else { throw ex; } } } throw new ApplicationException("Insert failed. Could not generate primary key."); } else { return(Insert(siteLink, false)); } }
/// <summary> /// Creates a new SiteLink at Place. /// </summary> public static void CreateSiteLink(Quest parentQuest, Symbol placeSymbol) { // Attempt to get Place resource Place place = parentQuest.GetPlace(placeSymbol); if (place == null) { throw new Exception(string.Format("Attempted to add SiteLink for invalid Place symbol {0}", placeSymbol.Name)); } // Create SiteLink in QuestMachine SiteLink siteLink = new SiteLink(); siteLink.questUID = parentQuest.UID; siteLink.placeSymbol = placeSymbol; siteLink.siteType = place.SiteDetails.siteType; siteLink.mapId = place.SiteDetails.mapId; siteLink.buildingKey = place.SiteDetails.buildingKey; Instance.AddSiteLink(siteLink); // Output debug information switch (siteLink.siteType) { case SiteTypes.Building: Debug.LogFormat("Created Building SiteLink to {0} in {1}/{2}", place.SiteDetails.buildingName, place.SiteDetails.regionName, place.SiteDetails.locationName); break; case SiteTypes.Dungeon: Debug.LogFormat("Created Dungeon SiteLink to {0}/{1}", place.SiteDetails.regionName, place.SiteDetails.locationName); break; } }
public async Task <SiteLink> AddSiteLinkToEnvironment(int environmentId, [FromBody] SiteLink link) { link.EnvironmentId = environmentId; var linkEntry = _context.SiteLinks.Add(link); await _context.SaveChangesAsync(); return(linkEntry.Entity); }
internal override void ProcessMappingsFromRowValues(RowValues values) { SiteLink = new SiteLink(); Identifier.ReadFromRowValues(values); values.ConvertToEntity(this, Mappings); }
public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query) { var releases = new List <ReleaseInfo>(); var episodeSearchUrl = string.Format("{0}?search={1}&cat=0", SearchUrl, HttpUtility.UrlEncode(query.GetQueryString())); var results = await RequestStringWithCookiesAndRetry(episodeSearchUrl); try { CQ dom = results.Content; var table = dom["tbody > tr > .latest"].Parent().Parent(); foreach (var row in table.Children().Skip(1)) { var release = new ReleaseInfo(); CQ qDetailsCol = row.ChildElements.ElementAt(1).Cq(); CQ qLink = qDetailsCol.Children("a").First(); release.MinimumRatio = 1; release.MinimumSeedTime = 172800; release.Comments = new Uri(SiteLink + "/" + qLink.Attr("href")); release.Guid = release.Comments; release.Title = qLink.Attr("title"); release.Description = release.Title; //"Tuesday, June 11th 2013 at 03:52:53 AM" to... //"Tuesday June 11 2013 03:52:53 AM" var timestamp = qDetailsCol.Children("font").Text().Trim() + " "; var timeParts = new List <string>(timestamp.Replace(" at", "").Replace(",", "").Split(' ')); timeParts[2] = Regex.Replace(timeParts[2], "[^0-9.]", ""); var formattedTimeString = string.Join(" ", timeParts.ToArray()).Trim(); var date = DateTime.ParseExact(formattedTimeString, "dddd MMMM d yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); release.PublishDate = DateTime.SpecifyKind(date, DateTimeKind.Utc).ToLocalTime(); release.Link = new Uri(SiteLink.Replace("http:", "https:") + "/" + row.ChildElements.ElementAt(2).Cq().Children("a.index").Attr("href")); var sizeStr = row.ChildElements.ElementAt(6).Cq().Text(); release.Size = ReleaseInfo.GetBytes(sizeStr); release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(8).Cq().Text()); release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(9).Cq().Text()) + release.Seeders; //if (!release.Title.ToLower().Contains(title.ToLower())) // continue; releases.Add(release); } } catch (Exception ex) { OnParseError(results.Content, ex); } return(releases); }
protected void Init(string DefinitionString) { var deserializer = new DeserializerBuilder() .WithNamingConvention(new CamelCaseNamingConvention()) .IgnoreUnmatchedProperties() .Build(); Definition = deserializer.Deserialize <IndexerDefinition>(DefinitionString); // Add default data if necessary if (Definition.Settings == null) { Definition.Settings = new List <settingsField>(); } if (Definition.Settings.Count == 0) { Definition.Settings.Add(new settingsField { Name = "username", Label = "Username", Type = "text" }); Definition.Settings.Add(new settingsField { Name = "password", Label = "Password", Type = "password" }); } // init missing mandatory attributes DisplayName = Definition.Name; DisplayDescription = Definition.Description; SiteLink = Definition.Links[0]; // TODO: implement alternative links if (!SiteLink.EndsWith("/")) { SiteLink += "/"; } TorznabCaps = TorznabUtil.CreateDefaultTorznabTVCaps(); // TODO implement caps // init config Data configData = new ConfigurationData(); foreach (var Setting in Definition.Settings) { configData.AddDynamic(Setting.Name, new StringItem { Name = Setting.Label }); } foreach (var Category in Definition.Caps.Categories) { var cat = TorznabCatType.GetCatByName(Category.Value); if (cat == null) { logger.Error(string.Format("CardigannIndexer ({0}): Can't find a category for {1}", ID, Category.Value)); continue; } AddCategoryMapping(Category.Key, TorznabCatType.GetCatByName(Category.Value)); } }
public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query) { var releases = new List <ReleaseInfo>(); var results = await PostDataWithCookiesAndRetry(SearchUrl, GetSearchFormData(query.GetQueryString())); try { CQ dom = results.Content; 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; 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); 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("<br />", " "), CultureInfo.InvariantCulture); string[] sizeSplit = qRow.Find(".box_meret2").Get(0).InnerText.Split(' '); release.Size = ReleaseInfo.GetBytes(sizeSplit[1].ToLower(), ParseUtil.CoerceFloat(sizeSplit[0])); string cat = qRow.Find("img[class='categ_link']").First().Attr("title").Trim(); release.Category = MapTrackerCatToNewznab(cat); releases.Add(release); } } catch (Exception ex) { OnParseError(results.Content, ex); } return(releases.ToArray()); }
public bool UpdateLinkInfo(SiteLink linkToUpdate) { try { ctxWrite.LinksUpdateLink(linkToUpdate.id, linkToUpdate.link_order, linkToUpdate.link_lang_id, linkToUpdate.Active, linkToUpdate.link_place, linkToUpdate.link_name, linkToUpdate.link_details); return(true); } catch { return(false); } }
///<summary></summary> public static SiteLink CreateSiteLink(long siteNum, string octetStart = "", string connectionSettingsHQOverrides = "") { SiteLink siteLink = new SiteLink() { SiteNum = siteNum, OctetStart = octetStart, ConnectionSettingsHQOverrides = connectionSettingsHQOverrides }; siteLink.SiteLinkNum = SiteLinks.Insert(siteLink); SiteLinks.RefreshCache(); return(siteLink); }
public bool AddNewLink(SiteLink linkToAdd) { try { //ctxWrite.LinksAddNew(linkToAdd.ParentID, linkToAdd.link_order, linkToAdd.Active, linkToAdd.link_lang_id, // linkToAdd.link_place, linkToAdd.link_name, linkToAdd.link_details, linkToAdd.link_url); ctxWrite.SiteLinks.InsertOnSubmit(linkToAdd); ctxWrite.SubmitChanges(); return(true); } catch { return(false); } }
public void DataAction_WebChat_Override() { SiteT.ClearSiteTable(); SiteLinkT.ClearSiteLinkTable(); Site site = SiteT.CreateSite(MethodBase.GetCurrentMethod().Name); SiteLink siteLink = SiteLinkT.CreateSiteLink(site.SiteNum, octetStart: ODEnvironment.GetLocalIPAddress(), connectionSettingsHQOverrides: GetJsonSerializedConnectionOverride(ConnectionNames.WebChat, "127.0.0.1", _databaseNameWebChat, "root", "")); string serverName = ""; DataAction.RunWebChat(() => { serverName = DataConnection.GetServerName(); }); Assert.AreEqual("127.0.0.1", serverName); Assert.AreNotEqual(_dictConnectionDefaults[ConnectionNames.WebChat].ServerName, serverName); }
///<summary>Updates one SiteLink in the database.</summary> public static void Update(SiteLink siteLink) { string command = "UPDATE sitelink SET " + "SiteNum = " + POut.Long(siteLink.SiteNum) + ", " + "OctetStart = '" + POut.String(siteLink.OctetStart) + "', " + "EmployeeNum= " + POut.Long(siteLink.EmployeeNum) + ", " + "SiteColor = " + POut.Int(siteLink.SiteColor.ToArgb()) + ", " + "ForeColor = " + POut.Int(siteLink.ForeColor.ToArgb()) + ", " + "InnerColor = " + POut.Int(siteLink.InnerColor.ToArgb()) + ", " + "OuterColor = " + POut.Int(siteLink.OuterColor.ToArgb()) + " " + "WHERE SiteLinkNum = " + POut.Long(siteLink.SiteLinkNum); Db.NonQ(command); }
///<summary>Inserts one SiteLink into the database. Returns the new priKey. Doesn't use the cache.</summary> public static long InsertNoCache(SiteLink siteLink) { if (DataConnection.DBtype == DatabaseType.MySql) { return(InsertNoCache(siteLink, false)); } else { if (DataConnection.DBtype == DatabaseType.Oracle) { siteLink.SiteLinkNum = DbHelper.GetNextOracleKey("sitelink", "SiteLinkNum"); //Cacheless method } return(InsertNoCache(siteLink, true)); } }
public async Task <IActionResult> UpdateLink(int linkId, [FromBody] SiteLink link) { if (linkId != link.Id) { return(BadRequest()); } _context.SiteLinks .Update(link) .UpdateLastModified(); await _context.SaveChangesAsync(); return(NoContent()); }
///<summary>Inserts one SiteLink into the database. Provides option to use the existing priKey. Doesn't use the cache.</summary> public static long InsertNoCache(SiteLink siteLink, bool useExistingPK) { bool isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys); string command = "INSERT INTO sitelink ("; if (!useExistingPK && isRandomKeys) { siteLink.SiteLinkNum = ReplicationServers.GetKeyNoCache("sitelink", "SiteLinkNum"); } if (isRandomKeys || useExistingPK) { command += "SiteLinkNum,"; } command += "SiteNum,OctetStart,EmployeeNum,SiteColor,ForeColor,InnerColor,OuterColor,ConnectionSettingsHQOverrides) VALUES("; if (isRandomKeys || useExistingPK) { command += POut.Long(siteLink.SiteLinkNum) + ","; } command += POut.Long(siteLink.SiteNum) + "," + "'" + POut.String(siteLink.OctetStart) + "'," + POut.Long(siteLink.EmployeeNum) + "," + POut.Int(siteLink.SiteColor.ToArgb()) + "," + POut.Int(siteLink.ForeColor.ToArgb()) + "," + POut.Int(siteLink.InnerColor.ToArgb()) + "," + POut.Int(siteLink.OuterColor.ToArgb()) + "," + DbHelper.ParamChar + "paramConnectionSettingsHQOverrides)"; if (siteLink.ConnectionSettingsHQOverrides == null) { siteLink.ConnectionSettingsHQOverrides = ""; } OdSqlParameter paramConnectionSettingsHQOverrides = new OdSqlParameter("paramConnectionSettingsHQOverrides", OdDbType.Text, POut.StringParam(siteLink.ConnectionSettingsHQOverrides)); if (useExistingPK || isRandomKeys) { Db.NonQ(command, paramConnectionSettingsHQOverrides); } else { siteLink.SiteLinkNum = Db.NonQ(command, true, "SiteLinkNum", "siteLink", paramConnectionSettingsHQOverrides); } return(siteLink.SiteLinkNum); }
public Human FromWikiDataResponse(WikiDataResponse wikiDataResponse) { var entity = wikiDataResponse.entities.First().Value; Language label; if (entity.labels.TryGetValue("en", out label)) { label = entity.labels.First().Value; } string labelValue = label.value; string birthName = GetClaimValue(entity, WikiDataProperties.BirthName, "text"); string[] countryOfCitizenship = GetClaimValues(entity, WikiDataProperties.CountryOfCitizenship, "numeric-id").ToArray(); string[] occupation = GetClaimValues(entity, WikiDataProperties.Occupation, "numeric-id").ToArray(); NodaTime.Instant?dateOfBirth = null; var dateOfBirthStr = GetClaimValue(entity, WikiDataProperties.DateOfBirth, "time"); if (dateOfBirthStr != null) { dateOfBirth = dateOfBirthStr.AsDateTime(); } NodaTime.Instant?dateOfDeath = null; var dateOfDeathStr = GetClaimValue(entity, WikiDataProperties.DateOfDeath, "time"); if (dateOfDeathStr != null) { dateOfDeath = dateOfDeathStr.AsDateTime(); } string url = null; SiteLink enSiteLink = null; if (entity.sitelinks.TryGetValue("enwiki", out enSiteLink)) { url = enSiteLink.url; } var human = new Human(labelValue, birthName, countryOfCitizenship, occupation, dateOfBirth, dateOfDeath, url); return(human); }
///<summary>Converts a DataTable to a list of objects.</summary> public static List <SiteLink> TableToList(DataTable table) { List <SiteLink> retVal = new List <SiteLink>(); SiteLink siteLink; foreach (DataRow row in table.Rows) { siteLink = new SiteLink(); siteLink.SiteLinkNum = PIn.Long(row["SiteLinkNum"].ToString()); siteLink.SiteNum = PIn.Long(row["SiteNum"].ToString()); siteLink.OctetStart = PIn.String(row["OctetStart"].ToString()); siteLink.EmployeeNum = PIn.Long(row["EmployeeNum"].ToString()); siteLink.SiteColor = Color.FromArgb(PIn.Int(row["SiteColor"].ToString())); siteLink.ForeColor = Color.FromArgb(PIn.Int(row["ForeColor"].ToString())); siteLink.InnerColor = Color.FromArgb(PIn.Int(row["InnerColor"].ToString())); siteLink.OuterColor = Color.FromArgb(PIn.Int(row["OuterColor"].ToString())); retVal.Add(siteLink); } return(retVal); }
///<summary>Updates one SiteLink in the database.</summary> public static void Update(SiteLink siteLink) { string command = "UPDATE sitelink SET " + "SiteNum = " + POut.Long(siteLink.SiteNum) + ", " + "OctetStart = '" + POut.String(siteLink.OctetStart) + "', " + "EmployeeNum = " + POut.Long(siteLink.EmployeeNum) + ", " + "SiteColor = " + POut.Int(siteLink.SiteColor.ToArgb()) + ", " + "ForeColor = " + POut.Int(siteLink.ForeColor.ToArgb()) + ", " + "InnerColor = " + POut.Int(siteLink.InnerColor.ToArgb()) + ", " + "OuterColor = " + POut.Int(siteLink.OuterColor.ToArgb()) + ", " + "ConnectionSettingsHQOverrides= " + DbHelper.ParamChar + "paramConnectionSettingsHQOverrides " + "WHERE SiteLinkNum = " + POut.Long(siteLink.SiteLinkNum); if (siteLink.ConnectionSettingsHQOverrides == null) { siteLink.ConnectionSettingsHQOverrides = ""; } OdSqlParameter paramConnectionSettingsHQOverrides = new OdSqlParameter("paramConnectionSettingsHQOverrides", OdDbType.Text, POut.StringParam(siteLink.ConnectionSettingsHQOverrides)); Db.NonQ(command, paramConnectionSettingsHQOverrides); }
private void PrintRelatedHistoricalFigures() { if (_site.RelatedHistoricalFigures.Count == 0) { return; } Html.AppendLine("<div class=\"row\">"); Html.AppendLine("<div class=\"col-md-12\">"); Html.AppendLine(Bold("Related Historical Figures") + LineBreak); StartList(ListType.Unordered); foreach (HistoricalFigure hf in _site.RelatedHistoricalFigures) { SiteLink hfToSiteLink = hf.RelatedSites.FirstOrDefault(link => link.Site == _site); if (hfToSiteLink != null) { Html.AppendLine(ListItem + hf.ToLink(true, _site)); if (hfToSiteLink.SubId != 0) { Structure structure = _site.Structures.FirstOrDefault(s => s.Id == hfToSiteLink.SubId); if (structure != null) { Html.AppendLine(" - " + structure.ToLink(true, _site) + " - "); } } if (hfToSiteLink.OccupationId != 0) { Structure structure = _site.Structures.FirstOrDefault(s => s.Id == hfToSiteLink.OccupationId); if (structure != null) { Html.AppendLine(" - " + structure.ToLink(true, _site) + " - "); } } Html.AppendLine(" (" + hfToSiteLink.Type.GetDescription() + ")"); } } EndList(ListType.Unordered); Html.AppendLine("</div>"); Html.AppendLine("</div>"); }
private void butSiteLink_Click(object sender, EventArgs e) { SiteLink siteLink = SiteLinks.GetFirstOrDefault(x => x.SiteNum == SiteCur.SiteNum); if (siteLink == null) { siteLink = new SiteLink() { SiteNum = SiteCur.SiteNum, ForeColor = Color.Black, InnerColor = Color.LightCyan, OuterColor = Color.Blue }; } FormSiteLinkEdit FormSE = new FormSiteLinkEdit(siteLink); FormSE.ShowDialog(); if (FormSE.DialogResult == DialogResult.OK) { DataValid.SetInvalid(InvalidType.Sites); } }
public static string GetSiteUrl(SiteLink link) { if (link == SiteLink.None) { return WebsiteRoot; } string baseUrl = WebsiteLinkBase; string linkString = link.ToString(); if (link == SiteLink.CheckVersion) { baseUrl = VersionCheck; linkString = "Update"; } else if (link == SiteLink.NewVersion) { linkString = Options.Current.Update.UpgradeURL.Value; return string.Format("{0}{1}", WebsiteRoot, linkString); } return string.Format("{0}{1}/{2}", baseUrl, linkString, AppVersion.Current.ToString()); }
/// <summary> /// Adds a site link to quest machine. /// There is no strong unique key to use for site links so they are stored in a flat list. /// Only a small number of site links will be ever active at one time in normal play. /// </summary> /// <param name="siteLink">SiteLink to add.</param> public void AddSiteLink(SiteLink siteLink) { siteLinks.Add(siteLink); }
public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query) { var loggedInCheck = await RequestStringWithCookies(SearchUrl); if (!loggedInCheck.Content.Contains("/logout.php")) { //Cookie appears to expire after a period of time or logging in to the site via browser DateTime lastLoggedInCheck; DateTime.TryParse(configData.LastLoggedInCheck.Value, out lastLoggedInCheck); if (lastLoggedInCheck < DateTime.Now.AddMinutes(-15)) { await DoLogin(); configData.LastLoggedInCheck.Value = DateTime.Now.ToString("o"); SaveConfig(); } } var releases = new List <ReleaseInfo>(); bool configFreeLeechOnly = configData.FilterString.Value.ToLowerInvariant().Contains("freeleechonly"); bool configQualityEncodeOnly = configData.FilterString.Value.ToLowerInvariant().Contains("qualityencodeonly"); string movieListSearchUrl; if (!string.IsNullOrEmpty(query.ImdbID)) { movieListSearchUrl = string.Format("{0}?action=basic&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.ImdbID)); } else if (!string.IsNullOrEmpty(query.GetQueryString())) { movieListSearchUrl = string.Format("{0}?action=basic&searchstr={1}", SearchUrl, HttpUtility.UrlEncode(query.GetQueryString())); } else { movieListSearchUrl = SearchUrl; } var results = await RequestStringWithCookiesAndRetry(movieListSearchUrl); try { CQ mdom = results.Content; var mrows = mdom[".torrent_title_box"]; foreach (var mrow in mrows.Take(5)) { var mqRow = mrow.Cq(); Uri movieReleasesLink = new Uri(SiteLink.TrimEnd('/') + mqRow.Find("a[title='View Torrent']").First().Attr("href").Trim()); Uri commentsLink = new Uri(movieReleasesLink + "#comments"); string imdblink = mqRow.Find("span[class='imdb-number-rating']").Length > 0 ? mqRow.Find("span[class='imdb-number-rating'] > a").First().Attr("href").Trim() : ""; long imdb_id = 0; try { if (!string.IsNullOrWhiteSpace(imdblink) && imdblink.ToLowerInvariant().Contains("tt")) { imdb_id = long.Parse(imdblink.Substring(imdblink.LastIndexOf('t') + 1).Replace("/", "")); } } catch { imdb_id = 0; } var release_results = await RequestStringWithCookiesAndRetry(movieReleasesLink.ToString()); //Iterate over the releases for each movie CQ dom = release_results.Content; var rows = dom[".torrent_widget.box.pad"]; foreach (var row in rows) { var release = new ReleaseInfo(); var qRow = row.Cq(); string title = qRow.Find("[id^=desc_] > h2 > strong").First().Text().Trim(); Uri link = new Uri(SiteLink.TrimEnd('/') + qRow.Find("a[title='Download']").First().Attr("href").Trim()); Uri guid = new Uri(SiteLink.TrimEnd('/') + qRow.Find("a[title='Permalink']").First().Attr("href").Trim()); string pubDateStr = qRow.Find("div[class='box pad'] > p:contains('Uploaded by') > span").First().Attr("title").Trim(); DateTime pubDate = DateTime.ParseExact(pubDateStr, "MMM dd yyyy, HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime(); string sizeStr = qRow.Find("[id^=desc_] > div > table > tbody > tr > td > strong:contains('Size:')").First().Parent().Parent().Find("td").Last().Text().Trim(); var seeders = ParseUtil.CoerceInt(qRow.Find("img[title='Seeders']").First().Parent().Text().Trim()); var peers = ParseUtil.CoerceInt(qRow.Find("img[title='Leechers']").First().Parent().Text().Trim()) + seeders; var CoverElement = dom.Find("div[id='poster'] > a > img"); if (CoverElement.Any()) { Uri CoverUrl = new Uri(dom.Find("div[id='poster'] > a > img").First().Attr("src").Trim()); release.BannerUrl = CoverUrl; } bool freeleech = qRow.Find("span[class='freeleech']").Length == 1 ? true : false; bool qualityEncode = qRow.Find("img[class='approved']").Length == 1 ? true : false; string grabs = qRow.Find("img[title='Snatches']").First().Parent().Text().Trim(); if (string.IsNullOrWhiteSpace(sizeStr)) { string secondSizeStr = qRow.Find("div[class='details_title'] > strong:contains('(')").Last().Text().Trim(); if (secondSizeStr.Length > 3 && secondSizeStr.Contains("(") && secondSizeStr.Contains(")")) { sizeStr = secondSizeStr.Replace("(", "").Replace(")", "").Trim(); } } if (string.IsNullOrWhiteSpace(title)) { title = dom.Find("div.title_text").Text() + " - " + qRow.Find("div.details_title > a").Text(); } release.Title = title; release.Guid = guid; release.Link = link; release.PublishDate = pubDate; release.Size = ReleaseInfo.GetBytes(sizeStr); release.Description = release.Title; release.Seeders = seeders; release.Peers = peers; release.MinimumRatio = 1; release.MinimumSeedTime = 345600; release.Category = 2000; release.Comments = movieReleasesLink; if (imdb_id > 0) { release.Imdb = imdb_id; } var files = qRow.Find("div[id^=\"filelist\"] tr").Count() - 1; release.Files = files; release.Grabs = ParseUtil.CoerceLong(grabs); if (freeleech) { release.DownloadVolumeFactor = 0; } else { release.DownloadVolumeFactor = 1; } release.UploadVolumeFactor = 1; if (configFreeLeechOnly && !freeleech) { continue; //Skip release if user only wants FreeLeech } if (configQualityEncodeOnly && !qualityEncode) { continue; //Skip release if user only wants Quality Encode } releases.Add(release); } } } catch (Exception ex) { OnParseError(results.Content, ex); } return(releases); }
List <ReleaseInfo> parseTorrents(WebClientStringResult results, String seasonep, TorznabQuery query, int already_founded, int limit) { var releases = new List <ReleaseInfo>(); try { CQ dom = results.Content; ReleaseInfo release; var rows = dom[".box_torrent_all"].Find(".box_torrent"); // Check torrents only till we reach the query Limit for (int i = 0; (i < rows.Length && ((already_founded + releases.Count) < limit)); i++) { try { CQ qRow = rows[i].Cq(); var key = dom["link[rel=alternate]"].First().Attr("href").Split('=').Last(); 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(); 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) { 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("<br />", " "), 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") && !release.Title.Contains("hun")) { release.Title += ".hun"; } 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) { OnParseError(results.Content, ex); } return(releases); }
private async Task <List <ReleaseInfo> > PerformQuerySearch(TorznabQuery query, bool matchWords) { var releases = new List <ReleaseInfo>(); // search only the longest word, we filter the results later var searchTerm = GetLongestWord(query.SearchTerm); var url = SiteLink + SearchUrl + searchTerm; var result = await RequestWithCookiesAsync(url, referer : url); if (result.Status != HttpStatusCode.OK) { throw new ExceptionWithConfigData(result.ContentString, configData); } try { var searchResultParser = new HtmlParser(); var doc = searchResultParser.ParseDocument(result.ContentString); var rows = doc.QuerySelectorAll("div.seccion#buscador > div.card > div.card-body > p"); if (rows.First().TextContent.Contains("Introduce alguna palabra para buscar con al menos 2 letras.")) { return(releases); //no enough search terms } foreach (var row in rows.Skip(2)) { //href=/pelicula/6981/Saga-Spiderman var link = string.Format("{0}{1}", SiteLink.TrimEnd('/'), row.QuerySelector("p > span > a").GetAttribute("href")); var title = row.QuerySelector("p > span > a").TextContent; var cat = GetCategory(title, link); var quality = ""; switch (GetCategoryFromURL(link)) { case "pelicula": case "serie": quality = Regex.Replace(row.QuerySelector("p > span > span").TextContent, "([()])", ""); break; } switch (cat) { case "pelicula": case "pelicula4k": case "serie": case "seriehd": case "musica": await ParseRelease(releases, link, title, cat, quality, query, matchWords); break; default: //ignore different categories break; } } } catch (Exception ex) { OnParseError(result.ContentString, ex); } return(releases); }
public async Task <IEnumerable <ReleaseInfo> > PerformQuery(TorznabQuery query) { var releases = new List <ReleaseInfo>(); var searchString = query.GetQueryString(); var pairs = new List <KeyValuePair <string, string> >(); pairs.Add(new KeyValuePair <string, string>("nyit_sorozat_resz", "true")); pairs.Add(new KeyValuePair <string, string>("miben", "name")); pairs.Add(new KeyValuePair <string, string>("tipus", "kivalasztottak_kozott")); pairs.Add(new KeyValuePair <string, string>("submit.x", "1")); pairs.Add(new KeyValuePair <string, string>("submit.y", "1")); pairs.Add(new KeyValuePair <string, string>("submit", "Ok")); pairs.Add(new KeyValuePair <string, string>("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 <string, string>("kivalasztott_tipus[]", cat)); } var results = await PostDataWithCookiesAndRetry(SearchUrl, pairs); try { CQ dom = results.Content; ReleaseInfo release; var rows = dom[".box_torrent_all"].Find(".box_torrent"); foreach (var row in rows) { CQ qRow = row.Cq(); var key = dom ["link[rel=alternate]"].First().Attr("href").Split('=').Last(); 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("div.siterank").Text(); 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) { 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("<br />", " "), 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); releases.Add(release); } } catch (Exception ex) { OnParseError(results.Content, ex); } return(releases); }
private SiteLink MapSiteLink(IDataReader reader) { SiteLink s = new SiteLink(); int startingIndex = 0; s.Id = reader.GetSafeInt32(startingIndex++); s.Url = reader.GetSafeString(startingIndex++); s.Type = reader.GetSafeInt32(startingIndex++); s.Group = reader.GetSafeInt16(startingIndex++); s.OwnerId = reader.GetSafeInt32(startingIndex++); s.OwnerType = reader.GetSafeInt32(startingIndex++); s.DateAdded = reader.GetSafeDateTime(startingIndex++); s.DateModified = reader.GetSafeDateTime(startingIndex++); s.LanguageCode = reader.GetSafeString(startingIndex++); return s; }
public static void OpenSite(SiteLink link) { OpenUrl(GetSiteUrl(link)); }