В большинстве случаев качественные нелегальные раздачи какого-то фильма начинают появляться только после цифрового релиза (не путайте цифровые релизы с премьерами в кинотеатрах), т.е. в 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, который вы получите (ссылки на торрент-файлы в примере искажены, чтобы ничего не нарушать).
В идеально случае WEB-DL 1080p и WEB-DL 2160p (SDR, HDR) нужно исключить. Но суть в том, что некоторые релизы так и не выйдут никогда на Blu-ray, при этом они доступны в iTunes с приемлемым качеством и качественной звуковой дорожкой. Так что отказаться от WEB-DL 1080p и WEB-DL 2160p нельзя. Тем более, фанаты Apple (владельцы Apple TV) потребляют контент такого качества и не жалуются. Например:
Программа на 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 на адрес вашего маршрутизатора).
Дополнение об обходе блокировок
В заметке подразумевается, что сайт 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 для программы.
Автор: Kyrie1965