Настройка оповещений об обновлениях

При обновлении торрентов emupdate умеет посылать оповещения. Для включения этой возможности вам нужно настроить соответствующие плагины в секции confetti. Ниже приведен пример для уведомлений по почте (через внешний почтовый сервер), а также через Pushover:

confetti:
    email:
        to: yarr@example.com
        server: smtp.yandex.ru
        ssl: true
        user: emonodaserver
        passwd: secretword
        sender: emonodaserver@yandex.ru

    pushover:
        api_key: xxxxxxxxxxxxxxxxxxxx
        user_key: yyyyyyyyyyyyyyyyyyyy

Плагины отправляют оповещения в разных ситуациях и при различных событиях, происходящих с торрентами. Самый простой вариант - торрент обновился, добавилась новая серия вашего сериала, и emupdate поставил ее на закачку. Это событие называется affected, и кроме него существуют еще несколько типов, относящихся, в основном, к обработке ошибок при обновлении торрентов.

Полный список приведен в таблице ниже:

Статус Описание
invalid Торрент с некорректным форматом данных (битые файлы)
not_in_client Торрент не отслеживается клиентом
unknown Неизвестный трекер, который не поддерживается Emonoda
affected Торрент обновился
tracker_error Ошибка обновления торрента из-за некорректного ответа трекера. Вероятно, раздача могла быть удалена и ее стоит заменить на другую
unhandled_error Непредвиденная ошибка при обработке торрента. Рекомендуется просмотреть результат работы emupdate, чтобы узнать, какое произошло исключение

То, какие оповещения должны отправляться соответствующим плагином, настраивается параметром confetti/<plugin>/statuses (при его наличии). Например, если значение этого параметра равно [affected, tracker_error], то оповещения будут отправляться при изменениях торрента и при ошибках его обновления (скажем, если вдруг раздача была удалена с трекера).

Следует отметить, что emupdate не хранит истории сообщений, и поэтому, если при указанной выше настройке у вас появится раздача, вызывающая ошибку при обработке, вы будете получать оповещения каждый раз при запуске emupdate, пока не удалите или не замените ее.

Advice

Такое поведение может быть неприемлимым, если вы поставили emupdate на исполниение в кроне каждый час. Вряд ли вам захочется получать спам-сообщения в Telegram о том, что какая-то раздача удалилась каждый час, пока вы не разберетесь с этой проблемой. Однако информация о том, что с раздачей что-то не так, может быть полезной, и в таком случае можно сделать следующее:

  • Настроить несколько видов оповещений. Например, в для Telegram вы можете сделать настройку confetti/telegram/statuses=[affected], а для электропочты - confetti/email/statuses=[invalid, not_in_client, tracker_error, unhandled_error, affected]. Тогда Telegram будут падать только оповещения об обновлениях, а в почту - все возникающие события. Зафильтровав почту, вы можете отправить эти письма в отдельную папку и просмотреть потом в удобное время.

  • Перенаправить результат работы emupdate в лог.

Warning

По умолчанию все плагины, кроме atom, настроены на оповещение при любых событиях, кроме unknown. Плагин atom настроек статусов не имеет и обновляет ленту только при наличии событий типа affected.

Большинство плагинов имеют возможность кастомизации шаблонов форматирования оповещений. Используя синтаксис Mako, вы можете настроить шаблон по своему вкусу, взяв за основу любой из стандартных. Создав свой шаблон, сохраните его где-нибудь в файле и пропишите в конфиге. Например так:

confetti:
    email:
        template=/root/emonoda-email.mako

Виды оповещений

Почта

Включается плагином email. По умолчанию плагин настроен на отправку почты через локальный SMTP-релей без SSL на root@localhost. Другие параметры со значениями по умолчанию перечислены ниже:

  • confetti/email/subject='{source} report: you have {affected} new torrents ^_^'

    • Тема письма. В фигурных скобках указываются подставляемые параметры: source обозначает источник данных (сейчас это всегда emupdate), а affected показывает количество обновленных торрентов.
  • confetti/email/template=""

    • Путь к Mako-шаблону для форматирования письма. Если не указан, используется встроенный.
  • confetti/email/statuses=[invalid, not_in_client, tracker_error, unhandled_error, affected]

    • Типы сообщений о результатах обновления, которые необходимо отправить (в порядке отправки, кроме affected, который всегда идет первым).
  • confetti/email/to=[root@localhost]

    • Адрес получателя (один или список) в To.
  • confetti/email/cc=[]

    • Кому отправить копию письма в CC.
  • confetti/email/html=true

    • Выбор вида письма. По умолчанию оно форматируется в HTML, иначе отправится в виде плейнтекста.
  • confetti/email/sender=root@localhost

    • Отправитель для поля From.
  • confetti/email/server=localhost

    • Адрес SMTP-сервера.
  • confetti/email/port=0

    • Порт подключения серверу. Значение по умолчанию определяется автоматически в зависимости от параметра confetti/email/ssl. Используется 25 порт для незащищенного соединения и 465 для SSL.
  • confetti/email/ssl=false

    • Использовать ли SSL для SMTP. Так же влияет на номер порта по умолчанию.
  • confetti/email/user=""

    • Имя пользователя для авторизации на сервере.
  • confetti/email/passwd=""

    • Пароль для авторизации на сервере.
  • confetti/email/timeout=10.0

    • Сетевой таймаут в секундах.
  • confetti/email/retries=5

    • Количество попыток повторной отправки емейлов в случае ошибки сети или сервера.
  • confetti/email/retries_sleep=1.0

    • Пауза в секундах между попытками отправки емейлов.

Уведомления в Telegram

Включаются плагином telegram. Для отправки уведомлений используется API ботов. Чтобы отправлять себе на телеграм сообщение об обновленных раздачах, вам нужно завести своего собственного бота, получить для него токен и идентификатор чата с пользователем, которому нужно послать оповещение. Это несложно и делается всего в несколько простых шагов:

  1. Добавьте в телеграм бота BotFather и поздоровайтесь с ним командой /start.

  2. Скажите ему /newbot, а затем в ответ на вопросы введите желаемое символическое имя бота (например, MySuperServer, так он будет показываться в контактах) и его юзернейм (например, my_super_server_bot). Юзернейм должен обязательно заканчиваться на суффикс _bot или Bot.

  3. Если имена не заняты, BotFather выдаст вам токен для вашего бота, похожий на 123456789:ABCDE_Abc1Def234-sdf34HJKhjg33434GH. В противном случае придумайте другое имя и повторите предыдущий шаг.

  4. Полученный токен пропишите в конфигурационный файл в секцию confetti следующим образом:

    confetti:
        telegram:
            token: 123456789:ABCDE_Abc1Def234-sdf34HJKhjg33434GH
    
  5. Добавьте в контакт-лист своего телеграма вашего нового бота и поздоровайтесь с ним командой /start.

  6. Запустите команду emconfetti-tghi. Она просмотрит список десяти последних сообщений, адресованных боту, и выведет имена пользователей, обращавшихся к нему, вместе с юзернеймами телеграм-пользователей (если они заданы). Команда выведет что-то типа этого:

    $ emconfetti-tghi
    # I: Confetti telegram is ready
    - Chat with user 'cooluser': 12345678
    
  7. Добавьте полученный идентификатор чата (12345678) в конфиг. Можно добавлять несколько чатов списком, чтобы уведимить сразу несколько пользователей; они все должны поздороваться с вашим ботом, чтобы вы могли узнать их идентификаторы чатов:

    confetti:
        telegram:
            token: 123456789:ABCDE_Abc1Def234-sdf34HJKhjg33434GH
            chats: [12345678]
    
  8. Все готово! Теперь попробуйте отправить себе тестовое оповещение с помощью emconfetti-demo -o telegram и радуйтесь жизни :)

Плагин принимает следующие параметры:

  • confetti/telegram/token=CHANGE_ME

    • Токен бота, полученный от BotFather.
  • confetti/telegram/chats=[]

    • Список идентификаторов чатов, в которые нужно отсылать оповещения.
  • confetti/telegram/template=""

    • Путь к mako-шаблону для форматирования сообщений. Если не указан, используется встроенный.
  • confetti/telegram/statuses=[invalid, not_in_client, tracker_error, unhandled_error, affected]

    • Типы сообщений о результатах обновления, которые необходимо отправить (в порядке отправки).
  • confetti/telegram/proxy_url=""

    • Прокси до сервиса. Поддерживаются HTTP-прокси и SOCKS4/5. Этот параметр можно использовать так: trackers/rutracker.org/proxy_url=socks5://localhost:5000 (вместе с SOCKS-проксированием по SSH). Формат - scheme://username:passwd@host:port. Вместо scheme нужно указать socks4, socks5 или http.
  • confetti/telegram/timeout=10.0

    • Сетевой таймаут в секундах.
  • confetti/telegram/retries=5

    • Количество попыток повторной отправки оповещений в случае ошибки сети или сервера.
  • confetti/telegram/retries_sleep=1.0

    • Пауза в секундах между попытками отправки оповещений.
  • confetti/telegram/user_agent=Mozilla/5.0

    • Плагин прикидываются браузером при работе с API.

Push-нотификации на iPhone/Android через Pushover

Включаются плагином pushover. Для отправки уведомлений используется одноименный сервис. Вам нужно установить на телефон или планшет специальное приложение (iPhone, Android), зарегистрировать Emonoda (по терминологии пушовера "приложение") тут, а затем получить ключ для него и для юзера (на главной странице). По этим ключам отправляются уведомления на ваше устройство.

  • confetti/pushover/api_key=CHANGE_ME

    • Ключ приложения.
  • confetti/pushover/user_key=CHANGE_ME

    • Ключ пользователя.
  • confetti/pushover/devices=[]

    • Список устройств пользователя, на которые нужно отправить оповещение. Пустой список - все устройства.
  • confetti/pushover/title=Emonoda ({source})

    • Заголовок оповещения.
  • confetti/pushover/template=""

    • Путь к mako-шаблону для форматирования сообщений. Если не указан, используется встроенный.
  • confetti/pushover/statuses=[invalid, not_in_client, tracker_error, unhandled_error, affected]

    • Типы сообщений о результатах обновления, которые необходимо отправить (в порядке отправки).
  • confetti/pushover/proxy_url=""

    • Прокси до сервиса. Поддерживаются HTTP-прокси и SOCKS4/5. Этот параметр можно использовать так: trackers/rutracker.org/proxy_url=socks5://localhost:5000 (вместе с SOCKS-проксированием по SSH). Формат - scheme://username:passwd@host:port. Вместо scheme нужно указать socks4, socks5 или http.
  • confetti/pushover/timeout=10.0

    • Сетевой таймаут в секундах.
  • confetti/pushover/retries=5

    • Количество попыток повторной отправки оповещений в случае ошибки сети или сервера.
  • confetti/pushover/retries_sleep=1.0

    • Пауза в секундах между попытками отправки оповещений.
  • trackers/rutracker.org/user_agent=Mozilla/5.0

    • Плагин прикидываются браузером при работе с API.

Лента Atom для использования на сервере

Для полноценного использования этой опции необходимо, чтобы на компьютере, с которого запускается Emonoda был запущен любой веб-сервер. Подойдёт, например, встроенный в Python простейший сервер:

$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Для более полноценной работы рекомендуется использовать полноценный сервер (nginx, lighttpd и т.д.). Его необходимо настроить так, чтобы он отдавал файл с лентой по адресу, который вы указываете в параметре confetti/atom/url. По умолчанию плагин хранит максимум 20 последних обновлений, на основе которых создаётся файл ленты. После создания файла ленты плагин назначит ему права 664, чтобы в дальнейшем иметь возможность редактировать этот файл.

  • confetti/atom/history_path=emonoda_history.yaml

    • Имя файла с полным путём до файла, в котором хранится история обновлений.
  • confetti/atom/path=atom.xml

    • Путь до места хранения ленты.
  • confetti/atom/url=http://localhost

    • Полная ссылка на файл ленты в соответствии со ссылкой, по которой она будет доступна с сервера.
  • confetti/atom/user=""

    • Пользователь, во владение которого плагин передаст ленту.
  • confetti/atom/group=""

    • Группа пользователей, во владение которой плагин передаст ленту. Если пользователь, от имени которого запущена Emonoda, не состоит в этой группе, то плагин выдаст ошибку.
  • confetti/atom/template=""

    • Шаблон для форматирования ленты. Если не указан, используется встроенный.
  • confetti/atom/html=true

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

Тестирование оповещений

После настройки всех оповещений вы можете протестировать их с помощью команды emconfetti-demo. Она отсылает демо-сообщения всеми способами, указанными в секции confetti.