public void Download(DownloadItem downloadItem) { lock (_lock4) { var source = _sourceManager.GetSourceFromLink(downloadItem.Hq.Link); if (downloadItem.Hq.Chapters == null || downloadItem.Hq.Chapters.Count() == 0) { var hq = downloadItem.Hq; if ((_downloadContext.Chapter.Find().Where(x => x.Hq == hq && x.ToDownload == true).Execute() is List <Chapter> chaps) && chaps.Count > 0) { downloadItem.Hq.Chapters = chaps; } else { hq = new Hq(); source.GetInfo(downloadItem.Hq.Link, out hq); if (hq != null) { downloadItem.Hq = hq; } } } downloadItem.DownloadStarted = DateTime.Now; DownloadEventHub.OnDownloadStart(this, new DownloadEventArgs(downloadItem)); var hqDirectory = _directoryHelper.CreateHqDirectory(downloadItem.DownloadLocation, downloadItem.Hq.Title); var numChapters = downloadItem.Hq.Chapters.Count(); var chapAtual = 1; var failedToDownload = new List <String>(); foreach (var chapter in downloadItem.Hq.Chapters) { if (_stop) { DownloadEventHub.OnDownloadStop(this, new DownloadEventArgs(downloadItem, (downloadItem.DownloadFinished - downloadItem.DownloadStarted), failedToDownload)); break; } try { downloadItem.ActualPage = null; SaveChapter(source, downloadItem, chapter, chapAtual, numChapters, hqDirectory); } catch (Exception e) { DownloadEventHub.OnDownloadError(this, new DownloadErrorEventArgs(downloadItem, e, DateTime.Now)); failedToDownload.Add(chapter.Link); } chapAtual++; } downloadItem.DownloadFinished = DateTime.Now; var downloadInfo = new HqDownloadInfo(downloadItem); downloadInfo.Path = hqDirectory; downloadItem.IsDownloaded = true; _downloadContext.DownloadList.SaveOrReplace(downloadItem); _downloadInfoHelper.SaveDownloadInfo(downloadInfo); DownloadEventHub.OnDownloadEnd(this, new DownloadEventArgs(downloadItem, (downloadItem.DownloadFinished - downloadItem.DownloadStarted), failedToDownload)); } }
public void SaveDownloadInfo(HqDownloadInfo downloadInfo) => _downloadInfoHelper.SaveDownloadInfo(downloadInfo);