Pull to refresh

Comments 161

Круто. Давно о таком задумывался. Действительно очень круто. Еще бы в README все из хабра прописали.
Оформлю README там чуть позже.
Завел это дело на малинке, правда пришлось дефолтный конфиг на тор оставить, с Вашим конфигом не заработало почему-то. А Вы не думали сделать ссылки на страницы фильмов на кинопоиске, что-бы сразу отметить там фильм как просмотренный? Можно еще сразу торрент-файлы скачивать на устройство, чтобы не включать прокси или впн в браузере для загрузки фильма.
Если это вам нужно, то в функции saveHTML буквально две строчки добавляете и делаете заголовок кликабельным со ссылкой на сайт kinopoisk.ru. Там не сложно.
В реальности это будет полноценная программа для Android TV (как руки дойдут), чтобы удобно выбирать фильмы и смотреть их напрямую без загрузки (через Elementum или TorrServe). Веб-версия на Python просто для быстрой пробы, что всё действительно работает так, как нужно.
Не рассматривали вариант аддона для Kodi? Где его уже только нет, как разумеется и на Android TV.
Классная штука! Уже настроил на своём домашнем сервере. Теперь всегда буду в курсе новинок кино :)

P.S. Через tor заработало только после небольшой правки кода.
def rutorLinks(filmID):
	print("Загрузка торрент-ссылок для filmID " + filmID + ".")
	
	if SOCKS_IP:
		default_socket = socket.socket
		socks.set_default_proxy(socks.SOCKS5, SOCKS_IP, SOCKS_PORT)
		socket.socket = socks.socksocket

		from sockshandler import SocksiPyHandler  # from pysocks
		opener = urllib.request.build_opener(
                        SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, SOCKS_IP, SOCKS_PORT)
                        )
		urllib.request.install_opener(opener) #NOTE: global for the process
Зачем так сложно, если любой большой трекер (RuTracker, NoNaMe) предоставляют гибкие RSS-ленты. Например, можно отслеживать только игровые новинки, или видео только HD/BD (можно точно указать, какие разделы включить в ленту).

Пример линка: http://nnm-club.me/forum/rss2.php?t&f=270,218,954&h=160

Добавил в любой RSS-ридер и быстро пролистал вечером за 3 минуты.
Объяснения в первом абзаце.
Такое же мнение. Аналогично, прилетает на мобильник RSS лента с определенных разделов в трекере. Очень удобно.
Да, нужно качество выше.
1. При этом я знаю только названия не устраивающего меня качества. Всё, что выше качеством — норм.
2. При этом в выборке также остаются те форматы, про которые я не знаю. Узнав про новый формат — решу, стоит ли добавлять в отсев.
3. При этом в выборке остаются «опечатки» с нормальным качеством: например, я получу какой-нибудь BDRemix. В противном случае, я бы его не получил. Т.е. либо получаю все «опечатки» (и нужные, и не нужные), либо не получаю никаких.
4. По размеру, боюсь, не подходит: размер бывает меньше заданного, потому что фильм короткий. Или WEBRip (и их аналоги): могут попасть в заданный размер, а в процессе просмотра попасть на артефакты.
4.1. Куплю телек 4К — стану смотреть только 4К — вот может тогда размер и пригодится. :)
kinotice.ru Хрень какая-то. Выдает следующее:
Мы не можем узнать, какие фильмы вы ждете.
Сделайте на Кинопоиске хотя бы одну папку для фильмов публичной. После того, как вы это сделаете, вызовите принудительное обновление.

хотя публичные папки в профиле есть.

Они там сейчас что-то активно пилят, вроде новую версию должны выкатить.

Заработало, видимо правда что-то обновляли…
Ну… то есть вы изобрели аналог Sonarr/Radarr/CouchPotato только гвоздями прибитый к rutor и кинопоиску.

Нет, ничего плохого в этом нет, просто не совсем понятно что не устраивало в уже готовых решениях.
Не изобретал — запрос на такую простую и неуникальную функциональность есть, а инструментов нет. Аналогов тоже нет.
Так у них же совершенно другое назначение О_о
У меня настроен flexget на выкачивание фильмов из тех на которые я подписался в trakt.tv и imdb в определенном качестве (по сути после цифрового релиза или dvd).

Т.е. отличие в том что автор отбирает фильмы непосредственно перед просмотром, а я отмечаю в trakt.tv то что хотел бы посмотреть и flexget присылает мне сообщение что один из этих фильмов он уже скачал и он ждет меня в plex =)
Именно что. Вы следите за тем, что заранее отметили. Для этого нужно знать за чем следить.
flexget можно научить качать всё подряд. Так же есть интерфейс для ручного выбора (т.н. pending). У меня, например, тупо скачиваются все появившиеся фильмы с рейтингом imdb 6.3+ в достойном качестве.
До недавнего времени, пользовался довольно известным сайтом epidemz. С него было удобно отслеживать новинки по RSS ленте. Сейчас он пропал. Может кто в курсе, что случилось (неужто закрыли?)
Спасибо. Кстати не думали добавить параметр по чему сортировать? По рейтингу хорошо только в первый раз, дальше мне бы хотелось видеть наверху либо новое, либо обновленное. Иначе придется бегать по списку и проверять не обновилось ли чего.
Не за что. В этой реализации уже ничего добавлять не буду, она лишь пробная.
Не знаю, поможет это вам или нет, я в обновлённую версию digitalreleases.py добавил вывод поля «цифровой релиз» с датой релиза (там нужно будет добавить кнопку в HTML и привязать сортировку на JS). Сам словарь информации по фильму теперь содержит поле «releaseDate» с датой релиза. Если вы хотите изменить тип сортировки в текущей реализации, то в функции main выберите ключ, по которому будет идти сортировка. Например, вам нужна сортировка по дате релиза:
movies.sort(key = operator.itemgetter(«releaseDate»), reverse = True)

Сейчас там стоит:
movies.sort(key = operator.itemgetter(«ratingFloat»), reverse = True)
Когда-то был плагин к Chrome/Mozilla, который добавлял кнопку «скачать с Piratebay» прямо на сайт IMDB

Если вы пилите такую штуку — может стоит сделать плагин к браузеру, который добавляет подобную кнопку на Kinopoisk?
Можете сделать, там ничего сложного. Всё необходимое, функция rutorLinks(filmID), у вас есть.
Я как раз себе сделал скрипт для Tampermonkey :)
image
Код
// ==UserScript==
// @name         Kinopoisk Adv Links
// @version      0.1
// @author       FTOH
// @match        https://www.kinopoisk.ru/film/*
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    GM_addStyle (`#headerFilm { float: left; } #advLinks { display: inline-grid; margin: 22px; margin-left: 45px; } ` );

    unsafeWindow.rutor = () => unsafeWindow.open('http://rutor.info/search/0/0/000/8/' + encodeURIComponent(unsafeWindow.headerFilm.innerText.replace(/\n|'/g, ' ').trim()), '_blank');

    unsafeWindow.load = function(event) {
        if(typeof unsafeWindow.headerFilm === 'undefined') return;
        document.removeEventListener("DOMNodeInserted", unsafeWindow.load);
        unsafeWindow.headerFilm.insertAdjacentHTML('afterend', '<div id="advLinks"><a href="javascript:rutor();">Rutor.info</a></div>');
    };

    document.addEventListener("DOMNodeInserted", unsafeWindow.load, false);
})()

Ссылку на поиск лучше делать такого вида:
«rutor.info/search/0/0/010/0/film ID_ФИЛЬМА_КИНОПОИСК»

Например, Богемская рапсодия:
«rutor.info/search/0/0/010/0/film 568289»
Или лучше:
«rutor.info/search/0/0/010/0/film%20568289»

Т.к. у многих фильмов на rutor в описании стоит рейтинг КиноПоиск, то вы будете искать конкретный фильм не по названию (которое может дать лишние результаты), а по ID.
Спасибо, не знал что так можно. Были случаи когда совсем разные фильмы находились. И с сериалами моя версия не работает.
Новый код
// ==UserScript==
// @name         Kinopoisk Adv Links
// @version      0.2
// @author       FTOH
// @match        https://www.kinopoisk.ru/film/*
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    GM_addStyle `#headerFilm { float: left; } #advLinks { display: inline-grid; margin: 22px; margin-left: 45px; }`;

    unsafeWindow.rutor = () => unsafeWindow.open('http://rutor.info/search/0/0/010/8/' + encodeURIComponent(location.pathname.replace(/\//g, ' ')), '_blank');

    unsafeWindow.load = function(event) {
        if(typeof unsafeWindow.headerFilm === 'undefined') return;
        document.removeEventListener("DOMNodeInserted", unsafeWindow.load);
        unsafeWindow.headerFilm.insertAdjacentHTML('afterend', '<div id="advLinks"><a href="javascript:rutor();">Rutor.info</a></div>');
    };

    document.addEventListener("DOMNodeInserted", unsafeWindow.load, false);
})()



P.S. Я еще делаю сортировку по убыванию размера. Тогда первыми в списке находятся фильмы в хорошем качестве. Очень экономит время при поиске нужного
А rutracker.org можете добавить в ваш скрипт?
Например, рок-опера «Иисус Христос Суперзвезда» — на рутрекере сидеров на порядок больше.
Поиск происходит по названию, поэтому могут быть неточности. Пробовал добавлять год, но у некоторых раздач указан год цифрового релиза, из-за чего не все находит.
Код
// ==UserScript==
// @name         Kinopoisk Adv Links
// @version      0.3
// @author       FTOH
// @match        https://www.kinopoisk.ru/film/*
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    GM_addStyle `#headerFilm { float: left; } #advLinks { display: block; } #advLinks>button { margin: 2px auto; width: 100px; }`;


    unsafeWindow.rutor = () => unsafeWindow.open('http://rutor.info/search/0/0/010/8/' + encodeURIComponent(location.pathname.replace(/\//g, ' ')), '_blank');
    unsafeWindow.rutracker = () => unsafeWindow.open('https://rutracker.org/forum/tracker.php?nm=' + encodeURIComponent(unsafeWindow.headerFilm.innerText.replace(/\n|\(сериал.*?\)/g, ' ')), '_blank');

    unsafeWindow.load = function(event) {
        if(typeof unsafeWindow.headerFilm === 'undefined') return;
        document.removeEventListener("DOMNodeInserted", unsafeWindow.load);

        unsafeWindow.headerFilm.insertAdjacentHTML('afterend', '<div id="advLinks"><button class="movie-online-button" onclick="rutor();">Rutor</button>' +
                                                   '<button class="movie-online-button" onclick="rutracker();">Rutracker</button></div>');
    };

    document.addEventListener("DOMNodeInserted", unsafeWindow.load, false);
})()

Биг спасибо вам!
И за готовые надстройки тоже. Не пришло в голову поискать.
Здорово, есть похожая задумка, только для музыки(поиск по VK и по торрентам)
А может лучше платить за контент, чем воровать его? Да не, бред какой-то…
Конечно лучше. Никто об этом не спорит (кроме вас), и об этом написано в самом начале заметки.

Может быть и лучше, если потребление платного контента будет так же удобно, как и пиратского.
В настоящее время нужно иметь несколько платных подписок (каждая до тысячи в месяц), чтобы получить весь нужный контент, а также установить то же количество приложений на TV.
И работать это будет только при стабильном соединении с интернетом, разумеется.

Да и не каждый ПК тянет эти сервисы. Одно время пользовался А-текой, невозможно было использовать на как минимум двух ноутах с Core i, – тормозило.
Конечно лучше.
После того как работодатели перестанут обворовывать работников, платя им гроши.
Есть же PopcornTime который позвоялет легко и удобно смотреть свежие торренты популярных фильмов. Не совсем улавливаю, в чем разница.
Есть HD VideoBox с разделом новинок и поиском по торрентам. Есть Elementum с новинками и фильмами в тренде и поиском по торрентом. И другая кучка вариантов. Но логика представления информации там иная. Она предназначена для всех и не отделяет «хорошо» и «плохо» по качеству, а сами новинки считаются не от даты цифрового релиза (а от премьеры). «Хорошо» вам всё равно нужно следить, искать и выбирать руками. В заметке речь идёт о «хорошо» сразу, когда хочется посмотреть какие-то новинки.

Извиняюсь перед автором, но не могу не упомянуть свое произведение :)
Я сделал похожего телеграм бота, который уведомляет о новых вышедших фильмах. Можно отслеживать фильмы как на русском, так и на английском языке. Уведомления приходят когда фильм выпущен в хорошем качестве.


Бота можно добавить через @evemovies_bot Там же внутри указана ссылка на GitHub. Ещё раз извиняюсь перед автором за рекламу потенциального конкурента… :)

Ничего страшного, пусть это будет пост рекламы проектов :). Я ни на что не претендую со своей программой (она написана за пару вечеров с определенной целью — тест работоспособности для другого проекта). Никакой лицензии на код нет — любой может присвоить код полностью себе. С вами не конкурирую :).

Если кому-то окажется полезным (для этого и поделился), я буду только рад.
Я в ИТ не совсем, но как я понимаю это все можно запустить только под линукс?
В статье описывается конкретный вариант запуска (со всей обвязкой) на маршрутизаторе с Entware. Но основная программа, которая выполняет основное действие — создаёт HTML-файл, написана на Python и может работать даже на утюге. Конечно, без технических навыков вам будет сложно самостоятельно всё настроить на других устройствах.
есть ещё вариант, уведомления о сегодняшних релизах через телеграм :-)

t.me/kinoreliz — канал для слежения за цифровыми релизами

ссылок на торренты нет, т.к. каждый решает для себя сам, покупать или искать на торрентах
22 members, вы только сегодня стартовали?
судя по первой записи, канал заработал 6-го марта
и, судя по предыдущим постам, формат сообщений ещё допиливается
даже сегодня, сначала в сообщениях была только ссылка на IMDB, а потом ещё добавился рейтинг
Думаю таких много, вот меня знакомый сделал себе нечто подобное. Система отслеживает новинки по рейтингу ожидаемости на кинопоиске и рассылает ссылки в канале телеграма, когда релиз в норм качестве выходит (правда получается не больше 3-4 в месяц, видимо хороших фильмов мало).
t.me/BBFeed
А можно для людей не особо знакомых с Линуксом объяснить как запустить это все на Windows 10 компьютере? Компьютер запущен круглосуточно и имеет доступ в интернет.
Какие компоненты надо установить? Что использовать вместо cron'a?
Могу лишь кратко расписать:
1). Установить Python 3.
2). Загрузить программу digitalreleases.py в любое удобное место. Заменить HTML_SAVE_PATH на путь, где следует сохранять файл releases.html. Например HTML_SAVE_PATH = r«C:\Users\Yuri\releases.html».
3). Запустить её один раз с помощью Командной строки «python C:\ПУТЬ\digitalreleases.py».
3). С помощью планировщика заданий в ОС Windows (детальных статей о нём много) настроить ежедневный (в определённое время) запуск «python C:\ПУТЬ\digitalreleases.py»
4). Сделать закладку в браузере «file:///C:/ПУТЬ/releases.html». Например, «file:///C:/Users/Yuri/releases.html».
Подскажите пожалуйста, сделал все как описано, Win10. Выдает в cmd:
Текущая дата: 14.03.2019
Целевая дата: 13.01.2019
Количество месяцев для загрузки: 3
Загрузка релизов за 03.2019.
Traceback (most recent call last):
  File "D:\Python30\digitalreleases.py", line 745, in <module>
    main()
  File "D:\Python30\digitalreleases.py", line 727, in main
    releases = digitalReleases(DAYS)
  File "D:\Python30\digitalreleases.py", line 61, in digitalReleases
    requestMethod = KINOPOISK_API_RELEAESES.format(downloadDate.strftime("%m.%Y"), KINOPOISK_UUID)
ValueError: zero length field name in format
У вас КиноПоиск не заблокирован (например, в Украине)?

Возможно, именно в вашей ОС не работает функция os.urandom(). Но в Windows 10 должно работать без проблем. Попробуйте в main() удалить две первые строчки:

KINOPOISK_UUID = binascii.b2a_hex(os.urandom(16))
KINOPOISK_CLIENTID = binascii.b2a_hex(os.urandom(12))

Будут использоваться статические значения KINOPOISK_UUID и KINOPOISK_CLIENTID, заданные в самом начале файла.
Нет, КиноПоиск работает, я из России.

Закомментировал эти 2 строки, результат остался прежним.
Версия Python у вас какая (python -V)?

Попробуйте установить самую свежую версию 3.7.2. В подверсиях 3.x были какие-то особенности с format.
Обновил. Спасибо! Теперь другое выдает:
Текущая дата: 14.03.2019
Целевая дата: 13.01.2019
Количество месяцев для загрузки: 3
Загрузка релизов за 03.2019.
Загрузка релизов за 02.2019.
Загрузка релизов за 01.2019.
Загружены ID от 74 релизов.
Загрузка торрент-ссылок для filmID 1011685.
Traceback (most recent call last):
File «D:\Python30\digitalreleases.py», line 745, in main()
File «D:\Python30\digitalreleases.py», line 731, in main
torrents = rutorLinks(release[«filmID»])
File «D:\Python30\digitalreleases.py», line 311, in rutorLinks
raise IndexError(«Ошибка загрузки торрент-ссылок для filmID » + filmID + ". Не найден блок с торрентами.")
IndexError: Ошибка загрузки торрент-ссылок для filmID 1011685. Не найден блок с торрентами.
Если прописать SOCKS proxy то ругается вот так:
Traceback (most recent call last):
File «D:\Python30\digitalreleases.py», line 38, in import socks
ModuleNotFoundError: No module named 'socks'
У вас заблокирован rutor.info и не настроен глобальный обход блокировок. Вы указали адрес SOCKS-прокси, но сам модуль pysocks не установили (вы не можете какие пункты делать, а какие-то не делать из инструкции, и ожидать работосопособности):

pip install --upgrade pip setuptools
pip install pysocks

или

pip install --upgrade --user pip setuptools
pip install pysocks

Перед тем, как использовать SOCKS-прокси, вы должны его иметь (например, через Tor). Если у вас нет SOCKS-прокси, вам нужно найти инструкцию, как поднять Tor с SOCKS-прокси в Windows.
Извиняюсь за глупый вопрос, а эти команды через CMD заводить или через само приложение python.exe?
Так как выдает ошибку:
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> pip install --upgrade pip setuptools
  File "<stdin>", line 1
    pip install --upgrade pip setuptools
              ^
SyntaxError: invalid syntax
Это команды для Командной строки.
Разобрался, pip находится в папке «Scripts», все сработало, спасибо!

line 286
socks.set_default_proxy(socks.pip install --upgrade --user pip setuptools5, SOCKS_IP, SOCKS_PORT)
^
SyntaxError: invalid syntax

Я не знаю, откуда вы это взяли. В коде нет строки:
socks.set_default_proxy(socks.pip install --upgrade --user pip setuptools5, SOCKS_IP, SOCKS_PORT)
Ты бы его в setup.py завернул что-ли? Тогда можно было бы просто pip install сделать.
Заверните, сделайте, поделитесь здесь в комментариях с инструкцией. В чём сложность?
Прошу прощения) Как-то с наездом прозвучало. Я попробую вечером, как до компьютера доберусь) Специфические требования по библиотекам есть в плане версий?
Используется лишь одна сторонняя библиотека — pysocks, и только в том случае, когда нужен обход блокировок для rutor.info. Версия последняя, доступная через pip. Версия Python для программы от 3.6.x, более ранние не проверял.
Сделал по инструкции.
1. Можно ли сделать, чтобы кнопки на странице открывались в браузере по нажатию на колесо мыши (т.е. в фоновой вкладке)? Chrome 73.0.3683.75, 64 бит.
2. По нажатию на кнопку браузер пытается открыть локальный адрес, например «file:///D:/download/680741». Как исправить?
Код кнопки
<button class="torrentbutton" style="" onclick="location.href='/download/680741'">BDRip-HEVC 1080p</button>
1. Можете самостоятельно переделать в коде кнопки со ссылками на что угодно.
2. Баг исправлен в обновлённой версии.
1. Да оно-то понятно, что можно, что угодно допилить, но не умею программировать, потому и обратился за помощью.
2. Спасибо большое за программу и за фикс!
У меня есть подобный костылек, суть его работы очень похож на авторский:
Есть файл текстовый, в котором я пишу фильмы которые хочу посмотреть. Скрипт смотрит дату релиза на кинопоиске. Если релизу уже вышел, смотрит его на популярных торрентах и найдя нужного качества добавляет в загрузку и отправляет в телеграмм уведомление о том что фильм добавлен в загрузку.
Получается что все что мне надо это просто добавить фильм в файл и ждать когда его зарелизят на торрент трекерах )

А так автор молодец )
спасибо. хорошая наработка. плюс куча полезного в комментах в одном месте.
Kyrie1965 помогите пожалуйста разобраться с данной ошибкой:

admin@RT-N66U-AA40:/tmp/home/root# python3 /opt/etc/movies/digitalreleases.py
Текущая дата: 14.03.2019
Целевая дата: 13.01.2019
Количество месяцев для загрузки: 3
Загрузка релизов за 03.2019.
Traceback (most recent call last):
  File "/opt/etc/movies/digitalreleases.py", line 745, in <module>
    main()
  File "/opt/etc/movies/digitalreleases.py", line 727, in main
    releases = digitalReleases(DAYS)
  File "/opt/etc/movies/digitalreleases.py", line 116, in digitalReleases
    releaseDate = datetime.datetime.strptime(releaseDateStr, "%Y-%m-%d").date()
  File "/_strptime.py", line 280, in <module>
  File "/_strptime.py", line 194, in __init__
  File "/_strptime.py", line 77, in __init__
  File "/_strptime.py", line 129, in __calc_date_time
ValueError: character U+2aec0028 is not in range [U+0000; U+10ffff]


admin@RT-N66U-AA40:/tmp/home/root# python3 -V
Python 3.6.2


Не может почему-то создать объект datetime из строки с датой releaseDateStr. Тут три варианта. Либо от ответе от КиноПоиск взялся какой-то левый символ в дате (маловероятно). Либо неправильно отрабатываются json.loads или datetime.strptime на конкретной прошивке. Добавьте в функции digitalReleases два вызова print после конвертации JSON:
		if content:
			tmpDict = json.loads(content)
			print(content)
			print(tmpDict)

Станет понятнее, что происходит до ошибки.
Сделал, вот выхлоп:

Много текста
admin@RT-N66U-AA40:/tmp/mnt/SDCARD/entware/etc/movies# python3 /opt/etc/movies/digitalreleases.py
Текущая дата: 14.03.2019
Целевая дата: 14.12.2018
Количество месяцев для загрузки: 4
Загрузка релизов за 03.2019.
{"success":true,"data":{"items":[{"id":1011685,"slug":"natsiya-ubiyts-2018","title":"Нация убийц","originalTitle":"Assassination Nation","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1011685.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1011685.jpg?width=360"},"genres":[{"id":3,"name":"боевик"},{"id":4,"name":"триллер"},{"id":8,"name":"драма"},{"id":6,"name":"комедия"},{"id":16,"name":"криминал"}],"countries":[{"id":1,"name":"США"}],"rating":{"value":5.521,"count":3686,"ready":true},"expectations":{"value":95.96,"count":750,"ready":true},"currentRating":"RATING","serial":false,"duration":110,"trailerId":152311,"contextData":{"isDigital":true,"releaseDate":"2019-03-01"}},{"id":1171910,"slug":"krymskiy-most-sdelano-s-lyubovyu-2018","title":"Крымский мост. Сделано с любовью!","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1171910.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1171910.jpg?width=360"},"genres":[{"id":6,"name":"комедия"},{"id":7,"name":"мелодрама"}],"countries":[{"id":2,"name":"Россия"}],"rating":{"value":2.34,"count":15359,"ready":true},"expectations":{"value":10.56,"count":4015,"ready":true},"currentRating":"RATING","serial":false,"duration":102,"trailerId":151701,"contextData":{"isDigital":true,"releaseDate":"2019-03-04"}},{"id":1065878,"slug":"kholodnaya-voyna-2018","title":"Холодная война","originalTitle":"Zimna wojna","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1065878.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1065878.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":7,"name":"мелодрама"},{"id":21,"name":"музыка"}],"countries":[{"id":32,"name":"Польша"},{"id":11,"name":"Великобритания"},{"id":8,"name":"Франция"}],"rating":{"value":7.41,"count":6144,"ready":true},"expectations":{"value":98.81,"count":562,"ready":true},"currentRating":"RATING","serial":false,"duration":89,"trailerId":153206,"contextData":{"isDigital":true,"releaseDate":"2019-03-05"}},{"id":470178,"slug":"akvamen-2018","title":"Аквамен","originalTitle":"Aquaman","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_470178.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_470178.jpg?width=360"},"genres":[{"id":2,"name":"фантастика"},{"id":5,"name":"фэнтези"},{"id":3,"name":"боевик"},{"id":10,"name":"приключения"}],"countries":[{"id":25,"name":"Австралия"},{"id":1,"name":"США"}],"rating":{"value":6.964,"count":63804,"ready":true},"expectations":{"value":88.22,"count":44419,"ready":true},"currentRating":"RATING","serial":false,"duration":143,"trailerId":151077,"contextData":{"isDigital":true,"releaseDate":"2019-03-06"}},{"id":978961,"slug":"lyubov-i-prochiy-zoopark-2017","title":"Любовь и прочий зоопарк","originalTitle":"Gaspard va au mariage","year":2017,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_978961.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_978961.jpg?width=360"},"genres":[{"id":7,"name":"мелодрама"},{"id":6,"name":"комедия"}],"countries":[{"id":8,"name":"Франция"},{"id":41,"name":"Бельгия"}],"rating":{"value":6.2,"count":343,"ready":true},"expectations":{"count":11,"ready":false},"currentRating":"RATING","serial":false,"duration":103,"trailerId":155972,"contextData":{"isDigital":true,"releaseDate":"2019-03-06"}},{"id":938644,"slug":"favoritka-2018","title":"Фаворитка","originalTitle":"Favourite, The","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_938644.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_938644.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":6,"name":"комедия"},{"id":22,"name":"биография"},{"id":23,"name":"история"}],"countries":[{"id":38,"name":"Ирландия"},{"id":11,"name":"Великобритания"},{"id":1,"name":"США"}],"rating":{"value":7.421,"count":27392,"ready":true},"expectations":{"value":94.39,"count":8168,"ready":true},"currentRating":"RATING","serial":false,"duration":119,"trailerId":152592,"contextData":{"isDigital":true,"releaseDate":"2019-03-07"}},{"id":1111720,"slug":"kak-ya-stal-russkim-2018","title":"Как я стал русским","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1111720.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1111720.jpg?width=360"},"genres":[{"id":6,"name":"комедия"}],"countries":[{"id":2,"name":"Россия"},{"id":31,"name":"Китай"}],"rating":{"value":5.781,"count":2017,"ready":true},"expectations":{"value":74.56,"count":1199,"ready":true},"currentRating":"RATING","serial":false,"duration":100,"trailerId":155904,"contextData":{"isDigital":true,"releaseDate":"2019-03-07"}},{"id":1111934,"slug":"stazhyor-2018","title":"Стажёр","originalTitle":"Il tuttofare","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1111934.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1111934.jpg?width=360"},"genres":[{"id":6,"name":"комедия"}],"countries":[{"id":14,"name":"Италия"}],"rating":{"value":5.688,"count":302,"ready":true},"expectations":{"count":3,"ready":false},"currentRating":"RATING","serial":false,"duration":96,"trailerId":156230,"contextData":{"isDigital":true,"releaseDate":"2019-03-07"}},{"id":920265,"slug":"chelovek-pauk-cherez-vselennye-2018","title":"Человек-паук: Через вселенные","originalTitle":"Spider-Man: Into the Spider-Verse","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_920265.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_920265.jpg?width=360"},"genres":[{"id":14,"name":"мультфильм"},{"id":2,"name":"фантастика"},{"id":3,"name":"боевик"},{"id":10,"name":"приключения"},{"id":11,"name":"семейный"}],"countries":[{"id":1,"name":"США"}],"rating":{"value":8.09,"count":40471,"ready":true},"expectations":{"value":96.75,"count":10006,"ready":true},"currentRating":"RATING","serial":false,"duration":117,"trailerId":153637,"contextData":{"isDigital":true,"releaseDate":"2019-03-11"}},{"id":1142555,"slug":"zvyozdy-2018","title":"Звёзды","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1142555.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1142555.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":6,"name":"комедия"}],"countries":[{"id":2,"name":"Россия"}],"rating":{"value":6.654,"count":172,"ready":true},"expectations":{"count":16,"ready":false},"currentRating":"RATING","serial":false,"duration":97,"trailerId":149659,"contextData":{"isDigital":true,"releaseDate":"2019-03-11"}},{"id":596484,"slug":"1-plus-1-gollivudskaya-istoriya-2019","title":"1+1: Голливудская история","originalTitle":"Upside, The","year":2019,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_596484.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_596484.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":6,"name":"комедия"}],"countries":[{"id":1,"name":"США"}],"rating":{"value":5.201,"count":2185,"ready":true},"expectations":{"value":72.04,"count":4490,"ready":true},"currentRating":"RATING","serial":false,"duration":126,"trailerId":154872,"contextData":{"isDigital":true,"releaseDate":"2019-03-11"}},{"id":665107,"slug":"ayka-2018","title":"Айка","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_665107.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_665107.jpg?width=360"},"genres":[{"id":8,"name":"драма"}],"countries":[{"id":2,"name":"Россия"},{"id":3,"name":"Германия"},{"id":32,"name":"Польша"},{"id":31,"name":"Китай"},{"id":122,"name":"Казахстан"}],"rating":{"value":7.235,"count":943,"ready":true},"expectations":{"value":97.82,"count":672,"ready":true},"currentRating":"RATING","serial":false,"duration":100,"trailerId":156506,"contextData":{"isDigital":true,"releaseDate":"2019-03-12"}},{"id":696247,"slug":"dve-korolevy-2018","title":"Две королевы","originalTitle":"Mary Queen of Scots","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_696247.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_696247.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":22,"name":"биография"},{"id":23,"name":"история"}],"countries":[{"id":11,"name":"Великобритания"},{"id":1,"name":"США"}],"rating":{"value":6.211,"count":5240,"ready":true},"expectations":{"value":93.1,"count":8040,"ready":true},"currentRating":"RATING","serial":false,"duration":124,"trailerId":154711,"contextData":{"isDigital":true,"releaseDate":"2019-03-14"}},{"id":974902,"slug":"tochka-vozvrata-2018","title":"Точка возврата","originalTitle":"Backtrace","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_974902.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_974902.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":16,"name":"криминал"}],"countries":[{"id":6,"name":"Канада"},{"id":1,"name":"США"}],"rating":{"value":4.164,"count":370,"ready":true},"expectations":{"value":88.01,"count":272,"ready":true},"currentRating":"RATING","serial":false,"duration":92,"trailerId":157148,"contextData":{"isDigital":true,"releaseDate":"2019-03-14"}},{"id":1162387,"slug":"madonna-rozhdenie-legendy-2018","title":"Мадонна: Рождение легенды","originalTitle":"Madonna and the Breakfast Club","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1162387.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1162387.jpg?width=360"},"genres":[{"id":12,"name":"документальный"},{"id":22,"name":"биография"}],"countries":[{"id":1,"name":"США"}],"rating":{"count":99,"ready":false},"expectations":{"value":87.57,"count":941,"ready":true},"currentRating":"RATING","serial":false,"duration":105,"trailerId":154973,"contextData":{"isDigital":true,"releaseDate":"2019-03-15"}},{"id":1064391,"slug":"angel-2018","title":"Ангел","originalTitle":"El Ángel","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1064391.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1064391.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":16,"name":"криминал"},{"id":22,"name":"биография"}],"countries":[{"id":24,"name":"Аргентина"},{"id":15,"name":"Испания"}],"rating":{"value":7.057,"count":1305,"ready":true},"expectations":{"count":65,"ready":false},"currentRating":"RATING","serial":false,"duration":118,"trailerId":156856,"contextData":{"isDigital":true,"releaseDate":"2019-03-18"}},{"id":738499,"slug":"grinch-2018","title":"Гринч","originalTitle":"Grinch, The","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_738499.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_738499.jpg?width=360"},"genres":[{"id":14,"name":"мультфильм"},{"id":5,"name":"фэнтези"},{"id":6,"name":"комедия"},{"id":11,"name":"семейный"}],"countries":[{"id":8,"name":"Франция"},{"id":31,"name":"Китай"},{"id":9,"name":"Япония"},{"id":1,"name":"США"}],"rating":{"value":6.803,"count":13162,"ready":true},"expectations":{"value":96.5,"count":5711,"ready":true},"currentRating":"RATING","serial":false,"duration":86,"trailerId":155925,"contextData":{"isDigital":true,"releaseDate":"2019-03-21"}},{"id":1115628,"slug":"devochka-2018","title":"Девочка","originalTitle":"Girl","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1115628.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1115628.jpg?width=360"},"genres":[{"id":8,"name":"драма"}],"countries":[{"id":41,"name":"Бельгия"},{"id":12,"name":"Нидерланды"}],"rating":{"value":6.668,"count":1291,"ready":true},"expectations":{"value":96.88,"count":320,"ready":true},"currentRating":"RATING","serial":false,"duration":109,"trailerId":157340,"contextData":{"isDigital":true,"releaseDate":"2019-03-21"}},{"id":1041862,"slug":"troynaya-ugroza-2019","title":"Тройная угроза","originalTitle":"Triple Threat","year":2019,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1041862.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1041862.jpg?width=360"},"genres":[{"id":3,"name":"боевик"},{"id":4,"name":"триллер"},{"id":16,"name":"криминал"}],"countries":[{"id":44,"name":"Таиланд"},{"id":31,"name":"Китай"},{"id":1,"name":"США"}],"rating":{"count":0,"ready":false},"expectations":{"value":98.88,"count":1117,"ready":true},"currentRating":"EXPECTATIONS","serial":false,"duration":96,"trailerId":157741,"contextData":{"isDigital":true,"releaseDate":"2019-03-22"}},{"id":462654,"slug":"krasivyy-malchik-2018","title":"Красивый мальчик","originalTitle":"Beautiful Boy","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_462654.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_462654.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":22,"name":"биография"}],"countries":[{"id":1,"name":"США"}],"rating":{"value":7.277,"count":4578,"ready":true},"expectations":{"value":99.44,"count":3014,"ready":true},"currentRating":"RATING","serial":false,"duration":120,"trailerId":156945,"contextData":{"isDigital":true,"releaseDate":"2019-03-25"}},{"id":1009357,"slug":"nashe-vremya-2018","title":"Наше время","originalTitle":"Nuestro tiempo","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1009357.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1009357.jpg?width=360"},"genres":[{"id":8,"name":"драма"}],"countries":[{"id":17,"name":"Мексика"},{"id":8,"name":"Франция"},{"id":3,"name":"Германия"},{"id":4,"name":"Дания"},{"id":5,"name":"Швеция"}],"rating":{"value":7.272,"count":478,"ready":true},"expectations":{"value":99.25,"count":252,"ready":true},"currentRating":"RATING","serial":false,"duration":173,"trailerId":158021,"contextData":{"isDigital":true,"releaseDate":"2019-03-28"}},{"id":1054990,"slug":"van-gog-na-poroge-vechnosti-2018","title":"Ван Гог. На пороге вечности","originalTitle":"At Eternity's Gate","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_1054990.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_1054990.jpg?width=360"},"genres":[{"id":8,"name":"драма"},{"id":22,"name":"биография"}],"countries":[{"id":21,"name":"Швейцария"},{"id":38,"name":"Ирландия"},{"id":11,"name":"Великобритания"},{"id":8,"name":"Франция"},{"id":1,"name":"США"}],"rating":{"value":7.118,"count":5682,"ready":true},"expectations":{"value":99.36,"count":1735,"ready":true},"currentRating":"RATING","serial":false,"duration":111,"trailerId":154730,"contextData":{"isDigital":true,"releaseDate":"2019-03-28"}},{"id":952241,"slug":"bamblbi-2018","title":"Бамблби","originalTitle":"Bumblebee","year":2018,"poster":{"baseUrl":"//st.kp.yandex.net/images/film_iphone/iphone360_952241.jpg","url":"//st.kp.yandex.net/images/film_iphone/iphone360_952241.jpg?width=360"},"genres":[{"id":2,"name":"фантастика"},{"id":3,"name":"боевик"},{"id":10,"name":"приключения"}],"countries":[{"id":1,"name":"США"}],"rating":{"value":6.677,"count":16809,"ready":true},"expectations":{"value":85.43,"count":13051,"ready":true},"currentRating":"RATING","serial":false,"duration":114,"trailerId":153055,"contextData":{"isDigital":true,"releaseDate":"2019-03-28"}}],"stats":{"total":23,"limit":1000,"offset":0}}}
{'success': True, 'data': {'items': [{'id': 1011685, 'slug': 'natsiya-ubiyts-2018', 'title': 'Нация убийц', 'originalTitle': 'Assassination Nation', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1011685.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1011685.jpg?width=360'}, 'genres': [{'id': 3, 'name': 'боевик'}, {'id': 4, 'name': 'триллер'}, {'id': 8, 'name': 'драма'}, {'id': 6, 'name': 'комедия'}, {'id': 16, 'name': 'криминал'}], 'countries': [{'id': 1, 'name': 'США'}], 'rating': {'value': 5.521, 'count': 3686, 'ready': True}, 'expectations': {'value': 95.959999999999988, 'count': 750, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 110, 'trailerId': 152311, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-01'}}, {'id': 1171910, 'slug': 'krymskiy-most-sdelano-s-lyubovyu-2018', 'title': 'Крымский мост. Сделано с любовью!', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1171910.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1171910.jpg?width=360'}, 'genres': [{'id': 6, 'name': 'комедия'}, {'id': 7, 'name': 'мелодрама'}], 'countries': [{'id': 2, 'name': 'Россия'}], 'rating': {'value': 2.34, 'count': 15359, 'ready': True}, 'expectations': {'value': 10.56, 'count': 4015, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 102, 'trailerId': 151701, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-04'}}, {'id': 1065878, 'slug': 'kholodnaya-voyna-2018', 'title': 'Холодная война', 'originalTitle': 'Zimna wojna', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1065878.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1065878.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 7, 'name': 'мелодрама'}, {'id': 21, 'name': 'музыка'}], 'countries': [{'id': 32, 'name': 'Польша'}, {'id': 11, 'name': 'Великобритания'}, {'id': 8, 'name': 'Франция'}], 'rating': {'value': 7.41, 'count': 6144, 'ready': True}, 'expectations': {'value': 98.81, 'count': 562, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 89, 'trailerId': 153206, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-05'}}, {'id': 470178, 'slug': 'akvamen-2018', 'title': 'Аквамен', 'originalTitle': 'Aquaman', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_470178.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_470178.jpg?width=360'}, 'genres': [{'id': 2, 'name': 'фантастика'}, {'id': 5, 'name': 'фэнтези'}, {'id': 3, 'name': 'боевик'}, {'id': 10, 'name': 'приключения'}], 'countries': [{'id': 25, 'name': 'Австралия'}, {'id': 1, 'name': 'США'}], 'rating': {'value': 6.964, 'count': 63804, 'ready': True}, 'expectations': {'value': 88.22, 'count': 44419, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 143, 'trailerId': 151077, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-06'}}, {'id': 978961, 'slug': 'lyubov-i-prochiy-zoopark-2017', 'title': 'Любовь и прочий зоопарк', 'originalTitle': 'Gaspard va au mariage', 'year': 2017, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_978961.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_978961.jpg?width=360'}, 'genres': [{'id': 7, 'name': 'мелодрама'}, {'id': 6, 'name': 'комедия'}], 'countries': [{'id': 8, 'name': 'Франция'}, {'id': 41, 'name': 'Бельгия'}], 'rating': {'value': 6.2, 'count': 343, 'ready': True}, 'expectations': {'count': 11, 'ready': False}, 'currentRating': 'RATING', 'serial': False, 'duration': 103, 'trailerId': 155972, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-06'}}, {'id': 938644, 'slug': 'favoritka-2018', 'title': 'Фаворитка', 'originalTitle': 'Favourite, The', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_938644.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_938644.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 6, 'name': 'комедия'}, {'id': 22, 'name': 'биография'}, {'id': 23, 'name': 'история'}], 'countries': [{'id': 38, 'name': 'Ирландия'}, {'id': 11, 'name': 'Великобритания'}, {'id': 1, 'name': 'США'}], 'rating': {'value': 7.421, 'count': 27392, 'ready': True}, 'expectations': {'value': 94.39, 'count': 8168, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 119, 'trailerId': 152592, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-07'}}, {'id': 1111720, 'slug': 'kak-ya-stal-russkim-2018', 'title': 'Как я стал русским', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1111720.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1111720.jpg?width=360'}, 'genres': [{'id': 6, 'name': 'комедия'}], 'countries': [{'id': 2, 'name': 'Россия'}, {'id': 31, 'name': 'Китай'}], 'rating': {'value': 5.781, 'count': 2017, 'ready': True}, 'expectations': {'value': 74.56, 'count': 1199, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 100, 'trailerId': 155904, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-07'}}, {'id': 1111934, 'slug': 'stazhyor-2018', 'title': 'Стажёр', 'originalTitle': 'Il tuttofare', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1111934.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1111934.jpg?width=360'}, 'genres': [{'id': 6, 'name': 'комедия'}], 'countries': [{'id': 14, 'name': 'Италия'}], 'rating': {'value': 5.688, 'count': 302, 'ready': True}, 'expectations': {'count': 3, 'ready': False}, 'currentRating': 'RATING', 'serial': False, 'duration': 96, 'trailerId': 156230, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-07'}}, {'id': 920265, 'slug': 'chelovek-pauk-cherez-vselennye-2018', 'title': 'Человек-паук: Через вселенные', 'originalTitle': 'Spider-Man: Into the Spider-Verse', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_920265.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_920265.jpg?width=360'}, 'genres': [{'id': 14, 'name': 'мультфильм'}, {'id': 2, 'name': 'фантастика'}, {'id': 3, 'name': 'боевик'}, {'id': 10, 'name': 'приключения'}, {'id': 11, 'name': 'семейный'}], 'countries': [{'id': 1, 'name': 'США'}], 'rating': {'value': 8.09, 'count': 40471, 'ready': True}, 'expectations': {'value': 96.75, 'count': 10006, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 117, 'trailerId': 153637, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-11'}}, {'id': 1142555, 'slug': 'zvyozdy-2018', 'title': 'Звёзды', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1142555.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1142555.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 6, 'name': 'комедия'}], 'countries': [{'id': 2, 'name': 'Россия'}], 'rating': {'value': 6.654, 'count': 172, 'ready': True}, 'expectations': {'count': 16, 'ready': False}, 'currentRating': 'RATING', 'serial': False, 'duration': 97, 'trailerId': 149659, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-11'}}, {'id': 596484, 'slug': '1-plus-1-gollivudskaya-istoriya-2019', 'title': '1+1: Голливудская история', 'originalTitle': 'Upside, The', 'year': 2019, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_596484.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_596484.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 6, 'name': 'комедия'}], 'countries': [{'id': 1, 'name': 'США'}], 'rating': {'value': 5.2010000000000006, 'count': 2185, 'ready': True}, 'expectations': {'value': 72.040000000000012, 'count': 4490, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 126, 'trailerId': 154872, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-11'}}, {'id': 665107, 'slug': 'ayka-2018', 'title': 'Айка', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_665107.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_665107.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}], 'countries': [{'id': 2, 'name': 'Россия'}, {'id': 3, 'name': 'Германия'}, {'id': 32, 'name': 'Польша'}, {'id': 31, 'name': 'Китай'}, {'id': 122, 'name': 'Казахстан'}], 'rating': {'value': 7.235, 'count': 943, 'ready': True}, 'expectations': {'value': 97.819999999999988, 'count': 672, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 100, 'trailerId': 156506, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-12'}}, {'id': 696247, 'slug': 'dve-korolevy-2018', 'title': 'Две королевы', 'originalTitle': 'Mary Queen of Scots', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_696247.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_696247.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 22, 'name': 'биография'}, {'id': 23, 'name': 'история'}], 'countries': [{'id': 11, 'name': 'Великобритания'}, {'id': 1, 'name': 'США'}], 'rating': {'value': 6.211, 'count': 5240, 'ready': True}, 'expectations': {'value': 93.1, 'count': 8040, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 124, 'trailerId': 154711, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-14'}}, {'id': 974902, 'slug': 'tochka-vozvrata-2018', 'title': 'Точка возврата', 'originalTitle': 'Backtrace', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_974902.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_974902.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 16, 'name': 'криминал'}], 'countries': [{'id': 6, 'name': 'Канада'}, {'id': 1, 'name': 'США'}], 'rating': {'value': 4.1639999999999994, 'count': 370, 'ready': True}, 'expectations': {'value': 88.01, 'count': 272, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 92, 'trailerId': 157148, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-14'}}, {'id': 1162387, 'slug': 'madonna-rozhdenie-legendy-2018', 'title': 'Мадонна: Рождение легенды', 'originalTitle': 'Madonna and the Breakfast Club', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1162387.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1162387.jpg?width=360'}, 'genres': [{'id': 12, 'name': 'документальный'}, {'id': 22, 'name': 'биография'}], 'countries': [{'id': 1, 'name': 'США'}], 'rating': {'count': 99, 'ready': False}, 'expectations': {'value': 87.569999999999988, 'count': 941, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 105, 'trailerId': 154973, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-15'}}, {'id': 1064391, 'slug': 'angel-2018', 'title': 'Ангел', 'originalTitle': 'El Ángel', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1064391.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1064391.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 16, 'name': 'криминал'}, {'id': 22, 'name': 'биография'}], 'countries': [{'id': 24, 'name': 'Аргентина'}, {'id': 15, 'name': 'Испания'}], 'rating': {'value': 7.057, 'count': 1305, 'ready': True}, 'expectations': {'count': 65, 'ready': False}, 'currentRating': 'RATING', 'serial': False, 'duration': 118, 'trailerId': 156856, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-18'}}, {'id': 738499, 'slug': 'grinch-2018', 'title': 'Гринч', 'originalTitle': 'Grinch, The', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_738499.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_738499.jpg?width=360'}, 'genres': [{'id': 14, 'name': 'мультфильм'}, {'id': 5, 'name': 'фэнтези'}, {'id': 6, 'name': 'комедия'}, {'id': 11, 'name': 'семейный'}], 'countries': [{'id': 8, 'name': 'Франция'}, {'id': 31, 'name': 'Китай'}, {'id': 9, 'name': 'Япония'}, {'id': 1, 'name': 'США'}], 'rating': {'value': 6.803, 'count': 13162, 'ready': True}, 'expectations': {'value': 96.5, 'count': 5711, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 86, 'trailerId': 155925, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-21'}}, {'id': 1115628, 'slug': 'devochka-2018', 'title': 'Девочка', 'originalTitle': 'Girl', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1115628.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1115628.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}], 'countries': [{'id': 41, 'name': 'Бельгия'}, {'id': 12, 'name': 'Нидерланды'}], 'rating': {'value': 6.6679999999999988, 'count': 1291, 'ready': True}, 'expectations': {'value': 96.88, 'count': 320, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 109, 'trailerId': 157340, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-21'}}, {'id': 1041862, 'slug': 'troynaya-ugroza-2019', 'title': 'Тройная угроза', 'originalTitle': 'Triple Threat', 'year': 2019, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1041862.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1041862.jpg?width=360'}, 'genres': [{'id': 3, 'name': 'боевик'}, {'id': 4, 'name': 'триллер'}, {'id': 16, 'name': 'криминал'}], 'countries': [{'id': 44, 'name': 'Таиланд'}, {'id': 31, 'name': 'Китай'}, {'id': 1, 'name': 'США'}], 'rating': {'count': 0, 'ready': False}, 'expectations': {'value': 98.88, 'count': 1117, 'ready': True}, 'currentRating': 'EXPECTATIONS', 'serial': False, 'duration': 96, 'trailerId': 157741, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-22'}}, {'id': 462654, 'slug': 'krasivyy-malchik-2018', 'title': 'Красивый мальчик', 'originalTitle': 'Beautiful Boy', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_462654.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_462654.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 22, 'name': 'биография'}], 'countries': [{'id': 1, 'name': 'США'}], 'rating': {'value': 7.277, 'count': 4578, 'ready': True}, 'expectations': {'value': 99.44, 'count': 3014, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 120, 'trailerId': 156945, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-25'}}, {'id': 1009357, 'slug': 'nashe-vremya-2018', 'title': 'Наше время', 'originalTitle': 'Nuestro tiempo', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1009357.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1009357.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}], 'countries': [{'id': 17, 'name': 'Мексика'}, {'id': 8, 'name': 'Франция'}, {'id': 3, 'name': 'Германия'}, {'id': 4, 'name': 'Дания'}, {'id': 5, 'name': 'Швеция'}], 'rating': {'value': 7.272, 'count': 478, 'ready': True}, 'expectations': {'value': 99.25, 'count': 252, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 173, 'trailerId': 158021, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-28'}}, {'id': 1054990, 'slug': 'van-gog-na-poroge-vechnosti-2018', 'title': 'Ван Гог. На пороге вечности', 'originalTitle': "At Eternity's Gate", 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_1054990.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_1054990.jpg?width=360'}, 'genres': [{'id': 8, 'name': 'драма'}, {'id': 22, 'name': 'биография'}], 'countries': [{'id': 21, 'name': 'Швейцария'}, {'id': 38, 'name': 'Ирландия'}, {'id': 11, 'name': 'Великобритания'}, {'id': 8, 'name': 'Франция'}, {'id': 1, 'name': 'США'}], 'rating': {'value': 7.118, 'count': 5682, 'ready': True}, 'expectations': {'value': 99.36, 'count': 1735, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 111, 'trailerId': 154730, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-28'}}, {'id': 952241, 'slug': 'bamblbi-2018', 'title': 'Бамблби', 'originalTitle': 'Bumblebee', 'year': 2018, 'poster': {'baseUrl': '//st.kp.yandex.net/images/film_iphone/iphone360_952241.jpg', 'url': '//st.kp.yandex.net/images/film_iphone/iphone360_952241.jpg?width=360'}, 'genres': [{'id': 2, 'name': 'фантастика'}, {'id': 3, 'name': 'боевик'}, {'id': 10, 'name': 'приключения'}], 'countries': [{'id': 1, 'name': 'США'}], 'rating': {'value': 6.677, 'count': 16809, 'ready': True}, 'expectations': {'value': 85.430000000000012, 'count': 13051, 'ready': True}, 'currentRating': 'RATING', 'serial': False, 'duration': 114, 'trailerId': 153055, 'contextData': {'isDigital': True, 'releaseDate': '2019-03-28'}}], 'stats': {'total': 23, 'limit': 1000, 'offset': 0}}}
Traceback (most recent call last):
  File "/opt/etc/movies/digitalreleases.py", line 747, in <module>
    main()
  File "/opt/etc/movies/digitalreleases.py", line 729, in main
    releases = digitalReleases(DAYS)
  File "/opt/etc/movies/digitalreleases.py", line 118, in digitalReleases
    releaseDate = datetime.datetime.strptime(releaseDateStr, "%Y-%m-%d").date()
  File "/_strptime.py", line 280, in <module>
  File "/_strptime.py", line 194, in __init__
  File "/_strptime.py", line 77, in __init__
  File "/_strptime.py", line 129, in __calc_date_time
ValueError: character U+2aec0028 is not in range [U+0000; U+10ffff]

С данными всё хорошо. И исходный JSON, полученный от КиноПоиск, и сконвертированный словарь содержат верные данные. Вывод — проблема в работе функции strptime на вашей прошивке. В первую очередь стоит собрать и поставить самую последнюю версию прошивки.
У меня точно такая же проблема (на Padavan, собранной около года назад), и совет обновить прошивку кажется, мягко говоря, странным. Совет выше обновить Python до 3.7 (текущая версия, доступная в Entware — 3.6) тоже не очень нравится.
Если вам не нравится объяснения и совет, то вы вольным пользоваться любыми другими советами, которые не покажутся вам странными. Ведь это логично. Если вы не хотите пользоваться советами (тем более, что спрашивали не вы), то кто-то другой вполне может захотеть. Последняя доступная версия Padavan (commit 32a93db, 2018-11-05) с digitalreleases.py работает без проблем. Актуальная версия Python 3 в Entware — 3.7.1 (у вас используется устаревший менеджер пакетов Entware-ng, но т.к. обновлять прошивку вы не хотите, то ничего обновлённого из Entware вам не светит).
К сожалению для меня это была самая актуальная прошивка, но я нашел выход, совсем забыл что у меня есть домашний медиа сервер на ubuntu16, на ней все прекрасно работает с python 3.5.2.
Вот здесь какой-то мусор прилетел вместо даты:
releaseDateStr = contextData.get(«releaseDate»)

А дальше автор не провел обработку ошибок с try, except. Программа попыталась сравнить текущую дату с каким-то текстом и упала.
Все нужные проверки есть. Не вижу практической пользы в вашем ответе человеку. Программа у человека упала в момент releaseDate = datetime.datetime.strptime(releaseDateStr, "%Y-%m-%d").date(), т.к. произошла внутренняя ошибка в strptime (1) или releaseDateStr содержит неподдерживаемый символ (ошибка произошла в json.loads (2) или символ появился уже в ответе от КиноПоиск(3)).
releaseDate = datetime.datetime.strptime(releaseDateStr, "%Y-%m-%d").date()

можно разбить эту цепочку вызовов на отдельные строки внутри «try/except» и тогда при выводе ошибки будет понятно в чём именно проблема
Прикольно, но не уверен что полезно, из реально годных фильмов будет штук 10 в год тока, можно и в ручную по старинке.
Как узнать, какие годные? Мне, например, очень понравилась «Аннигиляция». А отзывы и рейтинги на него плохие. Если каждую неделю просматривать список из десятка новых фильмов, есть время подумать (посмотреть скрины/описание), стоит ли смотреть (не обязательно всё смотреть — может, в какую-то неделю и ничего не заинтересует).

Или каким способом можно отобрать 10 в год? Сортировкой по рейтингу?
7,2 это средняя оценка всех фильмов кинопоиска, если считать что фильм может только или понравится или нет, то 7,2 это 50% что понравится, дальше до 9,2 практически линейно растет до 100% условно*.
Для меня ниже 7,2 смотреть фильмы слишком рисково придется перебрать много говна чтобы найти тот что именно мне по вкусу подойдет, с другой стороны точно зная например что мне нравятся фильмы про петли времени и вообще путешествия во времени я посмотрел их все и мне 95% понравилось несмотря на оценки.
По поводу аннигиляции, вы уверены что фильм понравился? для меня например есть критерий ресмотрибельность, если её нет я ставлю фильму максимум 7, и фильм не считается крутым хотя и не жалею что посмотрел, скорее категория «на 1 раз можно».
Задайте себе вопрос будете ли через 5 лет его пересматривать если нет, то фильм не считается что понравился.

* Имеется ввиду 100% не экстаза, а 100% от удовольствия от самого лучшего фильма снятого на текущий момент, какой именно не называется.
Почему-то вспомнилось давняя история, как программист искал себе жену. Распарсил сайт знакомств и по ключевым своим каким-то критериям и хештегам четко определил нужную себе вторую половину. Целенаправленно познакомился. Целенаправленно женился. Дальше история умалчивает.
Имею ввиду, рейтинги ниже 7.2 не смотрю :)

Лично у меня отбор фильмов идет таким образом:
а) Прилетает RSS в мобильник со свежим релизом и описанием фильма — заинтересовало, погуглил/почитал мнение.
б) Форум, специализированная обсуждаемая «народная» ветка по рекомендации фильмов: «Внезапно, %random_film_name% неожиданно хорош! Советую.» 80% просмотренных отличных фильмов были выдернуты именно оттуда, в другом случае я про них даже и не узнал бы.

Кинопоиск парсить по рейтингам в качестве исходника напоминает «100 книг которые обязательно надо прочитать».

P.S.
qw1
Мне, например, очень понравилась «Аннигиляция».

xPomaHx
По поводу аннигиляции, вы уверены что фильм понравился?

Вот это шикарно )))))))))))) Теперь qw1 начнет сомневаться, действительно понравился ему фильм или все же нет.
Скорее сомнения в определениях слов. Прежде чем что либо обсуждать нужно убедится что мы об одном и том же говорим.
Ну у нас отличия только в том что моя выборка более репрезентативная и объективна, сколько вы так отзывов прочитаете с форума и сколько оценок на кинопоиске.
По поводу 100 книг, если взять радномного человека, и о нем вообще нечего не известно о его вкусах то лучше ему посоветовать 250 топ фильмов, шансов что там фильмы оттуда понравятся больше.
вы уверены что фильм понравился?
У меня очень простой критерий: если во время просмотра в голове что-то «щелкнуло», т.е. испытаны сильные эмоции, то понравился. Будь то необычный визуал, или сюжетный твист, или какая-то мысль пришла, или просто получил удовольствие от какой-то отсылки.
7,2 это 50% что понравится, дальше до 9,2 практически линейно растет до 100% условно
По рейтингу 2018 вверх выбиваются всякие «Остров собак», «Война бесконечности», «Богемская рапсодия». Первые два смотрел — жвачка-жвачкой, всё настолько стандартно и вообще не удивило. Последнее даже смотреть не хочу — фильмы-биографии, исторические — вообще не моё.
для меня например есть критерий ресмотрибельность
У меня мало времени смотреть, а уж пересматривать точно не буду. Лучше дать шанс новому многообещающему фильму/сериалу. Или достать из беклога какой-нибудь очередной марвел — вряд ли он мне понравится, но хотя бы буду в курсе мемов поп-культуры.
Сделал по инструкции — работает!
Правда, сначала пришлось немного почитать, т.к. не пользовался opkg — изучить как это включить, что такое entware, почему-то с ext4-флешки устанавливаться не хотел, зато с usb-hdd без проблем установилось, затем mc для удобства… 30 минут были потрачены не зря, благодарю.
А подскажите не адепту питона как сделать так чтобы в выводе
Текущая дата: 14.03.2019
Целевая дата: 13.01.2019
Количество месяцев для загрузки: 3
Загрузка релизов за 03.2019.
Загрузка релизов за 02.2019.
Загрузка релизов за 01.2019.
Загружены ID от 74 релизов.
Загрузка торрент-ссылок для filmID 1009959.
Загрузка торрент-ссылок для filmID 197352.
Загрузка данных для filmID 197352.
Загрузка торрент-ссылок для filmID 1121640.
Загрузка данных для filmID 1121640.
Загрузка торрент-ссылок для filmID 1115501.
Загрузка торрент-ссылок для filmID 988782.
Загрузка данных для filmID 988782.
Загрузка торрент-ссылок для filmID 1111720.
Загрузка торрент-ссылок для filmID 926782.
Загрузка данных для filmID 926782.
Загрузка торрент-ссылок для filmID 955968.
Загрузка данных для filmID 955968.
Загрузка торрент-ссылок для filmID 975292.
Загрузка данных для filmID 975292.
Загрузка торрент-ссылок для filmID 1142555.
Загрузка данных для filmID 1142555.
Загрузка торрент-ссылок для filmID 1022839.
Загрузка данных для filmID 1022839.
Загрузка торрент-ссылок для filmID 1227794.

Слева писалась дата/время события, для логирования так сказать.
Измените вывод print там, где вам нужно. Например:
print(datetime.datetime.now().strftime("%H:%M %d.%m.%Y") + ": Загружены ID от {} релизов.".format(len(rDict)))

Будет:
16:13 17.03.2019: Загружены ID от 73 релизов.
Сделал для себя велосипед, переписал почти один в один на js тока добавил вывод в rss и сортировку по дате релиза. Давно хотел и данный проект показался хорошим прототипом. Спасибо автору, выложу свое творение, может кому нибудь пригодится https://github.com/theone74/tmr
Пока как есть, в будущем думаю переделать, пока тока руторент через прокси сделал, кинопоиск ходит напрямую. Ну и докер-файл прилагается.
Привет, не подскажите как правильно запустить ваше творение, пытался и через nodejs и через pm2. К сожалению в обоих случаях сервер не запускается, в консоли тоже тишина. Заранее спасибо
Очень круто! Как раз то, что сам хотел сделать. Нужно было как раз простую страницу со списком фильмов, их описанием и ссылкой на торрент. Буду допиливать под себя. Форкнул, спасибо!)
Для тех у кого NAS от QNAP (делаем через костыли на примере TS-228 с активным доступом по SSH; блокировок со стороны провайдеров нет):
1. поставил из AppCenter Python3
2. создал
/share/<mount_point>/.qpkg/QDigitalReleases
3. залил туда digitalreleases.py
4. правим файл для свои нужды:
HTML_SAVE_PATH = "/home/httpd/transmission.html"
5. определяем где лежит исполняемый файл python3: /share/<mount_point>/.qpkg/Python3/src/bin/python3.5
6. пробуем запустить:
/share/<mount_point>/.qpkg/Python3/src/bin/python3.5 /share/<mount_point>/.qpkg/QDigitalReleases/digitalreleases.py
7. получили кучу ошибок от SSL; ругается на сертификаты; идем в гугл
8. добавление сертификатов в /etc/ssl/certs ничего не исправило; снова идем в гугл
9. нашли такое:
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
10. добавляем в /share/<mount_point>/.qpkg/QDigitalReleases/digitalreleases.py и еще раз пробуем запустить — работает!!!

Итого: костыль в виде отказа от проверки валидности https не есть хорошо, но для быстрого запуска сойдет. Буду рад если кто подскажет как подружить на этой железке сертификаты и python3.
QNAP поддерживает Entware. Так что вы можете просто игнорировать его стандартные возможности (и возникающие проблемы), добавить Entware и сделать всё так, как описано в заметке.
Добавляешь на QNAP репо приложений QNAPclub www.qnapclub.eu/en/repo.xml
Устанавливаешь из репо Entware и возвращаешься к началу инструкции — и все по пунктам.
18.03.2019:

  • Исправлен баг с неверным формирование ссылки на торрент-файл, когда rutor отдаёт относительные ссылки на торрент-файлы, а не абсолютные.
  • Исправлен баг с неверным учётом сидеров, когда раздач одного типа больше двух.
  • Добавлена ссылка на страницу фильма в КиноПоиск (нажмите на рейтинг КиноПоиск).
  • Добавлен параметр USE_MAGNET. Использование Magnet-ссылок вместо ссылок на торрент-файлы — True, False. По умолчанию False.
  • Добавлен параметр SORT_TYPE. Тип финальной сортировки. rating — сортировка по рейтингу, releaseDate — сортировка по дате цифрового релиза релиза. По умолчанию rating.


19.03.2019:

  • Исправлен баг при парсинге страницы с торрентами.
  • Добавлена возможность выбора сортировки по дате появления торрентов — torrentsDate.
  • Добавлена загрузка цифровых релизов за дополнительные 7 дней после текущей даты, т.к. иногда цифровой релиз появляется немного раньше официальной даты.
В догонку к статье о выборочном обходе блокировок (к той статье уже немогу оставлять коментарии). Подскажите пожалуйста, если нетрудно, что нужно дописать для keenetic OS, чтобы получить доступ к *.onion сайтам (выборочным, ну или всем сразу)?
Кратко (получится у вас это или нет, зависит только от ваших навыков)…

В torrc добавить:
VirtualAddrNetwork 10.254.0.0/16
DNSPort 127.0.0.1:9053
AutomapHostsOnResolve 1

В dnsmasq.conf добавить:
server=/onion/127.0.0.1#9053
ipset=/onion/unblock
Спасибо, всё получилось!
21.03.2019:

  • Исправлен учёт и отображение рейтинга, когда рейтинг КиноПоиск отсутствует.
22.03.2019:

  • Добавлена возможность сортировки в браузере (с помощью JS): по рейтингу, по дате цифрового релиза, по дате торрент-релиза.
22.03.2019:

  • Добавлена сортировка по комбинированной дате.

    Например, сегодня 02.03.2019.

    Цифровой релиз фильма состоялся 01.02.2019, а качественный торрент-релиз 01.03.2019. Если выбрана сортировка по дате цифрового релиза, то фильм окажется где-то в середине списка, хоть он в хорошем качестве появился только вчера.

    Цифровой релиз фильма состоялся 01.03.2019, а качественный торрент-релиз 01.02.2019 (т.е. он каким-то образом появился существенно раньше анонсированных планов). Если выбрана сортировка по дате торрент-релиза, то фильм окажется где-то в середине списка.

    Сортировка по комбинированной дате (большая дата из даты цифрового релиза и даты торрент-релиз) в начале списка отображает актуальные релизы, как по дате цифрового релиза, так и по дате торрент-релиза, т.е. новые фильмы гарантированно будут появляться в начале списка.
26.03.2019:

  • Новая версия программы. Пока в виде файла с индексом «2» digitalreleases2.py. Ещё кое-что пробую, но в целом всё работает очень хорошо.

    Предыдущая версия программы оказалась малопригодной для других проектов. Вся проблема в выдаче цифровых релизов от КиноПоиск. Многих новых фильмов просто нет в этом списке. Из-за этого поставленная задача не реализуется программой.

    В новой версии большая часть переписана завново, лишь взяты некоторые наработки из предыдущей версии. Доработан принцип отбора качественных раздач. Исправлены ошибки (в старой версии они уже не будете исправлены). Уже сейчас результат её работы полностью соответствет поставленной задаче.

    Раньше список фильмов строился по схеме: Цифровые релизы с КиноПоиск > Поиск соответствий на Rutor для каждого фильма > Формирования списка фильмов, используя данные КиноПоиск. В новой версии: Поиск предварительно подходящих релизов на Rutor и их обработка > Формирование списка фильмов и дополнительная обработка подходящих фильмов, используя данные КиноПоиск.

    Новая версия работает медленнее, но результат того стоит.

    Для новой версии требуется дополнительная библиотеки Beautiful Soup 4 (в остальном никаких отличий по установке и запуску):
    pip3 install beautifulsoup4

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

root@BananaPI ~ # python3 /root/Scripts/digitalreleases.py
Дата и время запуска программы: 2019-03-27 15:28:35.011373.
Количество попыток при ошибках соединения: 3.
Проверка доступности rutor.info...
Сайт rutor.info доступен.
Анализ раздач...
Загрузка списка предварительно подходящих раздач...
Traceback (most recent call last):
File "/root/Scripts/digitalreleases.py", line 1202, in main()
File "/root/Scripts/digitalreleases.py", line 64, in main
results = rutorResultsForDays(LOAD_DAYS)
File "/root/Scripts/digitalreleases.py", line 97, in rutorResultsForDays
element = parseRutorElement(result)
File "/root/Scripts/digitalreleases.py", line 555, in parseRutorElement
year = match[1]
TypeError: '_sre.SRE_Match' object is not subscriptable
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.5/dist-packages (4.6.0)
Спасибо
Скорее всего (судя по описанию проблемы в Google), нужна версия Python 3.7.x (последняя на данный момент, с ней гарантированно работает) или 3.6.x. Или адаптация кода под более ранние версии (тут я не помогу).
Так и запишем: «На Debian 9 не работает.» Без дополнительных действий.
С 3.6 работает (Centos 7).
28.03.2019 (digitalreleases2.py):

  • Добавлен дополнительный поиск качественных раздач на kinozal.tv.

    Если в найденых элементах отсутствует BDRip 1080p (но есть BDRemux) или отсутствует BDRemux (но есть BDRip 1080p), то будет произведён дополнительный поиск нужной качественной раздачи на kinozal.tv. Поиск будет производиться только при ключе USE_MAGNET = True, т.е. результат такого поиска — magnet-ссылки. Чтобы задействовать дополнительней поиск по kinozal.tv, вам нужно указать параметры KINOZAL_USERNAME и KINOZAL_PASSWORD. Не волнуйтесь, в финальном файле будут magnet-ссылки, не связанные с вашей учётной записью. Учётная запись нужна только для того, чтобы получить доступ к magnet-ссылке на самом сайте kinozal.tv.

    Например, сейчас на rutor нет BDRemux актуальных фильмов с высоким рейтингом Фаворитка, Капернаум. А для фильма Экстаз нет BDRip 1080p, но есть BDRemux. Дополнительный поиск найдёт соответствующие BDRemux и BDRip 1080p на kinozal и добавит их в список.

    Вот, как обычно, пример результата от 28.03.2019 (ссылки в примере искажены, чтобы ничего не нарушать).
)) скоро это превратится в свой домашний торрент трекер…

Но а если серьезно, второй релиз на моём сервере что-то не полетел, спотыкается о первую строчку там где beautifulsoup, у меня Ubuntu 16.10, в репозитории не нашёл пакет beautifulsoup4, нашёл только python-bs4…
Нет, не превратится. Уже сейчас результат полностью соответствует поставленной задаче (только доработки возникающих желаний остались). В конечном итоге это будет программа для Android TV, в основном она почти готова (для себя и в остатке для тех, кто любит смотреть торренты напрямую). Проверил Ubuntu, beautifulsoup4 без проблем находится и устанавливается:
sudo apt install python3-pip
pip3 install beautifulsoup4
Ребят подскажите в чём может быть проблема? Giga II, 2.15.C.2.0-2
~ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
wget: error while loading shared libraries: libc.so.0: cannot open shared object file: No such file or directory
*** Failed to download the package list from http://bin.entware.net/mipselsf-k3.4/Packages.gz

Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
wget: error while loading shared libraries: libc.so.0: cannot open shared object file: No such file or directory
*** Failed to download the package list from http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz

Collected errors:
 * opkg_download: Failed to download http://bin.entware.net/mipselsf-k3.4/Packages.gz, wget returned 127.
 * opkg_download: Failed to download http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz, wget returned 127.
Вам лучше в профильном форуме (Keenetic) задавать такие вопросы. К топику он напрямую не относится. Вот тут кое-какие пояснения и решения (эту и страницу назад прочитайте). wget из Entware ломается при установке некоторых пакетов. Например, у меня аналогично отвалился wget после установки пакетов openssh.
Спасибо, сбросил до заводских, настроил с нуля, wget победил.
Теперь другая проблема (digitalreleases2.py):
~ # python3 /opt/etc/movies/digitalreleases.py
Дата и время запуска программы: 2019-03-29 04:33:52.127348.
Количество попыток при ошибках соединения: 3.
Проверка доступности rutor.info...
Сайт rutor.info недоступен, или изменился его формат данных.
Работа программы принудительно завершена.


На Компьютере rutor.info доступен:
Дата и время запуска программы: 2019-03-29 04:41:00.697179.
Количество попыток при ошибках соединения: 3.
Проверка доступности rutor.info...
Сайт rutor.info доступен.
Анализ раздач...
Загрузка списка предварительно подходящих раздач...
Обработка раздачи: Ван Гог. На пороге вечности (2018)...
Обработка раздачи: Тень (2018)...
Обработка раздачи: Бамблби (2018)...
Обработка раздачи: Патрик (2018)...
Обработка раздачи: Стэн и Олли (2018)...
Обработка раздачи: Ангел (2018)...
Обработка раздачи: Идеальная западня (2018)...

Заработала!))
Забыл добавить в mcedit /opt/etc/tor/torrc
SOCKSPort 127.0.0.1:9050

Установил
pip3 install --upgrade pip setuptools
pip3 install pysocks

Заменил в digitalreleases.py (v.2)
SOCKS5_IP = ""

на
SOCKS5_IP = "127.0.0.1"

SOCKS5_PORT = 9050 Оставил без изменения.
Я, что то неправильно сделал, или программа так и должна выполнятся 15 минут? Загрузка ЦП до 85%.
Заголовок спойлера
login as: root
root@192.168.1.1's password:

BusyBox v1.30.1 () built-in shell (ash)

~ # python3 /opt/etc/movies/digitalreleases.py
Дата и время запуска программы: 2019-03-29 06:00:22.474790.
Количество попыток при ошибках соединения: 3.
Для rutor.info будет использоваться прокси-сервер SOCKS5: 127.0.0.1:9050.
Проверка доступности rutor.info…
Сайт rutor.info доступен.
Анализ раздач…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Ван Гог. На пороге вечности (2018)…
Обработка раздачи: Тень (2018)…
Обработка раздачи: Бамблби (2018)…
Обработка раздачи: Патрик (2018)…
Обработка раздачи: Стэн и Олли (2018)…
Обработка раздачи: Ангел (2018)…
Обработка раздачи: Идеальная западня (2018)…
Обработка раздачи: Репродукция (2018)…
Обработка раздачи: Американский палач (2019)…
Обработка раздачи: Святая Агата (2018)…
Обработка раздачи: Аквамен (2018)…
Обработка раздачи: По половому признаку (2018)…
Обработка раздачи: Капернаум (2018)…
Обработка раздачи: Капернаум (2019)…
Обработка раздачи: Дом вверх дном (2018)…
Обработка раздачи: Месть Лиззи Борден (2018)…
Обработка раздачи: Начни сначала (2018)…
Обработка раздачи: Тройная угроза (2019)…
Обработка раздачи: Грязь (2019)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Экстаз (2018)…
Обработка раздачи: Шутки в сторону 2: Миссия в Майами (2018)…
Обработка раздачи: Крид 2 (2018)…
Обработка раздачи: Две королевы (2018)…
Обработка раздачи: Реинкарнация (2018)…
Обработка раздачи: Дикая жизнь (2018)…
Обработка раздачи: Хроники хищных городов (2018)…
Обработка раздачи: Тройная граница (2019)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Лондонские поля (2018)…
Обработка раздачи: Фантастические твари: Преступления Грин-де-Вальда (2018)…
Обработка раздачи: Зелёная книга (2018)…
Обработка раздачи: 22 мили (2018)…
Обработка раздачи: Книжный клуб (2018)…
Обработка раздачи: Стажёр (2018)…
Обработка раздачи: Разлом (2018)…
Обработка раздачи: Черная полоса (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Фаворитка (2018)…
Обработка раздачи: Ремнант: Всё ещё вижу тебя (2018)…
Обработка раздачи: Сможете ли вы меня простить? (2018)…
Обработка раздачи: Холодная война (2018)…
Обработка раздачи: Дом, который построил Джек (2018)…
Обработка раздачи: Ужастики 2: Беспокойный Хэллоуин (2018)…
Обработка раздачи: Девушка, которая застряла в паутине (2018)…
Обработка раздачи: Нация убийц (2018)…
Обработка раздачи: Вернуть Бена (2018)…
Обработка раздачи: Приключения Аладдина (2018)…
Обработка раздачи: Король воров (2018)…
Обработка раздачи: Лоро (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: На границе миров (2018)…
Обработка раздачи: Робин Гуд: Начало (2018)…
Обработка раздачи: Тёмное зеркало (2018)…
Обработка раздачи: Непотопляемые (2018)…
Обработка раздачи: Паддлтон (2019)…
Обработка раздачи: Астрал: Новое измерение (2018)…
Обработка раздачи: Сама жизнь (2018)…
Обработка раздачи: Полночное солнце (2018)…
Обработка раздачи: Интервью с Богом (2018)…
Обработка раздачи: Оверлорд (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Хэллоуин (2018)…
Обработка раздачи: Операция «Шаровая молния» (2018)…
Обработка раздачи: Один король — одна Франция (2018)…
Обработка раздачи: Новый роман (2018)…
Обработка раздачи: Пирсинг (2018)…
Обработка раздачи: Последняя миссия (2018)…
Обработка раздачи: Жил-был Дэдпул (2018)…
Обработка раздачи: Как не стать президентом (2018)…
Обработка раздачи: Можно только представить (2018)…
Обработка раздачи: Магазинные воришки (2018)…
Обработка раздачи: Точка невозврата (2018)…
Обработка раздачи: Богемская рапсодия (2018)…
Обработка раздачи: Человек на Луне (2018)…
Обработка раздачи: Не волнуйся, он далеко не уйдет (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Нас не проведешь (2018)…
Обработка раздачи: Вдовы (2018)…
Обработка раздачи: Химера (2018)…
Обработка раздачи: Ничего хорошего в отеле «Эль рояль» (2018)…
Обработка раздачи: Щелкунчик и четыре королевства (2018)…
Обработка раздачи: Мир Юрского периода 2 (2018)…
Обработка раздачи: Суспирия (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Под Сильвер-Лэйк (2018)…
Обработка раздачи: Звезда родилась (2018)…
Обработка раздачи: Бархатная бензопила (2019)…
Обработка раздачи: Анон (2018)…
Обработка раздачи: Бегущий в лабиринте: Лекарство от смерти (2018)…
Обработка раздачи: Миссия невыполнима: Последствия (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Юморист (2018)…
Обработка раздачи: Цензор (2018)…
Обработка раздачи: Айка (2018)…
Обработка раздачи: Тобол (2019)…
Обработка раздачи: Гоголь. Страшная месть (2018)…
Обработка раздачи: Т-34 (2018)…
Обработка раздачи: Семь ужинов (2019)…
Обработка раздачи: Завод (2018)…
Обработка раздачи: Отрыв (2018)…
Обработка раздачи: Звёзды (2018)…
Обработка раздачи: Как я стал русским (2018)…
Обработка раздачи: Спасти Ленинград (2019)…
Обработка раздачи: Бабушка легкого поведения 2 (2019)…
Обработка раздачи: Русский Бес (2018)…
Обработка раздачи: Моя жизнь (2018)…
Обработка раздачи: Любовный треугольник (2019)…
Обработка раздачи: Черновик (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Гринч (2018)…
Обработка раздачи: Человек-паук: Через вселенные (2018)…
Обработка раздачи: Снежные гонки (2018)…
Обработка раздачи: Волки и Овцы: Ход свиньёй (2018)…
Обработка раздачи: Ральф против интернета (2018)…
Обработка раздачи: Снежная Королева: Зазеркалье (2018)…
Обработка раздачи: Три богатыря и Наследница престола (2018)…
Обработка раздачи: Эллиот (2018)…
Загрузка списка предварительно подходящих раздач…
Обработка раздачи: Укрась прощальное утро цветами обещания (2018)…
Загрузка данных для фильма с ID 1054990…
Загружены данные для фильма: Ван Гог. На пороге вечности.
Загрузка данных для фильма с ID 1045295…
Загружены данные для фильма: Тень.
Загрузка данных для фильма с ID 952241…
Загружены данные для фильма: Бамблби.
Загрузка данных для фильма с ID 1011011…
Загружены данные для фильма: Патрик.
Загрузка данных для фильма с ID 823203…
Загружены данные для фильма: Стэн и Олли.
Загрузка данных для фильма с ID 1064391…
Загружены данные для фильма: Ангел.
Загрузка данных для фильма с ID 843790…
Загружены данные для фильма: Репродукция.
Загрузка данных для фильма с ID 1191273…
Загружены данные для фильма: Американский палач.
Загрузка данных для фильма с ID 1037328…
Загружены данные для фильма: Святая Агата.
Загрузка данных для фильма с ID 470178…
Загружены данные для фильма: Аквамен.
Загрузка данных для фильма с ID 1073213…
Загружены данные для фильма: По половому признаку.
Загрузка данных для фильма с ID 1118042…
Загружены данные для фильма: Капернаум.
Загрузка данных для фильма с ID 1094950…
Загружены данные для фильма: Дом вверх дном.
Загрузка данных для фильма с ID 941900…
Загружены данные для фильма: Месть Лиззи Борден.
Загрузка данных для фильма с ID 652758…
Загружены данные для фильма: Начни сначала.
Загрузка данных для фильма с ID 1041862…
Загружены данные для фильма: Тройная угроза.
Загрузка данных для фильма с ID 262909…
Загружены данные для фильма: Грязь.
Загрузка данных для фильма с ID 1118214…
Загружены данные для фильма: Экстаз.
Загрузка данных для фильма с ID 1043955…
Загружены данные для фильма: Крид 2.
Загрузка данных для фильма с ID 696247…
Загружены данные для фильма: Две королевы.
Загрузка данных для фильма с ID 1112132…
Загружены данные для фильма: Реинкарнация.
Загрузка данных для фильма с ID 1005852…
Загружены данные для фильма: Дикая жизнь.
Загрузка данных для фильма с ID 470464…
Загружены данные для фильма: Тройная граница.
Загрузка данных для фильма с ID 463858…
Загружены данные для фильма: Лондонские поля.
Загрузка данных для фильма с ID 843479…
Загружены данные для фильма: Фантастические твари: Преступления Грин-де-Вальда.
Загрузка данных для фильма с ID 1108577…
Загружены данные для фильма: Зеленая книга.
Загрузка данных для фильма с ID 921938…
Загружены данные для фильма: 22 мили.
Загрузка данных для фильма с ID 1111934…
Загружены данные для фильма: Стажёр.
Загрузка данных для фильма с ID 999713…
Загружены данные для фильма: Черная полоса.
Загрузка данных для фильма с ID 938644…
Загружены данные для фильма: Фаворитка.
Загрузка данных для фильма с ID 660774…
Загружены данные для фильма: Ремнант: Всё ещё вижу тебя.
Загрузка данных для фильма с ID 1065878…
Загружены данные для фильма: Холодная война.
Загрузка данных для фильма с ID 942396…
Загружены данные для фильма: Дом, который построил Джек.
Загрузка данных для фильма с ID 975287…
Загружены данные для фильма: Ужастики 2: Беспокойный Хэллоуин.
Загрузка данных для фильма с ID 955968…
Загружены данные для фильма: Девушка, которая застряла в паутине.
Загрузка данных для фильма с ID 1011685…
Загружены данные для фильма: Нация убийц.
Загрузка данных для фильма с ID 1071357…
Загружены данные для фильма: Вернуть Бена.
Загрузка данных для фильма с ID 1065112…
Загружены данные для фильма: Приключения Аладдина.
Загрузка данных для фильма с ID 1121640…
Загружены данные для фильма: Король воров.
Загрузка данных для фильма с ID 1101939…
Загружены данные для фильма: На границе миров.
Загрузка данных для фильма с ID 927495…
Загружены данные для фильма: Робин Гуд: Начало.
Загрузка данных для фильма с ID 1027785…
Загружены данные для фильма: Тёмное зеркало.
Загрузка данных для фильма с ID 1114304…
Загружены данные для фильма: Паддлтон.
Загрузка данных для фильма с ID 926782…
Загружены данные для фильма: Астрал: Новое измерение.
Загрузка данных для фильма с ID 1007921…
Загружены данные для фильма: Сама жизнь.
Загрузка данных для фильма с ID 985022…
Загружены данные для фильма: Интервью с Богом.
Загрузка данных для фильма с ID 1046450…
Загружены данные для фильма: Один король — одна Франция.
Загрузка данных для фильма с ID 1065346…
Загружены данные для фильма: Новый роман.
Загрузка данных для фильма с ID 1022839…
Загружены данные для фильма: Пирсинг.
Загрузка данных для фильма с ID 991614…
Загружены данные для фильма: Износ.
Загрузка данных для фильма с ID 1209736…
Загружены данные для фильма: Жил-был Дэдпул.
Загрузка данных для фильма с ID 1046885…
Загружены данные для фильма: Как не стать президентом.
Загрузка данных для фильма с ID 1015002…
Загружены данные для фильма: Можно только представить.
Загрузка данных для фильма с ID 1114967…
Загружены данные для фильма: Магазинные воришки.
Загрузка данных для фильма с ID 568289…
Загружены данные для фильма: Богемская рапсодия.
Загрузка данных для фильма с ID 463803…
Загружены данные для фильма: Человек на Луне.
Загрузка данных для фильма с ID 965901…
Загружены данные для фильма: Вдовы.
Загрузка данных для фильма с ID 1047565…
Загружены данные для фильма: Химера.
Загрузка данных для фильма с ID 1047143…
Загружены данные для фильма: Ничего хорошего в отеле «Эль Рояль».
Загрузка данных для фильма с ID 423063…
Загружены данные для фильма: Суспирия.
Загрузка данных для фильма с ID 980327…
Загружены данные для фильма: Под Сильвер-Лэйк.
Загрузка данных для фильма с ID 1046246…
Загружены данные для фильма: Бархатная бензопила.
Загрузка данных для фильма с ID 1006742…
Загружены данные для фильма: Юморист.
Загрузка данных для фильма с ID 730390…
Загружены данные для фильма: Цензор.
Фильм «Цензор» слишком старый. Пропуск фильма.
Загрузка данных для фильма с ID 665107…
Загружены данные для фильма: Айка.
Загрузка данных для фильма с ID 1115736…
Загружены данные для фильма: Тобол.
Загрузка данных для фильма с ID 1114917…
Загружены данные для фильма: Гоголь. Страшная месть.
Загрузка данных для фильма с ID 930878…
Загружены данные для фильма: Т-34.
Загрузка данных для фильма с ID 1115552…
Загружены данные для фильма: Семь ужинов.
Загрузка данных для фильма с ID 993591…
Загружены данные для фильма: Завод.
Загрузка данных для фильма с ID 1009491…
Загружены данные для фильма: Отрыв.
Загрузка данных для фильма с ID 1142555…
Загружены данные для фильма: Звёзды.
Загрузка данных для фильма с ID 1101223…
Загружены данные для фильма: Спасти Ленинград.
Загрузка данных для фильма с ID 1162846…
Загружены данные для фильма: Бабушка легкого поведения 2.
Загрузка данных для фильма с ID 1044134…
Загружены данные для фильма: Русский Бес.
Загрузка данных для фильма с ID 1048530…
Загружены данные для фильма: Моя жизнь.
Загрузка данных для фильма с ID 1227794…
Загружены данные для фильма: Любовный треугольник.
Загрузка данных для фильма с ID 738499…
Загружены данные для фильма: Гринч.
Загрузка данных для фильма с ID 920265…
Загружены данные для фильма: Человек-паук: Через вселенные.
Загрузка данных для фильма с ID 1187922…
Загружены данные для фильма: Снежные гонки.
Загрузка данных для фильма с ID 984361…
Загружены данные для фильма: Волки и Овцы: Ход свиньёй.
Загрузка данных для фильма с ID 988782…
Загружены данные для фильма: Ральф против интернета.
Загрузка данных для фильма с ID 1115081…
Загружены данные для фильма: Снежная Королева: Зазеркалье.
Загрузка данных для фильма с ID 1113014…
Загружены данные для фильма: Три богатыря и Наследница престола.
Работа программы завершена успешно.

Это нормально. Скорость выполнения в основном зависит от скорости соединения с rutor.info. Загрузка процессора непостоянная и незначительная (и в один поток), пики приходятся на моменты обработки данных. Работе маршрутизатора не мешаете. При необходимости всегда можно снизить приоритет программы через nice.
Всё отлично работает, спасибо.
В digitalreleases2.py заменил rutor.info на rutorc6mqdinc4cz.onion, соединения с rutor, по моим ощущениям, происходят быстрее.
29.03.2019 (digitalreleases2.py):

  • Добавлен учёт рейтинга MPAA для возраста (если отсутствует ratingAgeLimits)
  • Добавлен учёт АРК-ТВ Studio и Кириллица (они в фильмах очень редко, но встречаются) для релизов с Netflix
  • Небольшие правки

Вот, как обычно, пример результата от 29.03.2019 (ссылки в примере искажены, чтобы ничего не нарушать).
01.04.2019 (digitalreleases2.py):

  • Множество исправлений.


Вот, как обычно, пример результата от 01.04.2019 (ссылки в примере искажены, чтобы ничего не нарушать).
Сайт rutor.info недоступен, или изменился его формат данных с SOCKS5_IP = «192.168.1.1» (Мой IP адрес роутера 192.168.1.1)
с SOCKS5_IP = «127.0.0.1» запустился
или правильнее в mcedit /opt/etc/tor/torrc прописать SOCKSPort 192.168.1.1:9050?
А что теперь с сортировкой? Сортировка «по рейтингу» теперь не работает? Или я ее не правильно понимаю — она же по рейтингу IMDb?
Поменяйте строку:
movies.sort(key = operator.itemgetter("torrentsDate"), reverse = True)

на
movies.sort(key = operator.itemgetter(SORT_TYPE), reverse = True)

В какой-то момент поменял и забыл вернуть.

rating — это средний рейтинг между КиноПоиск и IMDb. Если какого-то из рейтингов у фильма нет или мало голосов, то используется тот, который есть.
Доброго времени суток. Подскажите пожалуйста, запустил вторую версию скрипта и после подключения к Rutor''у должна идти загрузка подходящих раздач, но на малинке я вижу следующее:

root@raspberrypi:/opt/etc/movies# python3 digitalreleases2.py                                     
Дата и время запуска программы: 2019-04-01 17:17:44.463199.                                       
Количество попыток при ошибках соединения: 3.                                                     
Для rutor.info и kinozal.tv будет использоваться прокси-сервер SOCKS5: 127.0.0.1:9050.            
Проверка доступности rutor.info...                                                                
Сайт rutor.info доступен.                                                                         
Анализ раздач...                                                                                  
Загрузка списка предварительно подходящих раздач...                                               root@raspberrypi:/opt/etc/movies#
В конце замените, чтобы поймать исключение:
try:
	exitCode = main()
except:
	exitCode = 1

на
exitCode = main()

Станет понятно, где именно происходит сбой.
Сделал как просили. Вот лог:
root@raspberrypi:/opt/etc/movies# python3 digitalreleases2.py                                     Дата и время запуска программы: 2019-04-01 18:20:12.819725.
Количество попыток при ошибках соединения: 4.
Для rutor.info и kinozal.tv будет использоваться прокси-сервер SOCKS5: 127.0.0.1:9050.
Проверка доступности rutor.info...
Сайт rutor.info доступен.
Анализ раздач...
Загрузка списка предварительно подходящих раздач...
Traceback (most recent call last):
  File "digitalreleases2.py", line 1776, in <module>
    exitCode = main()
  File "digitalreleases2.py", line 74, in main
    results = rutorResultsForDays(LOAD_DAYS)
  File "digitalreleases2.py", line 109, in rutorResultsForDays
    element = parseRutorElement(result)
  File "digitalreleases2.py", line 775, in parseRutorElement
    year = match[1]
TypeError: '_sre.SRE_Match' object is not subscriptable
Спасибо, разобрался. Работает как часы)
bot-1 ~ $ ping rutor.info
PING rutor.info (91.132.60.13) 56(84) bytes of data.
64 bytes from 91.132.60.13: icmp_seq=1 ttl=58 time=181 ms
64 bytes from 91.132.60.13: icmp_seq=2 ttl=58 time=182 ms
64 bytes from 91.132.60.13: icmp_seq=3 ttl=58 time=181 ms
64 bytes from 91.132.60.13: icmp_seq=4 ttl=58 time=183 ms
64 bytes from 91.132.60.13: icmp_seq=5 ttl=58 time=182 ms
64 bytes from 91.132.60.13: icmp_seq=6 ttl=58 time=181 ms
^C
— rutor.info ping statistics — 7 packets transmitted, 6 received, 14% packet loss, time 6126ms
rtt min/avg/max/mdev = 181.620/182.176/183.167/0.526 ms
@bot-1 ~ $ sudo /usr/bin/python3 /movies/digitalreleases.py
Дата и время запуска программы: 2019-04-02 12:01:02.668049.
Количество попыток при ошибках соединения: 3.
Проверка доступности rutor.info…
Сайт rutor.info недоступен, или изменился его формат данных.
Работа программы принудительно завершена.

Подскажите пожалуйста? На машине впн, доступ к интернету есть. В Socks ip я убрал.
Спасибо. Стало получше, но не полностью:

/movies/digitalreleases.py
Дата и время запуска программы: 2019-04-02 15:05:43.769198.
Количество попыток при ошибках соединения: 3.
Проверка доступности rutor.info…
Сайт rutor.info доступен.
Анализ раздач…
Загрузка списка предварительно подходящих раздач…

и обратно в консоль выбрасывает
Действительно, сначало надо было проверить :)
Обновил с 3.5 до 3.6 и затем пришлось еще обновить beuatifulsoap4. Теперь все хорошо.
Практически готова версия для Android TV, т.е. конечная цель всего этого проекта — удобный выбор качественных новинок для просмотра напрямую с торрентов (через Elementum, TorrServe или Ace Stream) на боксе или телевизоре с Android TV. Выбрали тип сортировки, выбрали фильм, выбрали качество и поехали смотреть. Простейшая навигация: Вниз и Вверх — выбор фильма, Влево и Вправо — выбор качества.

Осталось несколько тестов и можно выкладывать.
Скриншоты










Ну да, осталось только отслеживать и скрывать просмотренное (или интегрироваться с аккаунтом какого-нибудь подобного сервиса, того же кинопоиска).

Чтобы были варианты «Смотрел, не показывай больше» и «Не интересно, не показывай больше».
Это вы уже каким-нибудь сами, исходный код в вашем распоряжении.
Кому нужно, забирайте версию для Android TV. Проверено на Nvidia Shield TV, Xiaomi Mi Box S. С обычной версией Android совместимости нет. Управление только с помощью пульта (D-pad). Данные обновляются каждое утро (как хостинг будет стабильнее, данные будут обновляться несколько раз в день).
Спасибо, отличный скрипт получился! Хотелось бы ещё иметь возможность настраивать диапазон качества. Например, мне вообще не нужны рипы больше 10 Гб, а в некоторых случаях нужны рипы 1.5-2 Гб: мультики на планшет закинуть или на флешке на дачу отвезти.
Между дело непубличная версия digitalreleases2 подросла (ряд исправлений и нововведений), и существенно подросла программа НЦР (Новые Цифровые Релизы) для Android TV, где она используется. Есть История, Избранное, Фильтр, есть интеграция с blu-ray.com для пометок скоро выхода UHD BDRemux, есть возможность скачивать фильмы с помощью торрент-клиента длительным нажатием (а не только смотреть их напрямую) и пр. Скоро будет уникальное дополнение «Кинолегенды»… Ничего подобного, позволяющее в пару кликов на пульте (в буквальном смысле) смотреть новинки кино с запредельным качеством, для Android TV вы не найдёте.








Официальный канал НЦР для Android TV в Telegram — https://t.me/ndrofficial. Здесь публикуются новые версии программы и критически важная информация.

Официальная группа НЦР для Android TV в Telegram — https://t.me/ndrofficialgroup. Здесь можно задать вопрос по программе и получить ответ. И здесь же я публикую разную вторичную информацию по проекту, обсуждать пожелания и пр.
Несколько дней назад перестал отрабатывать нормально. Поймал исключение, по вашей же инструкции. Подскажите, как фиксить?
File "/etc/movies/digitalreleases.py", line 1798, in exitCode = main()
File "/etc/movies/digitalreleases.py", line 73, in main
movies = convertRutorResults(results)
File "/etc/movies/digitalreleases.py", line 283, in convertRutorResults
print("Загружены данные для фильма: " + detail["nameRU"] + ".")
UnboundLocalError: local variable 'detail' referenced before assignment
там в except после строки 281 забыли добавить continue…
Но проблема скорее всего глубже, если он вообще попал в этот except, ибо там:
print(«Загрузка не удалась. Пропуск фильма с ID » +…

киноpoisk изменил свое апи, пока новый не расковыряют — работать не будет

Скачал, установил, запустил digitalreleases2.
Фильмы мониторит, но уже несколько раз прерывается на одном и том же фильме…
[/opt/etc/movies] # python3 digitalreleases2.py
Дата и время запуска программы: 2020-01-20 15:41:32.731149.
Количество попыток при ошибках соединения: 3.
Для rutor.info и kinozal.tv будет использоваться прокси-сервер SOCKS5: 127.0.0.1:9050.
Проверка доступности rutor.info...
Сайт rutor.info доступен.
Анализ раздач...
Загрузка списка предварительно подходящих раздач...
Обработка раздачи: Дельфин Берни 2 (2019)...
Обработка раздачи: Дело Коллини (2019)...
Обработка раздачи: Сиротский Бруклин (2019)...
Обработка раздачи: Чёрный и синий (2019)...
Обработка раздачи: Счастливого нового дня смерти (2019)...
...
Обработка раздачи: Angry Birds 2 в кино (2019)...
Загрузка списка предварительно подходящих раздач...
Обработка раздачи: Птичий дозор (2019)...
Обработка раздачи: UglyDolls. Куклы с характером (2019)...
Загрузка списка предварительно подходящих раздач...
Обработка раздачи: Этот глупый свин не понимает мечту девочки-зайки (2019)...
Обработка раздачи: Связанные миры (2019)...
Загрузка данных для фильма с ID 1202494...
Загрузка не удалась. Пропуск фильма с ID 1202494.
[/opt/etc/movies] #

Прерывается — хоть 10 дней для анализа, хоть 100.
WEB страничка не формируется.
В чем может быть проблема?

Публичная версия программы больше не поддерживается, т.е. не исправляется при изменениях в работе используемых API и форматов данных. Но сохранена на GitHub для самостоятельной доработки при необходимости.

Удалось ли вам решить проблему с этой ошибкой?
так написали же, что «Публичная версия программы больше не поддерживается»
Sign up to leave a comment.

Articles