void InitPair(PersonPairNode pp) { pp.ExpandBranch = new UVMCommand(par => { if (pp.Male != null) { pp.MaleParentsPair = new PersonPairNode() { X = pp.X + 200, Y = pp.Y - 100, Male = pp.Male.Father, Female = pp.Male.Mother }; Pairs.Add(pp.MaleParentsPair); InitPair(pp.MaleParentsPair); } else { var person = CreatePersonDialogAsync(0); pp.Male = (Person)person; } if (pp.Female != null) { pp.FemaleParentsPair = new PersonPairNode() { X = pp.X + 200, Y = pp.Y + 100, Male = pp.Female.Father, Female = pp.Female.Mother }; pairs.Add(pp.FemaleParentsPair); InitPair(pp.FemaleParentsPair); } RaisePropertyChanged("Pairs"); }); }
public void Init() { for (int i = 0; i < Template.Length; i++) { // add in template characters char ch = Template[i]; if (Elems.ContainsKey(ch)) { Elems[ch]++; } else { Elems.Add(ch, 1); } } // add in pairs for (int i = 0; i < Template.Length - 1; i++) { var key = Template.Substring(i, 2); if (Pairs.ContainsKey(key)) { Pairs[key]++; } else { Pairs.Add(key, 1); } } }
public static Pairs <string, object> Parse(string s) { var ret = new Pairs <string, object>(); s = s.Trim(); //check for enclosing brackets if (!Regex.Match(s, @"^{.*}$").Success) { throw new InvalidOperationException("[Jsonizer] Bad json format while parsing '" + s + "'"); } //remove enclosing brackets s = s.Substring(1); s = s.Substring(0, s.Length - 1); //magic regex to parse exluding commas var datas = Regex.Matches(s, @"([\""].+?[\""]|\S+)\s*:\s*([\(].+?[\)]|[^,]+)") .Cast <Match>() .Select(m => m.Value); foreach (var data in datas) { ret.Add(ParsePart(data.Trim())); } return(ret); }
public PersonTreeViewModel() { RootPair = new PersonPairNode() { X = 50, Y = 100, Male = new GRAppLib.DB.Person() { FirstName_ = "Alpha", BirthDate = DateTime.Now, Father = new Person() { FirstName_ = "AlphaF" }, Mother = new Person() { FirstName_ = "AlphaM" } }, Female = new GRAppLib.DB.Person() { FirstName_ = "Beta", BirthDate = DateTime.Now } }; Pairs.Add(RootPair); RootPair.ExpandBranch.Execute(null); }
public override T Get(string name) { if (!Pairs.ContainsKey(name)) { Pairs.Add(name, base.Get(name)); } return(Pairs[name]); }
public PairConfig this[string key] { get { if (!Pairs.ContainsKey(key)) { Pairs.Add(key, new PairConfig()); } return(Pairs[key]); } }
private void Parse() { string[] Lines = System.IO.File.ReadAllLines(CachedIniPath); foreach (string Line in Lines) { string[] SplitLine = Line.Split(DelimitingChar.ToCharArray()); if (SplitLine.Length == 2) { Pairs.Add(SplitLine[0], SplitLine[1]); } } }
public void Add(SentencePair pair) { foreach (string e in pair.EWords) { EWords.Add(e); } foreach (string f in pair.FWords) { FWords.Add(f); } Pairs.Add(pair); }
public override T Get(string name) { if (!Pairs.ContainsKey(name)) { var t = base.Get(name); Pairs.Add(name, t); if (t is BaseDbContext dbContext) { if (Configuration["migration:enabled"] == "true") { dbContext.Migrate(); } } } return(Pairs[name]); }
/// <summary>Update this exchange's set of trading pairs</summary> protected override Task UpdatePairsInternal(HashSet <string> coins) // Worker thread context { Model.DataUpdates.Add(() => { // Create cross-exchange pairs for each coin of interest foreach (var cd in SettingsData.Settings.Coins.Where(x => x.CreateCrossExchangePairs)) { var sym = cd.Symbol; // Find the exchanges that have this coin var exchanges = Exchanges.Where(x => x.Coins.ContainsKey(sym)).ToArray(); // Create trading pairs between the same currencies on different exchanges for (int j = 0; j < exchanges.Length - 1; ++j) { for (int i = j + 1; i < exchanges.Length; ++i) { // Check whether the pair already exists var exch0 = exchanges[j]; var exch1 = exchanges[i]; var pair = Pairs[sym, exch0, exch1]; if (pair != null) { continue; } // If not, add it pair = new TradePair(exch0.Coins[sym], exch1.Coins[sym], this); Pairs.Add(pair); // Add the coins Coins.Add(pair.Base.SymbolWithExchange, pair.Base); Coins.Add(pair.Quote.SymbolWithExchange, pair.Quote); } } } }); return(Task.CompletedTask); }
/// <summary> /// Disects the literal command line. /// </summary> private void Disect() { var mcmd = Regex.Match(Literal, "[!,//,a-z,A-Z,0-9]{1,}"); var mquote = Regex.Matches(Literal, "\"(?<value>[a-z,A-Z,0-9,\\s]{0,})\""); var arg = Regex.Matches(Literal, " (?<value>[a-z,A-Z,0-9,#,_,-]{0,})"); var valuepairs = Regex.Matches(Literal, "(?<name>[a-z,A-Z,0-9]{1,})[\\s]{0,}=[\\s]{0,}(?<value>[a-z,A-Z,0-9]{1,})"); var quotedvaluepairs = Regex.Matches(Literal, "(?<name>[a-z,A-Z,0-9]{1,})[\\s]{0,}=[\\s]{0,}\"(?<value>[a-z,A-Z,0-9,\\s]{1,})\""); var flags = Regex.Matches(Literal, "/(?<name>[a-z,A-Z,0-9]{1,})"); Command = mcmd.Value; // give preference to value pairs. for (int i = 0; i < valuepairs.Count; i++) { Pairs.Add(new CommandNameValuePair() { Name = new CommandIndexedItem(valuepairs[i].Groups["name"]), Value = new CommandIndexedItem(valuepairs[i].Groups["value"]) }); } // then to quoted value pairs. for (int i = 0; i < quotedvaluepairs.Count; i++) { Pairs.Add(new CommandNameValuePair() { Name = new CommandIndexedItem(quotedvaluepairs[i].Groups["name"]), Value = new CommandIndexedItem(quotedvaluepairs[i].Groups["value"]) }); } // then to flags. for (int i = 0; i < flags.Count; i++) { Flags.Add(new CommandFlag() { Name = new CommandIndexedItem(flags[i].Groups["name"]) }); } // then to quoted arguments. for (int i = 0; i < mquote.Count; i++) { if (!IsInterpreted(mquote[i].Groups["value"].Index)) { Arguments.Add(new CommandArgument() { Value = new CommandIndexedItem(mquote[i].Groups["value"]) }); } } // and then to unquoted arguments. for (int i = 0; i < arg.Count; i++) { if (!IsInterpreted(arg[i].Groups["value"].Index)) { Arguments.Add(new CommandArgument() { Value = new CommandIndexedItem(arg[i].Groups["value"]) }); } } }
public async Task SearchByAuthor(MoeItems imgs, string uid, SearchPara para, CancellationToken token) { var isIorM = para.Lv3MenuIndex == 0; var mi = isIorM ? "illustrations" : "manga"; var mi2 = isIorM ? "illusts" : "manga"; var mi3 = isIorM ? "插画" : "漫画"; Net.SetReferer($"{HomeUrl}/users/{uid}/{mi}"); var allJson = await Net.GetJsonAsync($"{HomeUrl}/ajax/user/{uid}/profile/all", token); if ($"{allJson?.error}".ToLower() == "true") { Extend.ShowMessage($"搜索失败,网站信息:“{$"{allJson?.message}".ToDecodedUrl()}”", null, Extend.MessagePos.Window); return; } var picIds = new List <string>(); var arts = isIorM ? allJson?.body?.illusts : allJson?.body?.manga; foreach (var ill in Extend.GetList(arts)) { picIds.Add((ill as JProperty)?.Name); } var picCurrentPage = picIds.OrderByDescending(i => i.ToInt()).Skip((para.PageIndex - 1) * para.Count).Take(para.Count).ToList(); if (!picCurrentPage.Any()) { return; } var pairs = new Pairs(); foreach (var pic in picCurrentPage) { pairs.Add("ids[]".ToEncodedUrl(), pic); } pairs.Add("work_category", mi2); pairs.Add("is_first_page", "1"); var picsJson = await Net.GetJsonAsync($"{HomeUrl}/ajax/user/{uid}/profile/illusts", token, pairs); var works = picsJson?.body?.works; foreach (var item in Extend.GetList(works)) { dynamic illus = (item as JProperty)?.Value; if (illus == null) { continue; } var img = new MoeItem(this, para); img.Urls.Add(1, $"{illus.url}", $"{HomeUrl}/users/{uid}/{mi}"); img.Id = $"{illus.id}".ToInt(); img.Net = Net.CloneWithOldCookie(); img.Title = $"{illus.title}"; img.Uploader = $"{illus.userName}"; img.UploaderId = $"{illus.userId}"; img.UploaderHeadUrl = $"{illus.profileImageUrl}"; img.Width = $"{illus.width}".ToInt(); img.Height = $"{illus.height}".ToInt(); img.DetailUrl = $"{HomeUrl}/artworks/{img.Id}"; img.ImagesCount = $"{illus.pageCount}".ToInt(); foreach (var tag in Extend.GetList(illus.tags)) { img.Tags.Add($"{tag}"); } img.Date = GetDateFromUrl($"{illus.url}"); if ($"{illus.illustType}" == "2") { img.GetDetailTaskFunc = async() => await GetUgoiraDetailPageTask(img); } else { img.GetDetailTaskFunc = async() => await GetDetailPageTask(img, para); } img.OriginString = $"{item}"; imgs.Add(img); } Extend.ShowMessage($"该作者共有{mi3}{picIds.Count}张,当前第{para.Count * (para.PageIndex - 1) + 1}张", null, Extend.MessagePos.InfoBar); }
public override async Task <SearchedPage> GetRealPageAsync(SearchPara para, CancellationToken token) { var net = GetCloneNet(); var url = $"{HomeUrl}/"; if (!para.Keyword.IsEmpty()) { url += para.Keyword.Trim().Replace(" ", "+"); } var pairs = new Pairs(); if (para.OrderBy?.IsDefault == false) { switch (para.OrderBy?.Order) { case ImageOrderBy.Date: pairs.Add("s", "id"); break; case ImageOrderBy.Popular: pairs.Add("s", "fav"); break; } } pairs.Add("p", para.PageIndex.ToString()); var doc = await net.GetHtmlAsync(url, pairs, true, token); // images var imgs = new SearchedPage(); var nodes = doc.DocumentNode.SelectSingleNode("//ul[@id='thumbs2']").SelectNodes(".//li"); if (nodes == null) { return(null); } foreach (var imgNode in nodes) { var img = new MoeItem(this, para); var mo = imgNode.SelectSingleNode(".//b")?.InnerText?.Trim(); if (mo?.ToLower().Trim().Contains("members only") == true) { continue; } var strId = imgNode.SelectSingleNode("a").Attributes["href"].Value; var fav = imgNode.SelectSingleNode("a/span")?.InnerText; if (!fav.IsEmpty()) { img.Score = Regex.Replace(fav, @"[^0-9]+", "")?.ToInt() ?? 0; } var imgHref = imgNode.SelectSingleNode(".//img"); var previewUrl = imgHref?.Attributes["src"]?.Value; //http://s3.zerochan.net/Morgiana.240.1355397.jpg preview //http://s3.zerochan.net/Morgiana.600.1355397.jpg sample //http://static.zerochan.net/Morgiana.full.1355397.jpg full //先加前一个,再加后一个 范围都是00-49 //string folder = (id % 2500 % 50).ToString("00") + "/" + (id % 2500 / 50).ToString("00"); var sampleUrl = ""; var fileUrl = ""; if (!previewUrl.IsEmpty()) { sampleUrl = previewUrl?.Replace("240", "600"); fileUrl = Regex.Replace(previewUrl, "^(.+?)zerochan.net/", "https://static.zerochan.net/") .Replace("240", "full"); } var resAndFileSize = imgHref?.Attributes["title"]?.Value; if (!resAndFileSize.IsEmpty()) { foreach (var s in resAndFileSize.Split(' ')) { if (!s.Contains('x')) { continue; } var res = s.Split('x'); if (res.Length != 2) { continue; } img.Width = res[0].ToInt(); img.Height = res[1].ToInt(); } } var title = imgHref?.Attributes["alt"]?.Value; //convert relative url to absolute if (!fileUrl.IsEmpty() && fileUrl.StartsWith("/")) { fileUrl = $"{HomeUrl}{fileUrl}"; } if (sampleUrl != null && sampleUrl.StartsWith("/")) { sampleUrl = HomeUrl + sampleUrl; } img.Description = title; img.Title = title; img.Id = strId[1..].ToInt();
public void Add(Astronaut a) { Pairs.Add(a); }
public override async Task <SearchedPage> GetRealPageAsync(SearchPara para, CancellationToken token) { if (!IsUserLogin) { Login(); } if (!IsUserLogin) { throw new Exception("必须登录才能搜索"); } var page = new SearchedPage(); var net = GetCloneNet(); var pairs = new Pairs(); var api = ""; switch (para.Lv2MenuIndex) { case 0: if (para.Keyword.Trim().Length > 0) { api = $"{SearchDeviationsApi}"; pairs.Add(new ("q", para.Keyword.Trim().Replace(" ", "+"))); } else { api = $"{NewDeviationsApi}"; } break; case 1: api = $"{PopularDeviationsApi}"; break; } if (!para.PageIndexCursor.IsEmpty()) { pairs.Add("cursor", para.PageIndexCursor); } var json = await net.GetJsonAsync($"{HomeUrl}{api}", pairs, true, token); foreach (var devi in Ex.GetList(json.deviations)) { if (!$"{devi.type}".Equals("image", StringComparison.OrdinalIgnoreCase)) { continue; } var item = new MoeItem(this, para); var orgfile = $"{devi.media.baseUri}"; var thumbToken = ""; foreach (var t in Ex.GetList(devi.media.token)) { thumbToken = $"{t}"; if (thumbToken.IsEmpty()) { continue; } break; } var types = devi.media.types; item.DetailUrl = $"{devi.url}"; var dlbool = false; var dl = $"{devi.isDownloadable}"; if (dl.Equals("true", StringComparison.OrdinalIgnoreCase)) { var org = $"{orgfile}?token={thumbToken}"; item.Urls.Add(DownloadTypeEnum.Origin, org, HomeUrl); dlbool = true; } foreach (var type in Ex.GetList(types)) { var t = $"{type.t}"; if (t.Contains("350")) { //thumbContnent = $"/v1/fit/w_{type.w},h_{type.h},q_70,strp/{type.c}"; var thumbContnent = $"/{type.c}".Replace("<prettyName>", $"{devi.media.prettyName}"); var url = $"{orgfile}{thumbContnent}?token={thumbToken}"; item.Urls.Add(DownloadTypeEnum.Thumbnail, url, HomeUrl); continue; } if (t.Equals("preview", StringComparison.OrdinalIgnoreCase)) { var thumbContnent = $"/{type.c}".Replace("<prettyName>", $"{devi.media.prettyName}"); var url = $"{orgfile}{thumbContnent}?token={thumbToken}"; item.Urls.Add(DownloadTypeEnum.Medium, url, HomeUrl); continue; } if (t.Equals("fullview", StringComparison.OrdinalIgnoreCase)) { if ($"{type.c}".IsEmpty()) { continue; } var thumbContnent = $"/{type.c}".Replace("<prettyName>", $"{devi.media.prettyName}"); var url = $"{orgfile}{thumbContnent}?token={thumbToken}"; item.Urls.Add(DownloadTypeEnum.Large, url, HomeUrl); if (!dlbool) { item.Urls.Add(DownloadTypeEnum.Origin, url, HomeUrl); } } } item.Id = $"{devi.deviationId}".ToInt(); item.Title = $"{devi.title}"; item.UploaderId = $"{devi.author.userId}"; item.Uploader = $"{devi.author.username}"; item.OriginString = $"{devi}"; page.Add(item); } page.NextPageIndexCursor = $"{json.nextCursor}"; return(page); }
public void Add(string key, GGValue value) { Pairs.Add(key, value); }