Пример #1
0
 private void btn_downloadAllMangaScanned_Click(object sender, EventArgs e)
 {
     try
     {
         Stopwatch dlTime = new Stopwatch();
         dlTime.Start();
         if (lb_mangaScanned.SelectedItems.Count > 0)
         {
             allButtonDisable();
             List <Manga> mangaLst = new List <Manga>();
             foreach (Manga m in lb_mangaScanned.SelectedItems)
             {
                 mangaLst.Add(m);
             }
             Manga.infDlZip(mangaLst);
             //une fois terminé, on vide la liste des chapitres à dl;
             foreach (Manga m in lb_mangaScanned.SelectedItems)
             {
                 m.MangaChapToDlLst.Clear();
                 m.MangaChapCompleteLst.Clear();
             }
             allButtonEnable();
         }
         dlTime.Stop();
         String time = dlTime.Elapsed.Seconds.ToString();
         String msg  = "Téléchargement terminé en " + time + " secondes...";
         MessageBox.Show(msg, "Cool", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, ex.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Пример #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;
         }
     }
 }
Пример #3
0
        private void btn_scanAllMangas_Click(object sender, EventArgs e)
        {
            LelScan      lel      = new LelScan();
            List <Manga> mangaLst = Manga.getAllManga(lel);

            addMangaToScannedList(mangaLst);
        }
Пример #4
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);
        }
Пример #5
0
        /***************    BUTTONS    ***************/
        private void btn_scanPopularManga_Click(object sender, EventArgs e)
        {
            LelScan lel = new LelScan();
            //récupère la liste des mangas populaires
            List <Manga> mangaLst = Manga.getAllPopularMangaList(lel);

            addMangaToScannedList(mangaLst);
        }
Пример #6
0
        internal static void infDlZip(List <Manga> mangaLst)
        {
            LelScan lel = new LelScan();

            Manga.getInfosMangas(mangaLst, lel);
            Outils.dlMangaWebClient(mangaLst);
            Outils.zipAndDel(mangaLst);
        }
Пример #7
0
        private void btn_downloadMangaFollowed_Click(object sender, EventArgs e)
        {
            allButtonDisable();
            List <Manga> mLst = (List <Manga>)lb_mangaFollowed.DataSource;

            Manga.infDlZip(mLst);
            //on met à jour la liste des mangas suivis avec le chapitre le plus haut DL
            Outils.updateFicMangaFollowed(mLst);
            MessageBox.Show("Les téléchargements des mangas suivis sont terminés", "Cool", MessageBoxButtons.OK, MessageBoxIcon.Information);
            allButtonEnable();
        }
Пример #8
0
        private static List <Manga> addMangaToMangaLst(IEnumerable <String> mangaUrl)
        {
            List <Manga> mPopLst = new List <Manga>();

            foreach (var url in mangaUrl)
            {
                Manga manga = new Manga(new Uri(url));
                mPopLst.Add(manga);
            }
            return(mPopLst);
        }
Пример #9
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";
     }
 }
Пример #10
0
        /**********   Fin Constructeurs ***********/


        /**********   Méthodes ***********/
        public static IEnumerable <String> getChapsLinksFromManga(Manga manga, HtmlAgilityPack.HtmlDocument mangaPage)
        {
            //On récupère toutes les divs qui ont pour class manga-name
            IEnumerable <String> links =
                from h5 in mangaPage.DocumentNode.Descendants("h5")
                from a in h5.Descendants("a")
                let href = a.GetAttributeValue("href", null)
                           where href != null
                           select href;

            return(links);
        }
Пример #11
0
 public Chapitre(Manga manga, string chapTitleUrl, string chapUrl)
 {
     MangaPath        = manga.MangaPath;
     ChapUrl          = new Uri(chapUrl);
     ChapPicLst       = new List <Picture>();
     ChapTitleFromUrl = chapTitleUrl;
     int.TryParse(ChapTitleFromUrl.Split(' ').Last(), out int i);
     ChapNumber             = i;
     ChapNbrPage            = 0;
     ChapNbrPageAlreadyDled = 0;
     chapAlreadyDled        = false;
 }
Пример #12
0
 internal static void zipAndDel(Manga m1)
 {
     if (Program._compress)
     {
         foreach (Chapitre chap in m1.MangaChapToDlLst)
         {
             string startPath = chap.ChapPath;
             string zipPath   = chap.ChapPath + @".zip";
             ZipFile.CreateFromDirectory(startPath, zipPath);
             Directory.Delete(chap.ChapPath, true);
         }
     }
 }
Пример #13
0
        /// <summary>
        /// Récupère tous les mangas du site LelScan
        /// </summary>
        /// <param name="mLst"></param>
        /// <returns></returns>
        public static List <Manga> getAllManga(List <Manga> mLst)
        {
            HtmlWeb web = new HtmlWeb();
            //par défault on commence à la page 1
            String url  = lelScanUrlMangaList.ToString();
            bool   next = true;

            //tant qu'il y a une page suivante
            while (next)
            {
                //on charge la page suivante
                HtmlAgilityPack.HtmlDocument docMangaLst = web.Load(url);
                //on récupère tous les mangas sur cette page
                var mangaNodes =
                    from h5 in docMangaLst.DocumentNode.Descendants("h5")
                    let href = h5.ChildNodes.First().GetAttributeValue("href", null)
                               where href != null
                               select href;

                foreach (var mangaUrl in mangaNodes)
                {
                    var title = mangaUrl.Split('/').Last();
                    Uri urlM  = new Uri(mangaUrl);

                    Manga m = new Manga(title, urlM);
                    mLst.Add(m);
                }
                //on détermine la prochaine page
                var nxtPage =
                    from ul in docMangaLst.DocumentNode.Descendants("ul")
                    let classe = ul.GetAttributeValue("class", null)
                                 where classe == "pagination"
                                 from a in ul.Descendants("a")
                                 let rel = a.GetAttributeValue("rel", null)
                                           where rel == "next"
                                           let href = a.GetAttributeValue("href", null)
                                                      where href != null
                                                      select href;
                String nextUrl = nxtPage.FirstOrDefault();
                //s'il n'y a pas de prochaine page on arrête
                if (nextUrl != null && nextUrl.Contains("page"))
                {
                    url = nextUrl;
                }
                else
                {
                    next = false;
                }
            }
            return(mLst);
        }
Пример #14
0
        public Chapitre(Manga manga, Uri url)
        {
            MangaPath  = manga.MangaPath;
            ChapUrl    = url;
            ChapPicLst = new List <Picture>();
            int idxLstSeg = url.Segments.Length - 1;

            ChapTitleFromUrl = url.Segments[idxLstSeg];
            int.TryParse(ChapTitleFromUrl.Split(' ').Last(), out int i);
            ChapNumber             = i;
            ChapNbrPage            = 0;
            ChapNbrPageAlreadyDled = 0;
            chapAlreadyDled        = false;
        }
Пример #15
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);
        }
Пример #16
0
        /// <summary>
        /// Récupère la liste de tous les manga populaires de lelscan
        /// </summary>
        /// <returns></returns>
        public static List <Manga> getAllPopularMangaList(object o)
        {
            HtmlWeb web = new HtmlWeb();
            IEnumerable <String> mangaUrl;

            if (o is LelScan)
            {
                LelScan lel = (LelScan)o;
                HtmlAgilityPack.HtmlDocument LelScanHtmlPage = web.Load(lel.LelScanUrlRoot);
                mangaUrl = LelScan.getAllPopularMangaLinks(LelScanHtmlPage);
            }
            else
            {
                throw new Exception();
            }
            return(Manga.addMangaToMangaLst(mangaUrl));
        }
Пример #17
0
        public static List <Manga> getFavAndPopulateLB()
        {
            String[]     lines        = Outils.readTxtFile(Program._followedManga);
            List <Manga> mFollowedLst = new List <Manga>();

            foreach (String l in lines)
            {
                String   site = l.Substring(0, 1);
                String   url  = Outils.searchSite(site).ToString();
                String[] s    = l.Substring(1).Split(new[] { Program._separator }, StringSplitOptions.RemoveEmptyEntries);
                int.TryParse(s[2], out int nbrHigherChap);
                url += s[0];
                Manga m = new Manga(new Uri(url));
                m.MangaPath  = s[1];
                m.HigherChap = nbrHigherChap;
                mFollowedLst.Add(m);
            }
            return(mFollowedLst);
        }
Пример #18
0
        public static List <Manga> updFavPath()
        {
            String[]     lines        = Outils.readTxtFile(Program._followedManga);
            List <Manga> mFollowedLst = new List <Manga>();

            for (int i = 0; i < lines.Length; i++)
            {
                String   site   = lines[i].Substring(0, 1);
                String[] s      = lines[i].Substring(1).Split(new[] { Program._separator }, StringSplitOptions.RemoveEmptyEntries);
                Manga    m      = new Manga(new Uri(s[0]));
                String   number = s[2];
                int.TryParse(number, out int nbrHigherChap);
                s[1]         = m.MangaPath;
                m.HigherChap = nbrHigherChap;
                mFollowedLst.Add(m);
                Outils.reencodeSite(m.MangaUrl);
                lines[i] = m.MangaUrl.ToString() + Program._separator + m.MangaPath + Program._separator + number;
            }
            File.WriteAllLines(Program._followedManga, lines);
            return(mFollowedLst);
        }