YaNesyTortiK / Kodik-Download-Watch

Небольшое Flask приложение для скачивания и просмотра аниме из базы Kodik.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kodik-Download-Watch

Описание

Небольшое Flask приложение для скачивания и просмотра аниме/дорам из базы Kodik. Также возможно создание комнат для совместного просмотра.

Технологии

  • Python
  • Flask
  • BeautifulSoup4
  • Jinja2

Как запустить

  1. Склонируйте репозиторий
  2. Создайте и активируйте виртуальное окружение
python -m venv venv
venv/Scripts/activate
  1. Установите зависимости
pip install -r requirements.txt
  1. Настройте конфигурацию программы в файле 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) (в некоторых случаях парсер может не работать, поэтому добавлен этот параметр)
  1. Запустите файл main.py
python main.py
  1. Перейдите в браузере по адресу 127.0.0.1:5000 или по локальному ip адресу (указав порт). (Если порт установлен в 80 он подставляется автоматически)

Как пользоваться сайтом

  1. Найдите требуемый тайтл/сериал/фильм:
  • Через поиск по базе Kodik (займёт некоторое время для обработки)
  • Через поиск по id шикимори (подробную инструкцию см. ниже)
  • Через поиск по id кинопоиска (подробную инструкцию см. ниже)
  1. Выберите озвучку
  2. Выберите серию для просмотра/загрузки
  3. Для совместного просмотра нажмите соответствующую кнопку и поделитесь ссылкой с друзьями

Важные особенности сайта

  • Количество серий определяется по максимальному числу переведенных/имеющих субтитры серий. Если для выбранной озвучки нет следующей серии, но количество максимально переведенных/имеющих субтитры серий больше, то при переходе на следующую серию будет проигрываться предыдущая.
  • Если при попытке загрузки возникает ошибка 404, попробуйте выбрать другое качество видео (т.к. некоторые более старые видео могут быть ниже 720p)
  • Если при попытке просмотра видео будет не найдено, также попробуйте изменить качество
  • Для ускорения работы программы фильмы и сериалы не имеющие shikimori id в базе Kodik'а будут без постеров и доп. информации
  • В некоторых ситуациях сайт не сможет получить данные если у вас включен VPN. Если вы получили ошику что по данному запросу нет данных, попробуйте отключить VPN и попробовать снова (скорее всего проблема в плеере kodik)
  • Для использовании функции быстрой загрузки необходимо установить ffmpeg (и удостовериться что к нему можно получить досутп из терминала) (Для предзагрузки ~25 минутной серии потребуется от 20-30 секунд, для презагрузки ~1.5 часового фильма потребуется 2-3 минуты)

Совместный просмотр

Функция совместного просмотра позволяет создать публичную комнату, куда можно зайти по ссылке. Все пользователи комнаты могут ставить плеер на паузу, снимать с паузы, менять проигрываемую серию и качество просмотра. Данные изменения будут также применены и к другим пользователям комнаты. (Примерная задержка воспроизведения у разных пользователей меньше 1 секунды, однако требуется проверка с большей нагрузкой) Также при перемотке, паузе и воспроизведении плеер будет автоматически синхронизироваться с тем пользователем, который произвёл изменения.

Релизация совместного просмотра

FrontEnd: WebSocket
BackEnd: Flask-SocketIO

Как узнать id тайтла на Шикимори

  1. Зайдите на сайт Шикимори и найдите там страницу требуемого сезона/фильма.
  2. В адресной строке браузера будет виден id
  1. Теперь можно подставлять полученный id в соответствующую поисковую строку

Как узнать id тайтла на Кинопоиске

  1. Зайдите на сайт Кинопоиска и найдите там страницу требуемого сериала/фильма.
  2. В адресной строке браузера будет виден id
  • Примеры:

    https://www.kinopoisk.ru/series/749374/
                                                       ^^^^^
    В данном случае id будет "749374"

    https://www.kinopoisk.ru/series/1220920/
                                                        ^^^^^
    В данном случае id будет "1220920"

  1. Теперь можно подставлять полученный id в соответствующую поисковую строку

Про токен

Данный токен был найден в открытых источниках. Для его изменения в файле config.py измените соответствующую строку

About

Небольшое Flask приложение для скачивания и просмотра аниме из базы Kodik.


Languages

Language:Python 65.2%Language:HTML 30.9%Language:JavaScript 3.9%