見出し画像

EDCBでDiscord、LINE、Slackへ通知を送るアプリ

TV録画アプリのEDCBで、録画完了時にDiscord、LINE、Slackへ通知を送るアプリ「edcb_notifier」を作りました。以下からダウンロードできます。
最初に使い方、下の方にツールを作った目的などを書いてます。

https://github.com/marc0468/edcb_notifier/releases/latest/download/edcb_notifier.exe

アプリはRustで作っており、ソースコードはGithubで公開しています。

できること

このツールを使うとDiscord、LINE、Slackへのメッセージ送信が簡単に行えるようになります。ここでは説明を省きますが使用前に、

の設定がそれぞれ必要です。

対応しているOSはWindowsの64bitであればどのバージョンでも動くと思います。(開発、動作確認はWindows10で行っています。)

使い方

EpgTimerSrv.exeと同じフォルダに「edcb_notifier」というフォルダを作成してください。またedcb_notifier.exeをedcb_notifierの中に保存してください。

config.json

「config.json」をedcb_notifierの中に保存してください。

config.jsonの"is_disabled"は使用したいものをtrueにし、必要な情報を記載してください。例えばDiscordに投稿する場合以下のようなconfig.jsonになります。同時に複数の機能を使うこともできます。

{
    "discord": {
        "webhook_url": "https://discord.com/api/webhooks/111111111/xxxxxxxxxxxxxxxxxxxxxxxxx",
        "is_disabled": true
    },
    "line": {
        "token": "token",
        "is_disabled": false
    },
    "slack": {
        "webhook_url": "url",
        "is_disabled": false
    }
}

バッチファイル

PostRecEnd.batという名前で、以下のコードをEpgTimer.exeと同じ場所に保存してください。

rem _EDCBX_DIRECT_
edcb_notifier\edcb_notifier.exe edcb_notifier\config.json "録画終了しました: %title%"

たとえばDiscordに投稿した場合、以下のように通知されます。

応用編

EDCBは条件に応じてEpgTimerSrv.exeのあるフォルダに置かれたバッチファイルを実行するそうです。

  • PostAddReserve(.bat|.ps1|.lua) : 予約を追加したとき(無効を除く)

  • PostChgReserve(.bat|.ps1|.lua) : 予約を変更したとき(無効を除く)

  • PostRecStart(.bat|.ps1|.lua) : 録画を開始したとき

  • PostRecEnd(.bat|.ps1|.lua) : 録画を終了したとき

  • PostNotify(.bat|.ps1|.lua) : 更新通知が送られたとき

今回の説明では録画終了時のみ使用しましたが、「edcb_notifier」は条件を問わず使用できます。PostRecEnd.batと同じように書く条件のバッチファイルを作成していただければ使用できます。

詳しくはEDCBの説明を参照してください。


技術的な話

作った目的

EDCBの録画終了時にバッチファイルを実行する機能があります。その機能を使用しDiscord、LINE、Slackへ通知を送るバッチファイルを作りたかったのですが、Windowsでは日本語が文字化けしてしまうなど課題があります。
そのため、「httpリクエストをラップするアプリ」を作ればいいんじゃね?ということでRustの勉強がてら作成しました。

「httpリクエストをラップするアプリ」なのでEDCB以外でも使えるのですが、もともとの目的がEDCBの録画通知に使いたいだったのでこの名前にしています。

ソースコード

今回は配布したかったのでバイナリにできるRustを使って作成しました。開発、動作確認はWindows10で行っていますが、特に難しい技術を使っているわけでは無いので環境を選ばず動くのではないかと思っています。

ソースコードも公開してますが、Rust勉強中なのでいろいろツッコミどころあるかもしれません。
もし気づいたことあれば、Issueコメント頂けると助かります。


この記事が気に入ったらサポートをしてみませんか?