private void Downloader_FinishDownload(object sender, DownloaderHtmlPageArgs e) { // если нужного узла не будет - null HtmlNodeCollection htmlNodes = e.Page.DocumentNode.SelectNodes(@"//div[@id=""index""]//tr[position()>1]/td[2]"); // необходимо для добавления корректной ссылки на страницу раздачи // по умолчанию ссылка парситься без домена первого уровня string rutorMainUrl = UriWork.OriginalString.Replace(@"/soft", ""); if (htmlNodes != null) { List <ItemList> postsList; postsList = htmlNodes.Select((el, i) => new ItemList { // HtmlDecode необходим чтобы привести HTML escape последовательности // в нормальный вид Name = HttpUtility.HtmlDecode(el.LastChild.InnerText), Href = rutorMainUrl + el.LastChild.GetAttributeValue("href", null), Index = i, Magnet = el.ChildNodes[1].GetAttributeValue("href", null), }).ToList(); ItemListArgs eventArgs = new ItemListArgs(postsList); //вызываем событие. аналог if(onPostReceived!=null)onPostReceived(arg); ListReceived?.Invoke(this, eventArgs); } else { Program.statusBarGlobal.Message = "Ошибка на этапе парсинга страницы"; } }
private void _loadPanel(string header) { switch (header) { case "News Feed": if (EventsRequest == null) { EventsRequest = new ListReceived(_githubService.Username); } break; case "Repos": if (OwnedRepos == null) { OwnedRepos = _githubService.Load(new List()); _githubService.Load(new ListWatched(_githubService.Username), result => { WatchedRepos = new ObservableCollection<Repository>(result.Where(repo => !repo.Owner.Login.Equals(_githubService.Username, StringComparison.InvariantCultureIgnoreCase))); }); } break; case "Follower": if (FollowersRequest == null) FollowersRequest = new UserRequest.ListFollowers(_githubService.Username); break; case "Following": if (FollowingsRequest == null) FollowingsRequest = new UserRequest.ListFollowings(_githubService.Username); break; case "Profile": if (User == null) User = _githubService.Load(new UserRequest.Get(_githubService.Username), u => User = u); break; case "Explore": if (FeaturedRepos == null) FeaturedRepos = _githubService.Load(new FeaturedRepoRequest()); break; default: break; } }