Следим за качественными цифровыми релизами фильмов без суеты

r7mrmnpns2sclvhcpe27pdohz8q.png

В большинстве случаев качественные нелегальные раздачи какого-то фильма начинают появляться только после цифрового релиза (не путайте цифровые релизы с премьерами в кинотеатрах), т.е. в VOD-сервисах или на Blu-ray. Под качественными подразумеваются BDRip 1080p, BDRemux и UHD BDRemux, самый минимум — это WEB-DL 1080p (чаще всего из iTunes), с русскоязычными звуковыми дорожками от лицензионного издания Blu-ray или из iTunes. А до этого с раздачами фильма творится чехарда с комбинацией мха и опилок, которая может ввести в заблуждение зрителя, желающего смотреть новинки с хорошим качеством.
Кстати, вы знали, что какие-то ребята недавно взломали Apple TV 4K? Теперь все релизы 4K с HDR из iTunes будут попадать в сеть, как недавно попал релиз Аквамен (WEB-DL 2160p HDR). Битрейт там стыдный, но лучше, чем ничего до выхода (UHD) Blu-ray. Бокс Apple TV был взломан давно, а iTunes служит коверным поставщиком качественных дорожек Dolby Digital 5.1 с русским дубляжом.

ВНИМАНИЕ! В заметке идёт речь о нелегальном контенте. Но никаких ссылок на этот нелегальный контент, как и самого нелегального контента, в статье нет.

ВНИМАНИЕ! Заметка не оправдывает использование нелегального контента. Нелегальный контент — это плохо, без всяких споров.

ВНИМАНИЕ! В заметке содержится информация об использовании двух методов частного API КиноПоиск (/k/v1/films/releases/digital и getKPFilmDetailView), которые нарушают правила использования сервиса КиноПоиск. Хоть разные методы из API КиноПоиск используются в сотнях программ и на сайтах легально и нелегально, это является формальным основанием, чтобы снять заметку с публикации при запросе.

Программу из заметки я сделал (на Python) для себя за пару вечеров. Делюсь ей, потому что она может оказаться кому-то полезной.

Суть в следующем… Программа раз в сутки загружает список всех цифровых релизов за последние 60 дней (из КиноПоиск). Для каждого релиза на rutor ищутся раздачи высокого качества. rutor является открытым торрент-трекером с хорошим тегированием в раздачах. Если качественных раздач пока нет, то релиз исключается. Никаких авторских или кустарных переводов, никаких Line. Только BDRip 1080p (или BDRip-HEVC 1080p), BDRemux и UHD BDRemux с русскими дорожками с лицензионного диска или iTunes, или любой другой официальный дубляж. В случае, когда для релиза нет пока ещё BD, отображается ссылки на WEB-DL 1080p и WEB-DL 2160p (чаще всего из iTunes). Из нескольких раздач одинакового типа выбирается одна с большим количеством сидеров (например, бывает две раздачи одного типа от двух популярных релизных групп сразу). Все релизы отсортированы по среднеарифметическому между рейтингом КиноПоиск и IMDb. Для всех релизов подгружается информация с КиноПоиск. Программа формирует удобный HTML, просто в браузере открываете ссылку и выбираете, что из новинок посмотреть в отличном качестве — нажимаете кнопку и получаете актуальный торрент-файл. Больше не нужно перебирать и искать правильную раздачу, изучать, есть ли уже фильм с отличным качеством видео и дубляжом — открываете страничку и всё у вас перед глазами.

Вот пример результата от 13.03.2019, который вы получите (ссылки на торрент-файлы в примере искажены, чтобы ничего не нарушать).

co8xzv_axjr0af6jfl0z2gr3ebo.png

В идеально случае WEB-DL 1080p и WEB-DL 2160p (SDR, HDR) нужно исключить. Но суть в том, что некоторые релизы так и не выйдут никогда на Blu-ray, при этом они доступны в iTunes с приемлемым качеством и качественной звуковой дорожкой. Так что отказаться от WEB-DL 1080p и WEB-DL 2160p нельзя. Тем более, фанаты Apple (владельцы Apple TV) потребляют контент такого качества и не жалуются. Например:

xxjs3qu937zo48_r8gia7kzzqlm.png

Программа на Python и может работать, где угодно — на компьютере, на выделенном сервере, на маршрутизаторе с поддержкой менеджера пакетов ПО (например, OpenWrt или с поддержкой Entware).

В заметке я рассмотрю случай, когда программа будет крутиться на маршрутизаторе с поддержкой Entware. В моём случае Keenetic. Это очень просто и удобно.

Установка необходимых пакетов на маршрутизаторе

opkg update
opkg install wget ca-certificates mc python3 python3-pip lighttpd-mod-cgi cron


wget — программа для загрузки файлов. Она понадобится только для первоначальной настройки.
ca-certificates — сертификаты для wget.
mc — файловый менеджер Midnight Commander. Он нужен лишь из-за удобного редактора mcedit. Если вы привыкли пользоваться другим текстовым редактором, то mc можно не устанавливать.
python3 — интерпретатор Python.
python3-pip — менеджер пакетов Python.
lighttpd-mod-cgi — веб-сервер lighttpd.
cron — планировщик заданий.

Загрузка основного файла программы

mkdir -p /opt/etc/movies
wget --no-check-certificate -O /opt/etc/movies/digitalreleases.py https://raw.githubusercontent.com/Kyrie1965/torrentReleases/master/digitalreleases.py


Посмотреть его содержимое можно на GitHub.

Сама программа состоит из 5 функций:
digitalReleases (days) возвращает массив с элементами filmID, цифровые релизы за количество дней days.
filmDetail (filmID) возвращает словарь с информацией по фильму, соответствующему filmID.
rutorLinks (filmID) возвращает словарь с раздачами, соответствующими filmID.
saveHTML (movies, filePath) формирует HTML-файл по пути filePath из массива movies.
main () — соединяет всё вместе.

В самой программе, если вы планируете использовать её по прямому назначению, вам будет интересны только три изменяемых параметра: DAYS, SOCKS_IP, SOCKS_PORT. DAYS — за сколько последних дней загружать цифровые релизы. По умолчанию 60. О SOCKS_IP, SOCKS_PORT я расскажу позже, когда речь пойдёт об обходе блокировок. Если вы захотите изменить параметры в программы, то откройте файл в редакторе, например, mcedit, измените и сохраните (F2 — сохранить, F10 — выйти).

mcedit /opt/etc/movies/digitalreleases.py


Конфигурация и запуск веб-сервера


Веб-сервер нужен для того, чтобы устройства в локальный сети через браузер могли забирать генерируемый файл releases.html. Откройте файл /opt/etc/lighttpd/lighttpd.conf:

mcedit /opt/etc/lighttpd/lighttpd.conf


Чтобы вставить из буфера, используйте Shift+Insert, сохранить — F2, выйти — F10.

Измените строку #server.port = 80 на:

server.port = 81


Запустите веб-сервер:

/opt/etc/init.d/S80lighttpd start


Добавление задания в cron


Добавим в cron задачу, которая каждый день в 6 утра будет запускать digitalreleases.py и генерировать актуальный файл с релизами.

Откройте в редакторе файл /opt/etc/crontab:

mcedit /opt/etc/crontab


Добавьте в конце:

00 06 * * * root /opt/bin/python3 /opt/etc/movies/digitalreleases.py


При желании вы можете закомментировать все остальные шаблонные задачи. Запустите cron:

/opt/etc/init.d/S10cron start


Финальная настройка


Запустите программу вручную в первый раз, чтобы она сгенерировала файл /opt/share/www/releases.html (можете следить за ходом исполнения программы):

python3 /opt/etc/movies/digitalreleases.py


В дальнейшем с помощью cron файл releases.html будет обновляться раз в сутки автоматически.

Всё готово! Откройте в браузере на любом устройстве в вашей локальной сети ссылку http://192.168.0.1:81/releases.html (замените 192.168.0.1 на адрес вашего маршрутизатора).

qx3ou4tiup7w-qfwdfuuzcazzpy.png

Дополнение об обходе блокировок


В заметке подразумевается, что сайт rutor.info доступен у вас с маршрутизатора. Если это не так, например, он заблокирован, то при выполнении digitalreleases.py вы получите соответствующее сообщение.

Решить это очень просто. Если у вас на маршрутизаторе ещё не установлен сервис Tor, то установите его:

opkg update
opkg install tor tor-geoip


Если Tor уже был установлен, то в файле конфигурации (/opt/etc/tor/torrc) просто добавьте строчку:

SOCKSPort 127.0.0.1:9050


Если Tor не был установлен до этого, то удалите содержимое конфигурационного файла Tor:

cat /dev/null > /opt/etc/tor/torrc


Откройте файл конфигурации Tor в редакторе:

mcedit /opt/etc/tor/torrc


Вставьте (Shift+Insert) содержимое:

User root
PidFile /opt/var/run/tor.pid
ExcludeExitNodes {RU},{UA},{AM},{KG},{BY}
StrictNodes 1
SOCKSPort 127.0.0.1:9050
ExitRelay 0
ExitPolicy reject *:*
ExitPolicy reject6 *:*
GeoIPFile /opt/share/tor/geoip
GeoIPv6File /opt/share/tor/geoip6
DataDirectory /opt/var/lib/tor


Краткое описание конфигурации:

  • Исключить выходные узлы: Россия, Украина, Армения Киргизия, Беларусь.
  • Повесить SOCKS прокси на адрес 127.0.0.1, порт 9050.
  • Запретить быть точкой выхода.


Запустите/перезапустите Tor:

/opt/etc/init.d/S35tor restart


Теперь нужно сделать так, чтобы в функции rutorLinks реквесты шли через запущенный прокси-сервер. Для этого установите библиотеку pysocks:

pip3 install --upgrade pip setuptools
pip3 install pysocks


Откройте digitalreleases.py и укажите SOCKS_IP = »127.0.0.1», SOCKS_PORT = 9050. Готово, теперь никаких проблем с блокировками rutor для программы.

© Habrahabr.ru