Beispiel #1
0
        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 = "Ошибка на этапе парсинга страницы";
            }
        }
Beispiel #2
0
 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;
     }
 }