Exemplo n.º 1
0
 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);
             }
         }
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
            }
        }
Exemplo n.º 5
0
 public void DeleteManga(DownloadedHq downloadedHq) =>
 Directory.Delete(downloadedHq.Location, true);