Example #1
0
        private async Task GetChaptersImageList(CancellationToken ct)
        {
            while (!ct.IsCancellationRequested)
            {
                foreach (var chapterToDownload in ChaptersToDownload.Where(x =>
                                                                           x.Status == ChapterToDownload.ChapterStatus.Pending))
                {
                    try
                    {
                        chapterToDownload.Status = ChapterToDownload.ChapterStatus.GettingImageList;
                        if (chapterToDownload.ImagesUrls.Count < 1)
                        {
                            await chapterToDownload.GetImages(ct);
                        }
                        chapterToDownload.Status = ChapterToDownload.ChapterStatus.ReadyToDownload;
                    }
                    catch
                    {
                        chapterToDownload.Status = ChapterToDownload.ChapterStatus.Error;
                    }
                }

                await Task.Delay(1000, ct);
            }
        }
Example #2
0
 private void SetDownloadsPending()
 {
     foreach (var chapter in ChaptersToDownload.Where(
                  ch => ch.Status != ChapterToDownload.ChapterStatus.Complete))
     {
         chapter.Status = ChapterToDownload.ChapterStatus.Pending;
     }
 }
Example #3
0
 private void RmChaptersFromDownloadInternal(IList chapters)
 {
     if (chapters.Count < 1)
     {
         return;
     }
     foreach (var chapter in chapters.Cast <ChapterToDownload>().ToList())
     {
         ChaptersToDownload.Remove(chapter);
     }
 }
Example #4
0
 private void AddChaptersToDownloadInternal(IEnumerable <Chapter> chapters)
 {
     foreach (var chapter in chapters
              .ToList()
              .Where(chapter =>
                     ChaptersToDownload.All(chapterToDownload => chapterToDownload.Url != chapter.Url))
              .Reverse())
     {
         ChaptersToDownload.Add(new ChapterToDownload(CurrentManga, chapter));
     }
 }
Example #5
0
        private async Task CheckForNewDownloads(CancellationToken ct)
        {
            while (true)
            {
                ct.ThrowIfCancellationRequested();
                Progress = ChaptersToDownload.Sum(ch => ch.Progress) / ChaptersToDownload.Count;
                if (NoNewDownloads)
                {
                    await CancelDownload.Execute();
                }

                if (AnyNewDownload)
                {
                    await _currentDownloads.WaitAsync(ct);

                    _ = DownloadChapterImages(ChapterReadyToDownload, ct);
                }

                await Task.Delay(500, ct);
            }
        }