private void checkFicChap(Chapitre chap) { //le chapitre à déjà été dl si: //- un dossier avec son nom existe if (Directory.Exists(chap.ChapPath)) { chap.chapAlreadyDled = true; } //- un fichier avec son nom existe if (File.Exists(chap.ChapPath)) { chap.chapAlreadyDled = true; // il peut avoir été préfixé par un 0 } else { var files = Directory.GetFiles(chap.MangaPath, "*.*"); foreach (var f in files) { //on prends le numero sans l'extension int.TryParse(f.Split("\\").Last().Split(".").First().Split(" ").Last(), out int numChap); if (numChap == chap.ChapNumber) { chap.chapAlreadyDled = true; break; } } ; } }
/// <summary> /// Télécharge un chapitre à partir d'un objet Chapitre /// </summary> /// <param name="chap"></param> /// <returns></returns> internal void dlChapWebClient(Chapitre chap) { Console.WriteLine("Chapitre {0} en cours", chap.ChapTitleClean); DirectoryInfo chapDir = Directory.CreateDirectory(chap.ChapPath); foreach (var p in chap.ChapPicLst) { Outils.downloadFile(p.PicUrl, p.PicPath); } }
/// <summary> /// Complète l'objet Manga avec la liste des tous les chapitres trouvés /// </summary> /// <param name="manga"></param> /// <returns></returns> private void getChapsFromManga(Manga manga) { HtmlWeb web = new HtmlWeb(); HtmlDocument mangaPage = web.Load(manga.MangaUrl); var chapters = mangaPage.DocumentNode.Descendants("h5").Where(u => u.HasAttributes); foreach (var c in chapters) { String ChapTitleUrl = c.Descendants("a").First().InnerText; String ChapUrl = c.Descendants("a").First().GetAttributeValue("href", null); Chapitre chap = new Chapitre(manga, ChapTitleUrl, ChapUrl); manga.MangaChapCompleteLst.Add(chap); } }
/// <summary> /// Complète la liste de Picture d'un chapitre contenant l'ensemble des images de celui-ci. /// </summary> private void getChapPagesThread(Chapitre chap) { HtmlWeb web = new HtmlWeb(); HtmlDocument chapterPage = web.Load(chap.ChapUrl); var imgsUrl = from truc in chapterPage.DocumentNode.Descendants("img") let data = truc.GetAttributeValue("data-src", null) where data != null select data; Parallel.ForEach(imgsUrl, (imgUrl) => { Picture pic = new Picture(imgUrl); pic.PicPath = chap.ChapPath + "/" + pic.PicFullName; chap.ChapPicLst.Add(pic); }); chap.ChapNbrPage = chap.ChapPicLst.Count; }