Небольшое Flask приложение для скачивания и просмотра аниме/дорам из базы Kodik. Также возможно создание комнат для совместного просмотра.
- Python
- Flask
- BeautifulSoup4
- Jinja2
В качестве парсеров библиотека anime_parser_ru (Самописная, чтобы было проще фиксить парсеры)
- Склонируйте репозиторий
- Создайте и активируйте виртуальное окружение Windows:
python -m venv venv
venv/Scripts/activate
Linux:
python3 -m venv venv
source venv/bin/activate
- Установите зависимости Windows:
pip install -r requirements.txt
Linux:
pip3 install -r requirements.txt
Для работы некоторых функции может потребоваться установить ffmpeg. (необязательно)
- Настройте конфигурацию программы в файле config.py
- Измените APP_SECRET_KEY
- Выберите, будете ли вы кешировать данные из поиска. (Ускоряет работу программы, за счёт снижения количества запросов на сторонние сервисы, однако расходует память устройства)
- SAVE_DATA - сохранять новые данные (По умолчанию False)
- USE_SAVED_DATA - использовать уже сохранённые данные (По умолчанию False)
- SAVED_DATA_FILE - имя файла (json) для хранения данных (обязательно наличие этого файла если хотя-бы один из выше перечисленных параметров установлен в True) (По умолчанию False)
- SAVING_PERIOD - как часто (в минутах) данные будут перезаписываться в файл (По умолчанию 10)
- CACHE_LIFE_TIME - как часто (в днях) данные будут сброшены и перезаписаны (По умолчанию 1)
- Важно! Данные будут записываться, сохраняться и перезаписываться ТОЛЬКО когда программа получит такие данные в следствии запроса пользователя. К примеру, при CACHE_LIFE_TIME = 3 (дня), если никто не будет запрашивать данные у которых превышен этот лимит, данные не удаляться и не перезапишутся даже по прошествии 5 дней. Также и с SAVING_PERIOD, сохранение будет произведено только в момент каких-либо манипуляций с данными находящимися в оперативной памяти.
- ALLOW_WATCH_TOGETER - включена ли функция совместного просмотра (фактически этот параметр отвечает за появление кнопки "Смотреть вместе"). При использовании этой функции рекомендуется включить кеширование, в противном случае для каждого пользователя будет проходить поиск видео отдельно. (По умолчанию True)
- REMOVE_TIME - как долго (в минутах) будет существовать неактивная комната совместного просмотра. (По умолчанию 5)
- HOST - ip адрес сервера (по умолчанию 0.0.0.0 что позволяет подключаться как через 127.0.0.1, так и через локальный адрес в сети, что позволяет прдключаться с других устройств в этой сети)
- PORT - порт сервера (по умолчанию 5000). (Если вы хотите получать досутп по чистому ip адресу, установите этот параметр в 80)
- USE_LXML - позволяет указать использовать парсер lxml или нет (по умолчанию True) (в некоторых случаях парсер может не работать, поэтому добавлен этот параметр)
- Запустите файл main.py
python main.py
- Перейдите в браузере по адресу
127.0.0.1:5000
или по локальному ip адресу (указав порт). (Если порт установлен в80
он подставляется автоматически)
- Найдите требуемый тайтл/сериал/фильм:
- Через поиск по базе Kodik (займёт некоторое время для обработки)
- Через поиск по id шикимори (подробную инструкцию см. ниже)
- Через поиск по id кинопоиска (подробную инструкцию см. ниже)
- Выберите озвучку
- Выберите серию для просмотра/загрузки
- Для совместного просмотра нажмите соответствующую кнопку и поделитесь ссылкой с друзьями
- Количество серий определяется по максимальному числу переведенных/имеющих субтитры серий. Если для выбранной озвучки нет следующей серии, но количество максимально переведенных/имеющих субтитры серий больше, то при переходе на следующую серию будет проигрываться предыдущая.
- Если при попытке загрузки возникает ошибка 404, попробуйте выбрать другое качество видео (т.к. некоторые более старые видео могут быть ниже 720p)
- Если при попытке просмотра видео будет не найдено, также попробуйте изменить качество
- Для ускорения работы программы фильмы и сериалы не имеющие shikimori id в базе Kodik'а будут без постеров и доп. информации
- В некоторых ситуациях сайт не сможет получить данные если у вас включен VPN. Если вы получили ошику что по данному запросу нет данных, попробуйте отключить VPN и попробовать снова (скорее всего проблема в плеере kodik)
- Для использовании функции быстрой загрузки необходимо установить ffmpeg (и удостовериться что к нему можно получить досутп из терминала) (Для предзагрузки ~25 минутной серии потребуется от 20-30 секунд, для презагрузки ~1.5 часового фильма потребуется 2-3 минуты)
(не работает при совместном просмотре)
- f - вход/выход из полноэкранного режима
- m - вкл/выкл звук плеера
- d - перемотать вперед на 1:20
- a - перемотать назад на 1:20
- j - предыдущая серия
- l - следующая серия
Функция совместного просмотра позволяет создать публичную комнату, куда можно зайти по ссылке. Все пользователи комнаты могут ставить плеер на паузу, снимать с паузы, менять проигрываемую серию и качество просмотра. Данные изменения будут также применены и к другим пользователям комнаты. (Примерная задержка воспроизведения у разных пользователей меньше 1 секунды, однако требуется проверка с большей нагрузкой) Также при перемотке, паузе и воспроизведении плеер будет автоматически синхронизироваться с тем пользователем, который произвёл изменения.
FrontEnd: WebSocket
BackEnd: Flask-SocketIO
- Зайдите на сайт Шикимори и найдите там страницу требуемого сезона/фильма.
- В адресной строке браузера будет виден id
- Примеры:
https://shikimori.one/animes/z20-naruto
^^^
В данном случае id будет "z20"
https://shikimori.one/animes/29803-overlord
^^^^^
В данном случае id будет "29803"
- Теперь можно подставлять полученный id в соответствующую поисковую строку
- Зайдите на сайт Кинопоиска и найдите там страницу требуемого сериала/фильма.
- В адресной строке браузера будет виден id
- Примеры:
https://www.kinopoisk.ru/series/749374/
^^^^^
В данном случае id будет "749374"
https://www.kinopoisk.ru/series/1220920/
^^^^^
В данном случае id будет "1220920"
- Теперь можно подставлять полученный id в соответствующую поисковую строку
Данный токен был найден в открытых источниках. Для его изменения в файле config.py измените соответствующую строку