EPGStation の通知を Slack に送るコマンドラインツール
Releases から OS とアーキテクチャに合ったバイナリをダウンロード。
Linux / macOS の amd64 / arm64 / armv7 のみビルドしているのでそれ以外の環境では自分でビルドする。
メッセージの投稿に API Token を使うので準備する。 詳しくは Slack のドキュメントを参照。
作成した API Token は設定ファイルに書き込むので控えておく。
投稿するチャンネルをチャンネル ID で指定するので確認して控えておく。
epgstation-slack-config.example.yml
ファイルを epgstation-slack-config.yml
へコピーして Slack の API キーとチャンネル名を書き込む。
設定ファイルはデフォルトではバイナリと同じディレクトリに配置した epgstation-slack-config.yml
ファイルを利用し,オプションで指定された場合はオプションの値が優先される。
$ wget -O epgstation-slack-config.yml https://raw.githubusercontent.com/hiroxto/epgstation-slack-notification/master/epgstation-slack-config.example.yml
デフォルト以外の場所に配置した設定ファイルを利用する場合は --config
, -c
オプションを利用する。
$ ./epgstation-slack-notification --config /path/to/config.yml reserve-new-addition
EPGStation の config/config.yml
にコマンドをセットする。
# 録画予約の新規追加時に実行されるコマンド
reserveNewAddtionCommand: "/path/to/epgstation-slack-notification reserve-new-addition"
# 録画情報の更新時に実行されるコマンド
reserveUpdateCommand: "/path/to/epgstation-slack-notification reserve-update"
# 録画予約の削除時に実行されるコマンド
reservedeletedCommand: "/path/to/epgstation-slack-notification reserve-deleted"
# 録画準備の開始時に実行されるコマンド
recordingPreStartCommand: "/path/to/epgstation-slack-notification recording-pre-start"
# 録画準備の失敗時に実行されるコマンド
recordingPrepRecFailedCommand: "/path/to/epgstation-slack-notification recording-prep-rec-failed"
# 録画開始時に実行するコマンド
recordingStartCommand: "/path/to/epgstation-slack-notification recording-start"
# 録画終了時に実行するコマンド
recordingFinishCommand: "/path/to/epgstation-slack-notification recording-finish"
# 録画中のエラー発生時に実行するコマンド
recordingFailedCommand: "/path/to/epgstation-slack-notification recording-failed"
# エンコード終了時に実行するコマンド
encodingFinishCommand: "/path/to/epgstation-slack-notification encoding-finish"
EPGStation v1 を使っている場合はconfig/config.json
にコマンドをセットする。
{
"reservationAddedCommand": "/path/to/epgstation-slack-notification reservation-added",
"recordedPreStartCommand": "/path/to/epgstation-slack-notification recorded-pre-start",
"recordedPrepRecFailedCommand": "/path/to/epgstation-slack-notification recorded-prep-rec-failed",
"recordedStartCommand": "/path/to/epgstation-slack-notification recorded-start",
"recordedEndCommand": "/path/to/epgstation-slack-notification recorded-end",
"recordedFailedCommand": "/path/to/epgstation-slack-notification recorded-failed"
}
設定をした後, EPGStation を再起動する。
$ pm2 restart epgstation
通知設定の message
と template
は Go の text/template を使って任意の内容を出力できる。
テンプレートに渡されるデータの構造と中身は dump:detail
コマンドを使って確認可能。
渡されるデータはコマンド毎に分かれていて以下のように使い分けされる。
ReserveDetail
を使うコマンドreserve-new-addition
reserve-update
reserve-deleted
recording-pre-start
recording-prep-rec-failed
RecordingDetail
を使うコマンドrecording-start
recording-finish
recording-failed
EncodingDetail
を使うコマンドencoding-finish
データは基本的に EPGStation のドキュメント通りの環境変数の値が入る。
EPGStation から渡される環境変数に加えて一部独自の値も持っている。
StartAtTime
- 環境変数
STARTAT
をtime.Time
型に変換した値
- 環境変数
EndAtTime
- 環境変数
ENDAT
をtime.Time
型に変換した値
- 環境変数
DurationMin
- 環境変数
DURATION
を分単位のint64
型に変換した値
- 環境変数
設定内容を確認する時は dump:config
コマンドを利用する。
環境変数の内容を確認する時は dump:env
コマンドを利用する。