Парсер свежих эпизодов сериалов с сайта LostFilm
PHP 7.0 и выше
Composer
Mysql
Перед запуском, скопировать содержимое .env.example
в ту же папку в файл .env
, изменив в нем данные о соединении с БД.
Затем, выполняем composer install
для установки дополнительных пакетов.
После, нужно выполнить миграции, предварительно настроив соединение с БД - php artisan migrate
В сборке используется пакет для парсинга HTML - DiDom.
Почему он? Из-за скорости его работы и простоты. Подробнее про скорость здесь.
Также добавлен пакет debugbar для проверки скорости работы сайта и запросов. Включается в .env
файле с помощью APP_DEBUG=true
Для конфигурации проекта используется файл config/lostfilm.php
Параметры:
url
- нужен на случай, если изменится путь к страницеepisodes_per_page
- нужен на случай, если количество записей на стрнанице изменится с 15 на другое числоseason_episode_regex
- регулярное выражение для получения номера сезона и серии из строки, можно модифицировать на свой страх и рискrelease_date_reges
- регулярное выражение для получения даты релиза серии на обоих языках, можно модифицировать на свой страх и рискenable_sphinx_search
- в данный момент бесполезна. Подразумевается, что в дальнейшем для поиска можно будет подключить какую-либо поисковую систему
Скрипт можно повесить на cron с помощью Laravel Schedule в файле app/Console/Kernel.php
.
Пример:
$schedule->command('parse:lostfilm')->hourly();
Другие параметры и как настроить Cron для данной задачи, можно найти в официальной документации Laravel
php artisan parse:lostfilm --all
- нужно запускать в первую очередь. С данным флагом, будет произведена очистка таблиц с эпизодами, скрипт пройдется по всем страницам раздела и заново заполнит данные.
php artisan parse:lostfilm
- стандартный запуск парсера, будут собраны все свежие серии только за сегодняшний день.
php artisan parse:lostfilm --refresh
- запуск парсера для проверки, не была ли пропущена серия, а также на случай, если серия была добавлена "задним числом".
Скрипт пишет результаты в стандартный .log
файл фреймворка с пометкой [LostFilm parser], также пишет туда ошибки в случае их возникновения и невозможности продолжить дальнейшую работу.
Сделан задел на мультиязычность, тк таблицы разделены на основные и с локализированными описаниями.
Поиск идет на русском + английском языках, по названию сериала + названию эпизода.