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);
            }
        }
Exemple #4
0
        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);
             }
         }
     }
 }
Exemple #6
0
 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;
         });
     });
 }
Exemple #7
0
        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();
                });
            });
        }
Exemple #8
0
 public void DeleteDownloadInfo(HqDownloadInfo downloadInfo, bool deleteFiles = false) =>
 _downloadInfoHelper.DeleteDownloadInfo(downloadInfo, deleteFiles);
Exemple #9
0
 public void SaveDownloadInfo(HqDownloadInfo downloadInfo) =>
 _downloadInfoHelper.SaveDownloadInfo(downloadInfo);
Exemple #10
0
 public HqDownloadInfo GetChaptersFromDownloadInfo(HqDownloadInfo downloadInfo) =>
 _downloadInfoHelper.GetChaptersFromDownloadInfo(downloadInfo);