Example #1
0
        /// <summary>
        /// Загружаем страницу манги
        /// </summary>
        /// <param name="url">Адрес страницы</param>
        /// <param name="path">Путь сохранения кратинки со страницы</param>
        /// <param name="id">Id страницы в списке</param>
        /// <param name="originalFilename">Оригинальное имя файла</param>
        /// <param name="filename">Возврат итмени загруженного файла</param>
        /// <returns>0 - всё ок, оначе - ошибка загрузки</returns>
        private byte downloadPage(string url, string path, int id, out string filename)
        {
            byte    ex = 1;
            string  imageUrl, code, imagePath, originalFilename;
            decimal startTime, finTime;

            //Ставим дефолтное значение
            filename = null;

            try
            {
                //Получаем время запуска загрузки
                startTime = timeMicro();

                //Загружаем страницу
                code = loader.loadHtmlPage(url);
                //Если страница была загружена
                if (code.Length > 0)
                {
                    //Инициализируем парсер
                    var hp = new htmlGeHentaiParcer_NEW(code);
                    //Загружаем адрес картинки
                    imageUrl = hp.getImageUrl();
                    //Если мы получили адрес картинки
                    if (imageUrl.Length > 0)
                    {
                        //Если адрес не входит в список косячных
                        if (imageUrl != failURL)
                        {
                            //Получаем оригинальное имя файла
                            originalFilename = hp.GetOriginalFileName();
                            //Формируем имя файла
                            filename = CompileFileName(originalFilename, imageUrl, id);
                            //Формируем путь загрузки
                            imagePath = $"{path}{filename}";
                            //Грузим страницу, и получаем результат
                            ex = loader.downloadFile(imageUrl, imagePath);
                            //Получаем время завершения загрузки, со временем ожидания
                            finTime = timeMicro() - startTime +
                                      Program.settingsStorage.settings.downloadMangaPageDelay / 1000;
                            //Пересчитываем среднее время загрузки
                            averageLoadTime = (averageLoadTime + finTime) / 2;
                        }
                        else
                        {
                            //Ошибка - мы привысили лимиты
                            ex = 255;
                        }
                    }
                    else
                    {
                        //Ошибка - адрес картинки не был найден
                        ex = 4;
                    }
                }
                else
                {
                    //Ошибка - страница не была загружена
                    ex = 3;
                }
            }
            catch (Exception e)
            {
                ex = 1;
                //Ставим дефолтное значение
                filename = null;
            }

            return(ex);
        }
Example #2
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);
        }