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); })); }
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)); }
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); })); }