public void SaveDownloadInfo(HqDownloadInfo downloadInfo) { lock (_lock2) { if (!string.IsNullOrEmpty(downloadInfo.Hq.Link)) { if (downloadInfo.Hq.Chapters != null && downloadInfo.Hq.Chapters.Count() > 0) { foreach (var chapter in downloadInfo.Hq.Chapters) { chapter.Hq = null; if (chapter.Pages != null && chapter.Pages.Count() > 0) { foreach (var page in chapter.Pages) { page.Chapter = null; } } } } using (StreamWriter file = File.CreateText($"{downloadInfo.Path}\\DownloadInfo.Json")) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, downloadInfo); } _downloadContext.HqDownloadInfo.SaveOrReplace(downloadInfo); } } }
public List <HqDownloadInfo> GetHqsDownloadInfo() { lock (_lock3) { CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"Processando arquivos...")); var list = new List <HqDownloadInfo>(); foreach (var loc in DownloadConfiguration.DownloadLocations) { var drInfo = new DirectoryInfo(loc); if (drInfo != null) { var dirs = drInfo.GetDirectories(); if (dirs != null && dirs.Count() > 0) { CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"{dirs.Count()} diretoórios encontrados")); foreach (var dir in dirs) { var downloadInfo = new HqDownloadInfo(); CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"Buscando informações de {dir.Name}")); if (File.Exists($"{dir.FullName}\\DownloadInfo.Json")) { using (StreamReader file = File.OpenText($"{dir.FullName}\\DownloadInfo.Json")) { JsonSerializer serializer = new JsonSerializer(); downloadInfo = (HqDownloadInfo)serializer.Deserialize(file, typeof(HqDownloadInfo)); } if (!string.IsNullOrEmpty(downloadInfo.Hq.Link)) { if (_downloadContext.Hq.Find().Where(x => x.Link == downloadInfo.Hq.Link).Execute().FirstOrDefault() is Hq hq) { downloadInfo.Hq = hq; _downloadContext.HqDownloadInfo.SaveOrReplace(downloadInfo); } } } else { var hq = new Hq { Title = dir.Name }; downloadInfo = new HqDownloadInfo { Hq = hq, Path = dir.FullName }; } if (downloadInfo != null && downloadInfo.Hq != null) { CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"{downloadInfo.Hq.Title} adicionado!")); list.Add(downloadInfo); } } } } } return(list); } }
public HqDownloadInfo GetChaptersFromDownloadInfo(HqDownloadInfo downloadInfo) { lock (_lock4) { downloadInfo.Hq.Chapters = new List <Chapter>(); var subDirInfo = new DirectoryInfo(downloadInfo.Path); if (subDirInfo != null) { var subDirs = subDirInfo.GetDirectories(); var index = 1; if (subDirs != null && subDirs.Count() > 0) { foreach (var chapDir in subDirs) { CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"Adiconando capitulo {chapDir.Name}...")); var count = 0; var chapName = Regex.Replace(chapDir.Name, @"\d+", n => { var value = n.Value; var replacement = value.PadLeft(4, '0'); count++; if (count <= 1) { return(replacement); } return(value); }); var chap = new Chapter { Id = index, Title = chapName, Pages = new List <Page>() }; var pageFiles = chapDir.GetFiles(); if (pageFiles != null && pageFiles.Count() > 0) { foreach (var file in pageFiles) { var num = int.Parse(Path.GetFileNameWithoutExtension(file.Name)); CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"Adiconando página {num}...")); chap.Pages.Add(new Page { Id = num, Number = num, Source = file.FullName }); } } index++; downloadInfo.Hq.Chapters.Add(chap); } downloadInfo.Hq.Chapters = downloadInfo.Hq.Chapters.OrderBy(x => x.Title).ToList(); downloadInfo.LastDownloadedChapter = downloadInfo.Hq.Chapters.Last(); } } return(downloadInfo); } }
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 DeleteDownloadInfo(HqDownloadInfo downloadInfo, bool deleteFiles = false) { lock (_lock) { if (downloadInfo.Hq != null) { _downloadContext.HqDownloadInfo.Delete(downloadInfo); if (deleteFiles && !string.IsNullOrEmpty(downloadInfo.Path)) { GC.Collect(); GC.WaitForPendingFinalizers(); Directory.Delete(downloadInfo.Path, true); } } } }
public void SaveDetails() { Task.Run(() => { var info = new HqDownloadInfo(); Dispatcher.Invoke(() => { info = _detailsViewModel.DownloadInfo; info.Hq = _editModel.Hq; info.Hq.Chapters = _detailsViewModel.DownloadInfo.Hq.Chapters; }); _downloadManager.SaveDownloadInfo(info); Dispatcher.Invoke(() => { _detailsViewModel.DownloadInfo = info; _hqStatus.Hq = info.Hq; _editModel.Visibility = false; _editModel.ResultVisibility = false; }); }); }
public void DeleteHq() { var id = _detailsViewModel.DownloadInfo.Hq.Id; var path = _detailsViewModel.DownloadInfo.Path; var hq = new Hq { Id = id }; _hqStatus.Hq = null; _detailsViewModel.DownloadInfo = null; _list = null; var info = new HqDownloadInfo { Hq = hq, Path = path }; Task.Run(() => { _downloadManager.DeleteDownloadInfo(info, true); Dispatcher.Invoke(() => { NavigationManager.GoBack(); }); }); }
public void DeleteDownloadInfo(HqDownloadInfo downloadInfo, bool deleteFiles = false) => _downloadInfoHelper.DeleteDownloadInfo(downloadInfo, deleteFiles);
public void SaveDownloadInfo(HqDownloadInfo downloadInfo) => _downloadInfoHelper.SaveDownloadInfo(downloadInfo);
public HqDownloadInfo GetChaptersFromDownloadInfo(HqDownloadInfo downloadInfo) => _downloadInfoHelper.GetChaptersFromDownloadInfo(downloadInfo);