public IEnumerable<Moneta> GetPage(string page) { var qq = new Queue<Moneta>(); var pagenum = 0; int.TryParse(page, out pagenum); var html = Helper.GetHtmlAsync(Constant.GetParentUrl(pagenum)); var table = Helper.GetSingleTag(html.Result, "table", "class", "adsmanager_table"); if (table != null) foreach (var tr in table.Descendants("tr")) { var tdAdsmanager = Helper.GetSingleNodeTag(tr, "td", "class", "adsmanager_table_description"); var tdCenter = Helper.GetSingleNodeTag(tr, "td", "class", "center"); if (tdAdsmanager != null && tdCenter != null) { var regexCreateIn = Regex.Match(tdCenter.InnerHtml, Constant.RegexCreateDate, RegexOptions.IgnoreCase | RegexOptions.Compiled); var regexCount = Regex.Match(tdCenter.InnerHtml, Constant.RegexViewsCount, RegexOptions.IgnoreCase | RegexOptions.Compiled); var regexId = Regex.Match(tdAdsmanager.InnerHtml, Constant.RegexGetItemId, RegexOptions.IgnoreCase | RegexOptions.Compiled); var regexCatId = Regex.Match(tdAdsmanager.InnerHtml, Constant.RegexGetItemCatId, RegexOptions.IgnoreCase | RegexOptions.Compiled); if (!regexId.Success || !regexCatId.Success || !regexCreateIn.Success || !regexCount.Success) continue; var id = int.Parse(regexId.Groups[1].Value); var catId = int.Parse(regexCatId.Groups[1].Value); var date = DateTime.ParseExact(regexCreateIn.Value, "dd.MM.yyyy",CultureInfo.InvariantCulture); var countViews = Helper.IntParce(regexCount.Groups[1].Value); qq.Enqueue(GetItem(catId, id, date, countViews)); } } return qq.ToList(); }
public void MakeTableAndTree() { Queue<Symbol> currentQueue = new Queue<Symbol>(); Ensemble.OrderBy(o => o.Frequency).ToList().ForEach(p => currentQueue.Enqueue(p)); ProbabilityTable.Add(currentQueue.ToList()); while (currentQueue.Count > 1) { var newNode = new Symbol(currentQueue.Dequeue(), currentQueue.Dequeue()); var temporaryQueue = currentQueue.ToList(); if (currentQueue.Count == 0) { currentQueue.Enqueue(newNode); } else { int index = 0; currentQueue.ToList().ForEach(p => { if (newNode.Frequency <= p.Frequency) { index = currentQueue.ToList().IndexOf(p); } else { index++; } }); temporaryQueue.Insert(index, newNode); currentQueue.Clear(); temporaryQueue.ForEach(p => currentQueue.Enqueue(p)); } ProbabilityTable.Add(currentQueue.ToList()); } }