Beispiel #1
0
        private static List <Chapitre> addChapToChapLst(Manga m, IEnumerable <String> chapsLinks)
        {
            // c'est le plus haut chapitre récupéré la dernière fois
            int             higherChap = m.HigherChap;
            List <Chapitre> cLst       = new List <Chapitre>();

            foreach (String url in chapsLinks)
            {
                Uri uri       = new Uri(url);
                int idxLstSeg = uri.Segments.Length - 1;
                int.TryParse(uri.Segments[idxLstSeg].Split(' ').Last(), out int chapNbr);
                // si on avait déjà téléchargé un chapitre plus haut, on ne redl pas celui la
                // mais on parcours quand même toute la liste car on ne sait pas dans quel ordre on récup les chapitres
                //if (chapNbr > m.HigherChap)
                //{
                Chapitre c = new Chapitre(m, uri);
                cLst.Add(c);
                if (chapNbr > higherChap)
                {
                    higherChap = chapNbr;
                }
                //}
            }
            m.HigherChap = higherChap;
            return(cLst);
        }
Beispiel #2
0
 /// <summary>
 /// Complète l'objet Manga avec la liste des tous les chapitres à télécharger
 /// </summary>
 /// <param name="manga"></param>
 public static void getChapsToDlList(Manga manga, object o)
 {
     //si le dossier existe, on à déjà téléchargé des choses pour ce manga
     //on va analyser pour exclure ce qu'on à déjà téléchargé
     //sinon on prends toute la liste
     if (Directory.Exists(manga.MangaPath))
     {
         //pour chaque chapitre on vérifie s'il existe ou pas
         foreach (var chap in manga.MangaChapCompleteLst)
         {
             Outils.checkFicChap(chap);
             //si le chapitre à déjà été rappatrié, on s'arrête la, on prends le partie pris de considérer que si le dossier / fichier existe, il est complet
             if (!chap.chapAlreadyDled)
             {
                 //Sinon, on récupère la liste des pages du chapitre et on ajoute le chapitre dans la liste à dl
                 Chapitre.getChapPages(chap, o);
                 manga.MangaChapToDlLst.Add(chap);
                 manga.MangaNbrPagesToDl += chap.ChapNbrPage;
             }
         }
     }
     else
     {
         //le répertoire n'existe pas il faut tout télécharger
         foreach (var chap in manga.MangaChapCompleteLst)
         {
             Chapitre.getChapPages(chap, o);
             manga.MangaChapToDlLst.Add(chap);
             manga.MangaNbrPagesToDl += chap.ChapNbrPage;
         }
     }
 }
Beispiel #3
0
 /// <summary>
 /// Vérifie si le chapitre à déjà été téléchargé
 /// </summary>
 /// <param name="chap"></param>
 public static 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;
         return;
     }
     if (Directory.Exists(chap.MangaPath))
     {
         var files = Directory.GetFiles(chap.MangaPath, "*.*");
         foreach (var f in files)
         {
             //on prends le numero sans l'extension
             int.TryParse(Path.GetFileNameWithoutExtension(f).Split(' ').Last(), out int numChap);
             if (numChap == chap.ChapNumber)
             {
                 chap.chapAlreadyDled = true;
                 return;
             }
         }
     }
     else
     {
         chap.chapAlreadyDled = false;
         return;
     }
 }
Beispiel #4
0
 /// <summary>
 /// Récupère tout ce qui est nécéssaire sur les mangas à partir d'une liste
 /// </summary>
 /// <param name="mangaLst"></param>
 /// <returns></returns>
 internal static List <Manga> getInfosMangas(List <Manga> mLst, object o)
 {
     foreach (Manga m in mLst)
     {
         Chapitre.getChapsFromManga(m, o);
         Outils.getChapsToDlList(m, o);
     }
     return(mLst);
 }
Beispiel #5
0
 internal static void getInfoChapitres(Chapitre c, object o)
 {
     Outils.checkFicChap(c);
     //si le chapitre à déjà été rappatrié, on s'arrête la, on prends le partie pris de considérer que si le dossier / fichier existe, il est complet
     if (!c.chapAlreadyDled)
     {
         //Sinon, on récupère la liste des pages du chapitre et on ajoute le chapitre dans la liste à dl
         Chapitre.getChapPages(c, o);
     }
 }
Beispiel #6
0
 private static void addPicToChapPicLst(Chapitre c, IEnumerable <string> picsUrl)
 {
     foreach (var picUrl in picsUrl)
     {
         Picture p = new Picture(c, new Uri(picUrl));
         p.PicPath = Path.Combine(c.ChapPath, p.PicFullName);
         c.ChapPicLst.Add(p);
     }
     c.ChapNbrPage = c.ChapPicLst.Count;
 }
Beispiel #7
0
 internal static void zipAndDel(Chapitre c)
 {
     if (Program._compress)
     {
         string startPath = c.ChapPath;
         string zipPath   = c.ChapPath + @".zip";
         ZipFile.CreateFromDirectory(startPath, zipPath);
         Directory.Delete(c.ChapPath, true);
     }
 }
Beispiel #8
0
 private void btn_getAllChapterForSelectedManga_Click(object sender, EventArgs e)
 {
     lb_chap.DataSource = null;
     if (lb_mangaScanned.SelectedItems.Count > 0)
     {
         LelScan lel = new LelScan();
         Manga   m   = (Manga)lb_mangaScanned.SelectedItem;
         Chapitre.getChapsFromManga(m, lel);
         lb_chap.DataSource    = m.MangaChapCompleteLst;
         lb_chap.DisplayMember = "ChapTitleShow";
     }
 }
Beispiel #9
0
        public Picture(Chapitre chap, Uri imgUrl)
        {
            ChapPath = chap.ChapPath;
            PicUrl   = imgUrl;
            String urlPath = PicUrl.AbsoluteUri;

            PicFullName  = Path.GetFileName(urlPath);
            PicNameNoExt = Path.GetFileNameWithoutExtension(urlPath);
            PicExt       = Path.GetExtension(urlPath);
            Regex  reg = new Regex(@"\b*\d+(,?|.?)\d*\b");
            String nbr = reg.Match(PicNameNoExt).ToString();

            int.TryParse(nbr, out int num);
            PicNumber = num;
        }
Beispiel #10
0
        /// <summary>
        /// Complète l'objet Manga avec la liste des tous les chapitres trouvés
        /// </summary>
        /// <param name="manga"></param>
        /// <returns></returns>
        public static void getChapsFromManga(Manga m, object o)
        {
            HtmlWeb web = new HtmlWeb();
            IEnumerable <String> chapsLinks;

            HtmlAgilityPack.HtmlDocument mPag = web.Load(m.MangaUrl);
            if (o is LelScan)
            {
                chapsLinks = LelScan.getChapsLinksFromManga(m, mPag);
            }
            else
            {
                throw new Exception();
            }
            m.MangaChapCompleteLst = Chapitre.addChapToChapLst(m, chapsLinks);
        }
Beispiel #11
0
        private void btn_downloadSelectedChapters_Click(object sender, EventArgs e)
        {
            allButtonDisable();
            LelScan         lel    = new LelScan();
            List <Chapitre> cDlLst = new List <Chapitre>();

            foreach (Chapitre c in lb_chap.SelectedItems)
            {
                cDlLst.Add(c);
            }
            Chapitre.getInfoChapitres(cDlLst, lel);
            Outils.dlChapWebClient(cDlLst);
            Outils.zipAndDel(cDlLst);
            MessageBox.Show("Les téléchargements des chapitres selectionnés sont terminés", "Cool", MessageBoxButtons.OK, MessageBoxIcon.Information);
            allButtonEnable();
        }
Beispiel #12
0
        public static void getChapPages(Chapitre chap, object o)
        {
            HtmlWeb web = new HtmlWeb();

            HtmlAgilityPack.HtmlDocument chapterPage = web.Load(chap.ChapUrl);
            IEnumerable <string>         picsUrl;

            if (o is LelScan)
            {
                picsUrl = LelScan.getChapPages(chapterPage);
            }
            else
            {
                throw new Exception();
            }
            addPicToChapPicLst(chap, picsUrl);
        }
Beispiel #13
0
        /// <summary>
        /// Télécharge un chapitre à partir d'un objet Chapitre
        /// </summary>
        /// <param name="chap"></param>
        /// <returns></returns>
        public static void dlChapWebClient(Chapitre c)
        {
            DirectoryInfo cDir    = Directory.CreateDirectory(c.ChapPath);
            int           lgtNeed = c.ChapPicLst.Count().ToString().Length;

            foreach (var p in c.ChapPicLst)
            {
                String path   = p.PicPath;
                String picNbr = p.PicNumber.ToString();
                int    diff   = lgtNeed - picNbr.Length;
                if (diff > 0)
                {
                    for (int i = 0; i < diff; i++)
                    {
                        picNbr = "0" + picNbr;
                    }
                    path = Path.Combine(p.ChapPath, picNbr + p.PicExt);
                }
                Outils.downloadFile(p.PicUrl.ToString(), path);
            }
        }