public void SaveDownloadedHq(DownloadedHq downloadedHq) { lock (_lock1) { downloadedHq.Hq.Chapters = null; var fileLoc = $"{downloadedHq.Location}\\{downloadedHq.Hq.Title}.json"; if (!File.Exists(fileLoc)) { using (StreamWriter file = File.CreateText(fileLoc)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, downloadedHq); } } } }
public List <DownloadedHq> GetDownloads() { //_downloadContext.DownloadLocation.Save(new DownloadLocation { Location = "D:\\Mangas" }); CoreEventHub.OnProcessingStart(this, null); var list = new List <DownloadedHq>(); CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, "Buscando Locais")); var locais = _downloadContext.DownloadLocation.FindAll(); if (locais != null && locais.Count() > 0) { CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, "Buscando Hqs")); foreach (var local in locais) { var directory = new DirectoryInfo(local.Location); var mangas = directory.GetDirectories(); foreach (var manga in mangas) { DownloadedHq downloadedHq = new DownloadedHq(); var json = manga.GetFiles("*.json").FirstOrDefault(); if (json != null) { using (StreamReader file = json.OpenText()) { JsonSerializer serializer = new JsonSerializer(); downloadedHq = serializer.Deserialize(file, typeof(DownloadedHq)) as DownloadedHq; } } if (downloadedHq != null) { list.Add(downloadedHq); } } } } CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, "Tudo Pronto!")); CoreEventHub.OnProcessingEnd(this, null); return(list); }
public List <DownloadedChapter> GetChapters(DownloadedHq downloadedHq) { CoreEventHub.OnProcessingStart(this, null); var chapters = new List <DownloadedChapter>(); var dir = new DirectoryInfo(downloadedHq.Location); var paths = dir.GetDirectories(); CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"Buscando Capitulos de {downloadedHq.Hq.Title}")); foreach (var path in paths) { CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, $"Adicioandn capitulo {path.Name}")); var title = path.Name; var fisrt = false; title = Regex.Replace(title, @"\b(\d+)", new MatchEvaluator((match) => { var m = match.Value; if (!fisrt) { m = m.PadLeft(3, '0'); fisrt = true; } return(m); })); var chap = new Chapter { Title = title }; var downlodeadChapter = new DownloadedChapter { Date = path.CreationTime, Location = path.FullName, Chapter = chap }; chapters.Add(downlodeadChapter); } chapters = chapters.OrderBy(x => x.Chapter.Title).ToList <DownloadedChapter>(); CoreEventHub.OnProcessingProgress(this, new ProcessingEventArgs(DateTime.Now, "Tudo Pronto!")); CoreEventHub.OnProcessingEnd(this, null); return(chapters); }
public void Download(DownloadItem downloadItem) { lock (_lock4) { var hq = downloadItem.Hq.ToObject <Hq>(); var source = _sourceManager.GetSourceFromLink(hq.Link); if (hq.Chapters == null || hq.Chapters.Count() == 0) { source.GetInfo(hq.Link, out hq, 5); } downloadItem.DownloadStarted = DateTime.Now; DownloadEventHub.OnDownloadStart(this, new DownloadEventArgs(downloadItem)); var hqDirectory = _directoryHelper.CreateHqDirectory(downloadItem.DownloadLocation, hq.Title); var numChapters = hq.Chapters.Count(); downloadItem.NumChapters = numChapters; var chapAtual = 1; var failedToDownload = new List <String>(); var coverSource = hq.CoverSource; var hqTitle = StringHelper.RemoveSpecialCharacters(hq.Title); hq.Title = hqTitle; coverSource = $"{hqDirectory}\\{hqTitle}{FormatPage(coverSource)}"; if (!File.Exists(coverSource)) { using (var webClient = new HttpClient()) { using (var response = webClient.GetAsync(hq.CoverSource).Result) { var imageByte = response.Content.ReadAsByteArrayAsync().Result; using (var binaryWriter = new BinaryWriter(new FileStream(coverSource, FileMode.Append, FileAccess.Write))) { binaryWriter.Write(imageByte); } } } } hq.CoverSource = coverSource; var chapters = hq.Chapters; var hqDownloaded = new DownloadedHq() { Hq = hq, Location = hqDirectory, Date = DateTime.Now }; _downloadHelper.SaveDownloadedHq(hqDownloaded); foreach (var chapter in chapters) { downloadItem.ActualChapterIndex = chapAtual; if (_stop) { DownloadEventHub.OnDownloadStop(this, new DownloadEventArgs(downloadItem, (downloadItem.DownloadFinished - downloadItem.DownloadStarted), failedToDownload)); break; } try { 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; downloadItem.IsDownloaded = true; //downloadItem.Hq = hq.ToBytes(); _downloadContext.DownloadList.Update(downloadItem); DownloadEventHub.OnDownloadEnd(this, new DownloadEventArgs(downloadItem, (downloadItem.DownloadFinished - downloadItem.DownloadStarted), failedToDownload)); } }
public void DeleteManga(DownloadedHq downloadedHq) => Directory.Delete(downloadedHq.Location, true);