예제 #1
0
 /// <summary>
 /// Добавляем страницы к манге
 /// </summary>
 /// <param name="pages">Список адресов страниц</param>
 /// <param name="mn">Инфомрация о манге</param>
 private void addMangaPages(List <string> pages, ref manga mn)
 {
     //Проходимся по списку адресов
     foreach (var url in pages)
     {
         //Добавляем информацию о странице манги
         mn.addpage(url);
     }
 }
예제 #2
0
        /// <summary>
        /// Загружаем мангу из стандартного класса
        /// </summary>
        /// <param name="manga">Манга, которую нужно загрузить</param>
        /// <returns>0 - если всё ок, иначе - код ошибки.</returns>
        public byte loadFromManga(manga manga)
        {
            byte      ex = 1;
            MangaPage buff;
            byte      result;

            try
            {
                //Проставляем значения
                name       = manga.name;
                countPages = manga.countPages;
                url        = manga.url;
                status     = (byte)manga.status;

                //Инициализируем список страниц
                pages = new List <MangaPage>();
                //Проходимся по списку страниц
                foreach (var pg in manga.pages)
                {
                    //Инициализируем новую страницу
                    buff = new MangaPage();
                    //Загружаем в неё информацию
                    result = buff.loadFromPage(pg);
                    //Если всё ок
                    if (result == 0)
                    {
                        //Добавляем её в общий список
                        pages.Add(buff);
                    }
                    else
                    {
                        //Возвращаем ошибку загрузки
                        ex = 2;
                        //Выходим из цикла
                        break;
                    }
                }

                //Всё ок
                ex = 0;
            }
            catch { ex = 1; }

            return(ex);
        }
예제 #3
0
        /// <summary>
        /// Загружаем мангу в стандартный класс
        /// </summary>
        /// <returns>Информация о манге, либо null, в случае ошибки</returns>
        public manga loadToManga()
        {
            manga ex = null;
            page  buff;

            try
            {
                //Инициализируем мангу
                ex = new manga(url);
                //Проставляем значения
                ex.name       = name;
                ex.countPages = countPages;
                ex.status     = (MangaStatus.status)status;

                //Проходимся по списку страниц
                foreach (var pg in pages)
                {
                    //Загружаем инфу о странице
                    buff = pg.loadToPage();
                    //Если всё ок
                    if (buff != null)
                    {
                        //Добавляем её в общий список
                        ex.pages.Add(buff);
                    }
                    else
                    {
                        //Возвращаем ошибку загрузки
                        ex = null;
                        //Выходим из цикла
                        break;
                    }
                }
            }
            catch { ex = null; }

            return(ex);
        }
예제 #4
0
        /// <summary>
        /// Загружаем информацию о манге
        /// </summary>
        /// <param name="info">Информация о манге</param>
        /// <returns>Флаг загрузки информации. True - загрузка была</returns>
        private bool loadMangaInfo(ref manga info)
        {
            bool ex = false;
            //Объявляем переменные
            FindNextUrlStatus      loadPagesStatus;
            string                 pageUrl, code;
            List <string>          buff;
            htmlGeHentaiParcer_NEW hp;
            decimal                startTime, finTime;

            try
            {
                //Если инфа о манге ещё не была загружена
                if (info.status == MangaStatus.status.Манга_добавлена)
                {
                    //Получаем время запуска загрузки
                    startTime = timeMicro();

                    //Загружаем страницу
                    code = loader.loadHtmlPage(info.url);
                    //Инициализируем парсер
                    hp = new htmlGeHentaiParcer_NEW(code);

                    //Если страница была загружена корректно
                    if (code.Length > 0)
                    {
                        //Получаем название манги
                        info.name = hp.getTitle();
                        //Получаем и парсим количество страниц
                        info.countPages = hp.getCountPages();

                        //Ставим дефолтные значения получения страниц
                        loadPagesStatus = FindNextUrlStatus.Страница_найдена;

                        //В цикле подгружаем все страницы манги
                        do
                        {
                            //Получаем картинки с текущей страницы
                            buff = hp.getPagesUrl();
                            //Добавляем их в основной список
                            addMangaPages(buff, ref info);
                            //Если есть ещё одна страница - продолжаем загрузку
                            loadPagesStatus = hp.GetNextPageUrl(out pageUrl);
                            //Если страница есть
                            if (loadPagesStatus == FindNextUrlStatus.Страница_найдена)
                            {
                                //Спим, чтобы сайт особо не бузил
                                Thread.Sleep(Program.settingsStorage.settings.rootPageLoadDelay);
                                //Загружаем страницу
                                code = loader.loadHtmlPage(pageUrl);
                                //Если ошибка загрузки страницы
                                if (code.Length == 0)
                                {
                                    //ОШибка - во время загрузки списка страниц манги
                                    info.status = MangaStatus.status.Ошибка_загрузки_страниц;
                                    //То выходим из цикла
                                    break;
                                }
                                //Инициализируем парсер
                                hp = new htmlGeHentaiParcer_NEW(code);
                            }
                            //Если нужно ещё допарсить картинок
                        } while (loadPagesStatus == FindNextUrlStatus.Страница_найдена);

                        //Манга загружена корректно
                        info.status = MangaStatus.status.Информация_загружена;

                        //Получаем время завершения загрузки
                        finTime = timeMicro() - startTime +
                                  Program.settingsStorage.settings.mangaInfoLoadDelay / 1000;
                        //Пересчитываем среднее время загрузки
                        averageLoadInfoTime = (averageLoadInfoTime + finTime) / 2;

                        //Указываем, что загрузка была
                        ex = true;
                    }
                    else
                    {
                        //Ошибка - корневая страница не была загружена
                        info.status = MangaStatus.status.Ошибка_загрузки_информации;
                    }
                }
            }
            catch
            {
                info.status = MangaStatus.status.Общая_ошибка_загрузки;
            }

            return(ex);
        }