public async Task <ComicDetail> StoreAsync() { KeepingAction?.Invoke(null, null, null, null, KeepingActionTypes.BeginGetEntity); OnBeginGetEntity(); var entity = await Provider.GetChaptersAsync(Address); try { if (entity is null) { return(null); } var detail = new ComicDetail { Entity = entity }; var cwps = new List <ChapterWithPage>(entity.Chapters.Length); foreach (var item in entity.Chapters) { if (tokenSource.IsCancellationRequested) { break; } KeepingAction?.Invoke(entity, item, null, null, KeepingActionTypes.BeginStoreChapter); OnBeginStoreChapter(entity, item); try { var cwp = await StoreChapterAsync(entity, item); cwps.Add(cwp); } catch (Exception ex) { KeepingAction?.Invoke(entity, item, null, ex, KeepingActionTypes.StoreChapterException); OnStoreChapterException(entity, item, ex); } KeepingAction?.Invoke(entity, item, null, null, KeepingActionTypes.EndStoreChapter); OnEndStoreChapter(entity, item); } if (!tokenSource.IsCancellationRequested) { var streamManager = AppEngine.GetRequiredService <RecyclableMemoryStreamManager>(); var str = JsonHelper.Serialize(detail); var buffer = Encoding.UTF8.GetBytes(str); var path = ComicIndexName; using (var stream = streamManager.GetStream()) { stream.Write(buffer, 0, buffer.Length); stream.Seek(0, SeekOrigin.Begin); await storeService.SaveAsync(path, stream); } } return(detail); } finally { KeepingAction?.Invoke(entity, null, null, null, KeepingActionTypes.EndGetEntity); OnEndGetEntity(entity); } }
public static DownloadLink LoadDownloadAsync(this IServiceProvider host, string address, ComicDetail detail, IComicSaver saver) { var provider = host.GetComicProvider(address); if (provider == null) { return(default);
public ComicDownloadRequest(IComicSaver saver, ComicEntity entity, ComicDetail detail, IReadOnlyCollection <DownloadItemRequest> requests, IComicSourceProvider provider) { Detail = detail; Entity = entity; Saver = saver; DownloadRequests = requests; Provider = provider; }
public void GivenValueInit_PropertyMustEqualGiven() { var saver = new NullSaver(); var entity = new ComicEntity(); var detail = new ComicDetail(); var reqs = new List <DownloadItemRequest>(); var provider = new NullSourceProvider(); var req = new ComicDownloadRequest(saver, entity, detail, reqs, provider); Assert.AreEqual(saver, req.Saver); Assert.AreEqual(entity, req.Entity); Assert.AreEqual(detail, req.Detail); Assert.AreEqual(reqs, req.DownloadRequests); Assert.AreEqual(provider, req.Provider); var listener = new NullDownloadListener(); req.Listener = listener; Assert.AreEqual(listener, req.Listener); }
//lấy link tập void crawlTrap(ChromeDriver chrome, string url, int codeComic) { chrome.Url = (url); chrome.Navigate(); var nodeList = chrome.FindElementsByCssSelector("#info > table > tbody > tr > td > a").ToList(); var nameComic = chrome.FindElementsByCssSelector("body > table > tbody > tr:nth-child(1) > td:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(2) > a:nth-child(6)").FirstOrDefault().Text + "漫畫"; //漫畫 : truyện tranh foreach (var item in nodeList) { ComicDetail comic = new ComicDetail(); comic.link = item.GetAttribute("href"); comic.name = nameComic + "-" + item.Text; comic.codeComic = codeComic; db.ComicDetails.Add(comic); db.SaveChanges(); } }