RSS → Bash → Transmission
Внимание! Данный пост был опубликован более года назад и, возможно, уже утратил свою былую актуальность. Но это не точно.

Нахрен долгое вступление. Если на вопрос “Нравится автоматизировать и любишь посмотреть кино?” ты неосознанно ответишь положительно, то то что здесь написано - тебе понравится. Итак, наверняка у тебя есть своя железяка, которая стоит дома/офисе где-то в уголочке и выполняет роль файлошары/торрентокачалки и Джа знает ещё чего.

Выглядеть железяка может, например, так:

photo

Hardware
Мать MSI C847IS-P33
Камень Распаян на плате, Intel® Celeron® CPU 847 @ 1.10GHz / 2 ядра
Память DDR3 @ 2 Gb
SDD (система) Kingston @ 8 Gb
HDD (данные) WG Green @ 2 Tb

Что такое RSS torrent?

Это RSS лента, в которой вместо привычных новостей публикуются ссылки на .torrent файлы выбранной тобой тематики. Придумали это давно, и прогрессивный народ активно этим пользуется. Есть даже сервисы, такие как:

Которые этим и живут. Конечный пользователь приходит, выбивает интересный ему контент, получает ссылку на свою ленту, кормит её своему торрент-клиенту (который в свою очередь должен поддерживать torrent rss) - получая в конечном счете новые серии любимых сериалов/фильмов определенной тематики почти без задержки и лишних действий. Пиздец как удобненько.

Почему bash и Transmission?

Раньше скрипт был написан на питоне. Но поставить его - задача не из самых тривиальных, особенно на стареньких системах. Зависимости, сторонние библиотеки.. А bash - он считай что везде, да и в конкретной реализации нет никаких экзотичных требований.

Transmission в свою очередь - потому как очень шустрый, имеет адекватную веб-морду, да и с поддержкой у него - всё в порядке. Единственное серьезное “но” - это отсутствие поддержки RSS, и как раз исправлением этого недочета мы сейчас и займемся. Наш скрипт будет запускаться кроном с заданным интервалом, ссылки на .torrent файлы из RSS будут нежно извлекаться, записываться в файл, и передаваться RPC Transmission.

Его настройки:

Параметр Описание
USE_WGET Использовать wget (принимает значения 1
WGET_PATH Путь до расположения wget (строка)
USE_CURL Использовать curl (принимает значения 1
CURL_PATH Путь до расположения curl (строка)
USE_PROXY Использовать прокси (да/нет) (принимает значения 1
PROXY_SCHEME Схема прокси (строка, например http, https, socks и т.п.)
PROXY_ADDR Адрес прокси (строка)
PROXY_PORT Порт прокси (строка)
PROXY_USER Пользователь на прокси (строка)
PROXY_PASS Пароль пользователя на прокси (строка)
FEED_URLS_AND_DIRS Массив со ссылками на RSS ленты. Что очень важно - указывается URL первой ленты, а следующим элементом массива - директория, куда скачивать из URL торренты. И так далее
TRANSMISSION_REMOTE Путь до transmission-remote (строка)
TRANSMISSION_RPC_USER Пользователь transmission-remote (строка)
TRANSMISSION_RPC_PASS Пароль пользователя transmission-remote (строка)
TRANSMISSION_RPC_HOST Адрес transmission-remote (строка)
TRANSMISSION_RPC_PORT Порт transmission-remote (строка)
REMOVE_TRANSMISSION_COMPLETED_TASKS Удалять уже завершенные закачки из Transmission (принимает значения 1
HISTORY_FILE Путь до текстового файла для хранения ссылок, которые были переданы в transmission-remote (строка)
COLOR_OUTPUT Использовать цветную выдачу в STDOUT (принимает значения 1

Пример настройки FEED_URLS_AND_DIRS:

FEED_URLS_AND_DIRS=(\
  'http://link.to/rss/feed1.xml' '/path/to/dir1/' \
  'http://link.to/rss/feed2.xml' '/path/to/dir2/' \
  'http://link.to/rss/feed3.xml' '/path/to/dir3/' \
);

Установка

Переходим в нужную директорию и скачиваем исходник скрипта (потребуются wget и unzip):

$ wget -O src.zip https://goo.gl/TFfcgU; unzip src.zip; rm -f src.zip
$ mv ./6f*d2-master/* ./; rm -Rf ./6f*d2-master/
$ ls -l *.sh
-rw-r--r-- 1 kot nginx 10598 янв 22 10:21 get_torrents.sh

После чего открываем скрипт любимым редактором, и выполняем его настройку. Все настройки находятся в самом начале скрипта. Проверяем, делаем тестовые запуски. После того, как убедимся что всё работает как надо - добавляем запуск скрипта в крон:

$ crontab -e
# Добавляем примерно следующую строку:
  5     8-23   *     *    * /usr/bin/nice -n 15 /usr/bin/bash ~/get_torrents.sh

# -     -      -     -    - ----------------------------------------------------------------
# |     |      |     |    |
# |     |      |     |    +----- day of week (0 - 6) (Sunday=0)
# |     |      |     +------- month (1 - 12)
# |     |      +--------- day of month (1 - 31)
# |     +----------- hour (0 - 23)
# +------------- min (0 - 59)

Запускать через nice вовсе не обязательно, но как-то правильнее, что-ли. Наслаждайся, мудачина :)

+ Bonus

Просто как рекомендация, не более. Есть такое средство для организации и просмотра (в браузере или через DLNA) библиотеки твоих фильмов/сериалов как Plex. Очень рекомендую - вещь просто ахрененная. Написана на питоне, не требует установленного веб-сервера и СУБД. Просто ставишь - и пользуешься. Подробнее об этом почитай здесь, да и вообще - поищи в сети ссылки и описания. Ещё раз - это простая рекомендация, но проверенная лично.