Настройка оповещений об обновлениях
При обновлении торрентов 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 ботов. Чтобы отправлять себе на телеграм сообщение об обновленных раздачах, вам нужно завести своего собственного бота, получить для него токен и идентификатор чата с пользователем, которому нужно послать оповещение. Это несложно и делается всего в несколько простых шагов:
-
Добавьте в телеграм бота BotFather и поздоровайтесь с ним командой
/start
. -
Скажите ему
/newbot
, а затем в ответ на вопросы введите желаемое символическое имя бота (например, MySuperServer, так он будет показываться в контактах) и его юзернейм (например,my_super_server_bot
). Юзернейм должен обязательно заканчиваться на суффикс_bot
илиBot
. -
Если имена не заняты, BotFather выдаст вам токен для вашего бота, похожий на
123456789:ABCDE_Abc1Def234-sdf34HJKhjg33434GH
. В противном случае придумайте другое имя и повторите предыдущий шаг. -
Полученный токен пропишите в конфигурационный файл в секцию
confetti
следующим образом:confetti: telegram: token: 123456789:ABCDE_Abc1Def234-sdf34HJKhjg33434GH
-
Добавьте в контакт-лист своего телеграма вашего нового бота и поздоровайтесь с ним командой
/start
. -
Запустите команду
emconfetti-tghi
. Она просмотрит список десяти последних сообщений, адресованных боту, и выведет имена пользователей, обращавшихся к нему, вместе с юзернеймами телеграм-пользователей (если они заданы). Команда выведет что-то типа этого:$ emconfetti-tghi # I: Confetti telegram is ready - Chat with user 'cooluser': 12345678
-
Добавьте полученный идентификатор чата (
12345678
) в конфиг. Можно добавлять несколько чатов списком, чтобы уведимить сразу несколько пользователей; они все должны поздороваться с вашим ботом, чтобы вы могли узнать их идентификаторы чатов:confetti: telegram: token: 123456789:ABCDE_Abc1Def234-sdf34HJKhjg33434GH chats: [12345678]
-
Все готово! Теперь попробуйте отправить себе тестовое оповещение с помощью
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
.
- Прокси до сервиса. Поддерживаются HTTP-прокси и SOCKS4/5. Этот параметр можно использовать так:
-
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
.
- Прокси до сервиса. Поддерживаются HTTP-прокси и SOCKS4/5. Этот параметр можно использовать так:
-
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
.