コード例 #1
0
 private IAsyncOperation <LoadItemsResult <Gallery> > loadCore(bool reIn)
 {
     return(AsyncInfo.Run(async token =>
     {
         var doc = await Client.Current.HttpClient.GetDocumentAsync(DomainProvider.Eh.RootUri);
         var pp = doc.GetElementbyId("pp");
         if (pp is null) // Disabled popular
         {
             if (reIn)
             {
                 return LoadItemsResult.Empty <Gallery>();
             }
             else
             {
                 await DomainProvider.Eh.Settings.FetchAsync();
                 await DomainProvider.Eh.Settings.SendAsync();
                 return await loadCore(true);
             }
         }
         var nodes = (from div in pp.Elements("div")
                      where div.HasClass("id1")
                      select div).ToList();
         var ginfo = nodes.Select(n =>
         {
             var link = n.Descendants("a").First().GetAttribute("href", default(Uri));
             return GalleryInfo.Parse(link);
         }).ToList();
         var galleries = await Gallery.FetchGalleriesAsync(ginfo);
         for (var i = 0; i < ginfo.Count; i++)
         {
             handleAdditionalInfo(nodes[i], galleries[i]);
         }
         return LoadItemsResult.Create(0, galleries);
     }));
 }
コード例 #2
0
        private async Task <LoadItemsResult <Gallery> > _LoadCore(CancellationToken token)
        {
            var doc = await Client.Current.HttpClient.GetDocumentAsync(_PopularUri);

            var galleries = await GalleryListParser.Parse(doc, token);

            return(LoadItemsResult.Create(0, galleries));
        }
コード例 #3
0
        protected override IAsyncOperation <LoadItemsResult <Gallery> > LoadItemsAsync(int count)
        {
            var page = Count / 50;

            return(AsyncInfo.Run(async token =>
            {
                var uri = new Uri($"https://e-hentai.org/toplist.php?tl={(int)Toplist}&p={page}");
                var doctask = Client.Current.HttpClient.GetDocumentAsync(uri);
                token.Register(doctask.Cancel);
                var doc = await doctask;
                token.ThrowIfCancellationRequested();
                var records = doc.DocumentNode.SelectNodes("//table[@class='itg']/tr[position()>1]/td[5]/div/div[3]/a/@href").ToList();
                var gr = new List <GalleryInfo>(records.Count);
                foreach (var item in records)
                {
                    var guri = item.GetAttribute("href", DomainProvider.Eh.RootUri, null);
                    gr.Add(GalleryInfo.Parse(guri));
                }
                var galleries = await Gallery.FetchGalleriesAsync(gr);
                return LoadItemsResult.Create(page * 50, galleries);
            }));
        }