Автоматизация списывания видео с Олимпиады

Если вы хотите следить за Олимпиадой, но не желаете связываться с телевидением, то один из источников — это любимый трекер. И вроде бы всё хорошо, но правообладатели закрывают раздачи в течение пары часов после их появления. Печаль.

Что же делать? Проще всего вернуться к TV или смотреть в онлайн с сайтов типа е-икс юа. Меня это не устраивает, хочется хорошего качества и оперативности. Поэтому нужно отлавливать новые раздачи в нужном качестве сразу же после их появления и списывать, пока копирасты не закрыли.

Вручную? Можно, но для меня неудобно. Значит автоматизировать.

Первым делом нашёл решение на базе Automatic, оно описано в статье «How to autodownload RSS feeds in OS X Transmission». Интересно то, что второй найденной статьёй была «Автоматизация загрузки торрентов в Mac OS X» Павла Вязового. Мир тесен.

Решение хорошее, но Automatic не смог обратотать линки в RSS-фиде вида «link href=«viewtopic.php? t=4667069» в фиде трекера, содержащем раздачи, да и списать torrent-файлы без авторизации нельзя.

В статье Павла увидел упоминание «популярного, но сложного flexget». И понял, что это именно то, что нужно. Очень мощная система, с ней можно сделать практически всё. Ценой непростого изучения. В процессе изучения мне попалась заметка «Flexget-конфиги», благодаря ей я смог быстро решить вопрос с авторизацией.

Я активно использую virtualenvwrapper, ставлю flexget в виртуальном окружении

$ mkvirtualenv flexget $ easy_install flexget $ easy_install transmissionrpc $ easy_install mechanize $ rehash

Конфигурационный файл c1.yaml. Меня интересуют пять разделов Олимпиады, в них — видео качества 1080i и 720p.

templates: global: regexp: accept:  — '1080i'  — '720p' from: title rest: reject set: dl_link:»{{url|replace ('http://rutracker.org/forum/viewtopic.php? t=','http://dl.rutracker.org/forum/dl.php? t=')}}» dl_id:»{{url|replace ('http://rutracker.org/forum/viewtopic.php? t=','')}}» exec: curl -e »{{url}}» -b «bb_data=INSERT_YOURS_BB_DATA; bb_t=INSERT_YOURS_BB_T_DATA; bb_dl={{dl_id}}» »{{dl_link}}» > /Volumes/Data/Downloads/{{dl_id}}.torrent

tasks: task Санный спорт: rss: http://feed.rutracker.org/atom/f/2425.atom task Фигурное катание: rss: http://feed.rutracker.org/atom/f/2416.atom task Обзорные и тематические передачи: rss: http://feed.rutracker.org/atom/f/1637.atom task Лыжный спорт: rss: http://feed.rutracker.org/atom/f/2317.atom task Биатлон: rss: http://feed.rutracker.org/atom/f/2213.atom

schedules:  — tasks: '*' interval: minutes: 5

Обратите внимание, что нужно вставить ваши значения cookie в команду curl и указать ваш каталог для торрентов. Cookies берутся отсюда:

Фиды генерируются в нужном разделе:

Запуск программы для проверки:

$ workon flexget $ flexget -L info -c c1.yaml execute

Если нужно более детальная отладочная информация, то замените »-L info» на »-L debug» или даже »-L trace».

Когда всё заработает, то можно запустить программу в режиме демона:

$ flexget -L verbose -c c1.yaml daemon start

Если нужно заставить программу проверить rss«ы прямо сейчас, то вариант с «execute» передаст команду демону.

Transmission нужно сказать следить за каталогом, куда записываются файлы torrent. Раз в 5 минут flexget проверяет фиды, для новых записей, удовлетворяющим фильтру, списываются торренты, их подхватывает Transmission, и они автоматически списываются.

Вот что получилось (все файлы добавились автоматически без моего вмешательства):

Значимую часть убрал в угоду копирастам.

Дальше в моей схеме происходила автоматическая перекодировка в формат AppleTV и запись результата в каталог синхронизации BTSync для передачи на ноутбук, однако оказалось, что iFlicks2 для видео в формате .ts (1080i) записывает только звуковую дорожку и не кодирует видео. Так что отработанная схема нарушилась. После чего я в сердцах плюнул на «невыносимую лёгкость просмотра видео в мире Apple» и заказал медиаплеер iNext HD1 W (спасибо всем откликнувшимся на ту статью).

Полный текст статьи читайте на TheAppleGeek