Web、サーバ、ソフトウェア、バグ・脆弱性 などの情報を何人かで集まって書いていく IT/Web情報系ブログ

【たぬえさ2】TwitchでコマンドやチャンネルポイントからOBS上に音声・画像・動画を表示させる無料ソフト

投稿日:   最終更新日:2021/09/26  投稿者:nk.

以前、たぬえさというソフトを公開しました。
一部の方々から気に入っていただけたのですが、改善点が複数あったので今回改善版後継ソフトのTanuEsa2を公開します。


v2.2.2公開しました。
各種設定は、settingsフォルダの中身を移動させると引き継げます。

Twitch認証後にチャットログが表示されない場合、Twitch認証を再度実行してみてください。

v2.3公開しました。
各種設定は、settingsフォルダの中身を移動させると引き継げます。

“TanuEsa2” をダウンロード TanuEsa2.3.withWV2.zip – 391 回のダウンロード – 2 MB

↓以前にWebView2のランタイムをインストールしたことがある人は、TanuEsa2本体のみのZIPをどうぞ。↓

“TanuEsa2 no WV2 installer” をダウンロード TanuEsa2.3.withoutWV2.zip – 97 回のダウンロード – 870 KB

このソフトの特徴

Triggerfyreとほぼ同等の機能を提供しますが、以下の点で異なります。

登録不要

当ソフトはDiscordサーバーに参加しなくても利用できます。

ファイルアップロード必要なし

いちいちファイルをアップロードする必要がなく、サイズ制限や個数制限もありません。
好きなだけメディアを追加できます。サービス終了する心配もありませんが、ソフトウェアアップデートは手動になります。

OBSの画面上でプレビューが簡単

チャンネルポイントの引き換え等を行わずとも、このソフトからOBS上でプレビューできるので微調整が楽です。

チャンネルポイント報酬リストを自動取得

チャンネルポイント報酬の一覧を自動で取得できるので入力ミスの心配がありません。

チャット発言者一覧保存(おまけ機能)

モニタリング時にTwitchのチャットで発言したユーザの一覧を保存できます。

チャットモニタリング中のサブスクした人の一覧を保存(おまけ機能)

v2.1から、モニタリング中のサブスクやレイドの一覧を保存できるようになりました。
ただし、TwitchAPIの仕様上、フォローした人は取得できません。

チャンネルポイント引き換え回数の保存(おまけ機能)

モニタリング中に誰が何を何回引き換えたかを保存できます。
人気の報酬が数字でわかります。

日本語対応

日本人が作者です。

TriggerfyreにあるけどTanuEsa2にない機能

いまのところ以下の機能を追加する予定はありません。

コマンドやチャンネルポイントの権限制限

特定の権限を持つ人のみしか再生できないようにすることはできません。

コンボモードなし

コマンドやチャンネルポイントが複数回引き換えられたときにのみ発動させるといった機能はありません。

ランダムで選出

複数のメディアからランダムで一つを選ぶ機能はなし。
v2.1で実装しました。

obs-websocketと連携してOBSのシーン等を操作

現時点ではobs-websocketを併用してOBS操作はできない。
今後、やる気が起きたときに仕様を確認してできそうなら追加する可能性あり。
SLOBS利用者が多いのですが、必要ライブラリがSLOBSに対応していないため、この機能はおそらく実装しません。

導入方法

保存と解凍

上記リンクから保存したのちに解凍すると、以下のファイルが出てきます。

  • MicrosoftEdgeWebview2Setup.exe
  • readme.txt
  • TanuEsa2.zp

ランタイム導入

過去にWebView2のランタイムをインストールしていない人は、同梱されているMicrosoftEdgeWebview2Setup.exeを実行して、WebView2ランタイムをインストールしてください。よくわからなければとりあえず実行してみてください。

.NET Framework 4.7.2が必要です。もしWindows Update等を一時停止しているなどで同ランタイムが未導入の場合、インストールしてください。

起動

ランタイムの導入が終わったら、TanuEsa2.zipを解凍し、TanuEsa2.exeを起動してください。

Twitch認証

初回起動時はTwitchアカウントと紐づけされていないため、認証を行う必要があります。
「設定」→「Twitchを認証する」から認証を行います。

「TwitchのID」に配信で使うTwitchのIDを入力して、「認証」ボタンを押してください。


ログイン後、自動でOAuthトークンが設定されるようになっていますが、一部のセキュリティソフトを使っていると自動で設定されない場合があります。
その場合は、「Twitch OAuth Token Generator」の「Your OAuth Token」に表示されている文字列を、画面下部の「OAuthトークン」にコピペして、「トークンを設定する」ボタンを押してください。

認証後は、メイン画面の左下が青文字になります。

チャンネルポイント報酬リスト取得

「設定」→「報酬リスト取得」から、Twitchで設定済みのチャンネルポイント報酬の一覧を自動で取得します。
Twitchアフィリエイト等に参加しておらず、チャンネルポイント機能が利用不能な人は飛ばしてください。

イベント設定

「設定」→「チャットイベント設定」から、イベントの設定画面に移ります。

メディアの追加

例として「test」というチャンネルポイント報酬があるとします。
「<追加テキストなし>」を右クリックし、「新規メディア」をクリックします。

「メディア」をクリックすると画面右側が有効化され、編集できるようになります。
「ファイル選択」ボタンから任意のメディアファイル(mpeg, wabm, mp4, mp3, wav, ogg, jpg, jpeg, png, gif)を指定し、「この設定を保存」ボタンを押してください。押さないと反映されません。

「サイズと音量」の項目に関してですが、動画ファイルに対しては表示サイズのみが反映され、音量は反映されませんので注意してください。
また、表示時間はミリ秒(千分の一秒)単位ですが、クールタイムは秒単位です。

チャットコマンドの追加

チャットコマンド(Twitchのチャットは「!」から始まる発言がコマンドとして認識される)をトリガーとする場合、「チャットコマンド」を右クリックして「チャットコマンド追加」を押してください。コマンド入力後は前述のようにメディアを追加してください。

視聴者にテキストの入力を要求

Twitchでは50個のチャンネルポイント報酬しか登録できないとありますが、視聴者にテキストの入力を要求することで1つの報酬から複数のトリガーを分岐させることができます。
たとえば先ほどの「test」に「たぬき」と文字を入力させたときの条件分岐を作成したい場合、「test」を右クリックして「新規追加テキスト」に「たぬき」と入力します。

すると、「<追加テキストなし>」のしたに「たぬき」が追加されました。

メディアの追加は、追加テキストなしのときと同様に行います。
コマンドに対しても同様に追加テキストを設定することができます。

抽選箱機能

v2.1から追加しました。
コマンドやチャンネルポイント引き換え時に、ランダムでメディアを抽選する機能です。
以下のように「抽選箱の名前」を設定すると、同じ抽選箱の名前を持つメディアの中からランダムでメディアが選ばれるようになります。
抽選箱の名前を設定しない、あるいは重みづけを0にすれば常にそのメディアは表示されます。

以下のように「抽選タグの名前」を設定すると、その抽選箱から選ばれる際に、同じタグを持つものはセットで選ばれるようになります。
この場合ですと、TAG1に設定されている2つは、こちらが選ばれた場合どちらも表示されることになります。

抽選の重みづけ

抽選の重みづけの値を大きくするほど、そのメディアは選ばれやすくなります。
タグが同じものは、すべてのメディアの重みづけの値が合計されます。
たとえば前述の画像ですと、TAG1の2つの重みづけの合計は200で、TAG2の重みづけは100なので、TAG1のほうが2倍選ばれやすくなっています。

抽選とクールタイムの優先順位

抽選が行われたあとに、そのメディアのクールタイムの判定が行われます。

OBSでの設定

ソースの追加で「ブラウザ」を選びます。

解凍したフォルダのなかにある「forOBS.html」をソースとして追加します。

実際に反映されるか、TanuEsa2からプレビューします。
チャットイベント設定画面から、適当な報酬の「<追加テキストなし>」を右クリし、「OBS上でプレビュー」を実行します。

以下のように表示されればOBSで連携できています。

配信時

モニタリング開始

たぬえさ2のメニューから「モニタリング」→「開始」で、チャットログを取得するようにしてください。
v2.2.2より、認証済の場合は起動時に自動でモニタリングが開始されます。

チャットユーザ一覧を保存

おまけ機能として、モニタリング中にチャットで発言した人の一覧をテキストに保存できます。

バージョンアップ情報

v. 2.3 (2021/09/26)

  • 接続に失敗した際、Twitch認証を再度行うことを促すダイアログを出すようにした。

v. 2.2.2 (2021/07/29)

  • 認証済みの場合、起動時に自動でモニタリング開始するようにした。
  • プログラム終了時等に、チャットユーザ一覧等の保存を忘れていないか確認するようにした。
  • ギフトされたサブスクは[gifted]とつくようにした。ただし、ランダムギフトの場合はtwitchの仕様上取得できない。
  • チャンネルポイント報酬の引き換え回数を保存できるようにした。
  • バージョン情報ダイアログを見れるようにした。

v. 2.1 (2021/06/22)

  • メディアが1つしか再生されないバグを修正した。
  • 抽選機能を追加した。

- C#, Twitch

Comment

  1. Pちゃん より:

    はじまして。
    Triggerfyreからの乗り換え先を探していたところ、こちらのソフトにたどり着きました。
    どこに相談したらいいか分からなかったのでこちらに書かせて頂きます。

    圧縮ファイル同梱のランタイムをインストール後にたぬえさ2アプリを起動し、
    報酬リスト取得、WebSocketのポート番号の設定をOBS側にも行い、OBSのソースで「forOBS.html」を追加、
    チャットイベント設定のチャンネルポイント報酬から追加テキスト、新規メディアと選択して音声(WAV形式)と画像(gif形式)を追加、保存したのですが、
    配信をしていない状態で「OBS上でプレビュー」が動作せず、OBS上に何も表示されません。
    たぬえさ2アプリでの音声プレビューは可能です。

    配信中でないと確認出来ないのでしょうか?
    念の為、PCスペックも記載します。

    CPU:Intel(R) Core(TM) i9-10900K 3.70GHz
    メモリ:32.0 GB
    OS:Windows10

    • nk. より:

      ご利用ありがとうございます。
      返信が遅れましてすみません。

      配信中でなくても、OBS上でプレビューは可能なはずです。
      マシンスペックも十分かと思います。
      考えられる点として、以下をご確認ください。

      1. WebSocketの通信が上手く行えていない
      → 設定されているポート番号がすでにほかのアプリケーションで使われている可能性があります。
      ポート番号を変えてみてください。

      2. 表示設定
      → おそらく問題ないかとは思いますが、表示サイズが0になっていないか、表示時間が0になっていないか等をご確認ください。

      3. OBS上の設定
      → forOBS.htmlが表示されているか(選択したときに赤い枠が出るか)ご確認ください。ソースへの追加は、ローカルファイルを用いる点を除いて、triggerfyreと同様です。表示中のシーンにこのソースが含まれていない場合、画像や音声等は出力されません。

      4. 保存ボタン
      → プレビューを実施する前に、画像等の設定が保存されているかご確認ください。

      以上、お手数ですがご確認いただければと思います。

      • Pちゃん より:

        OBSWEBSocketを最新の物に更新したらプレビュー出来ました!
        ありがとうございます!

        • nk. より:

          OBSWEBSocketも関係してるんですね。
          ともあれ、うまく作動したようで安心しました。
          今後ともたぬえさをよろしくお願いいたします。

          • Pちゃん より:

            現在、たぬえさ2を使用して楽しくゲーム配信させていただいてます。
            設定もわかりやすいし、欲しかった機能もたくさん搭載されていて本当に助かっています!
            ありがとうございます!
            ただ、チャンネルポイント報酬をTwitchの配信マネージャーページなどで更新したあと、
            たぬえさ2の報酬リスト取得を選択するとTwitch側で更新する前の設定がたぬえさ2側ではそのまま残ったままになり、
            チャンネル報酬リストからは削除出来ない状態です。
            プログラムの知識が無いなりに調べたところ「twitchrewards.xml」にチャンネル報酬のリストやメディア設定などが保存されているところまではわかりました。
            このファイルを何らかのテキストエディターなどで開いて不要な箇所と思われる箇所を削除しても問題ないのでしょうか?
            もしくはこのxmlファイルを開かずに、たぬえさ2の報酬リストから不要になったチャンネルポイント報酬を削除する方法などがあれば教えて頂きたいです。
            よろしくお願いします。

          • nk. より:

            ご利用ありがとうございます。
            いまのところ、チャンネル報酬リストから削除できないのは仕様です。
            というのも、Twitch側で非表示にしているだけのものを復活させたりすることも多々あると思うので、残すようにしています。
            (非表示にしただけのものと、削除したものの区別がプログラムからは行えません)

            手動でtwitchrewards.xmlを編集することはもちろん可能です。
            ただ、その前にバックアップを取っておいて、いつでも戻せるようにしておいてください。
            このファイルはXMLという形式で書かれているので、XMLの編集に特化したツール(「XMLエディター」等で検索すると出てくると思います)を利用してもよいでしょう。

  2. haruno より:

    はじめまして。
    いつも配信で”たぬえさ2″を使用させていただいております。
    ありがとうございます。
    抽選機能について、動画を数種類登録(38種)しているのですが、引き換えた際にたまにメディアが再生されない場合があります。
    メディアファイルに破損等はみられず、OBSでプレビューした際にも再生されないということはありませんでした。
    原因おわかりになりますでしょうか?

    使用ソフトウェア:OBS 27.0.1/Win10.64bit
    使用メディア:全て10秒のMP4ファイル

    • nk. より:

      ご利用ありがとうございます。
      たまに再生されないということですが、該当する各メディアにクールタイムが設定されていないかご確認ください。
      (デフォルトでは連打荒らし防止のためにクールタイムが設定されるようにしてあります)

      また、TwitchやOBSとの連携の仕様上、ごくまれに接続が切断されることがあります。
      切断が検出されると再接続を行いますが、そのタイミングでの引き換えになると反映されないことがあります。

      • haruno より:

        nk.様
        ありがとうございます!
        該当各メディアにクールタイムが設定されていたままでした。
        その後、再生されないということはありませんでした。
        とても早くお返事いただきありがとうございました。
        引き続きよろしくお願いいたします。

        • nk. より:

          ちゃんと再生できてよかったです。
          設定を一つずつ入力するのが面倒な場合、
          左側に表示されているメディアを右クリック→コピーからの張り付け→ファイルを選びなおす→保存
          をすると楽かもしれません。(よくわからなければ見なかったことにしてください)

          今後とも、当ソフトをよろしくお願いいたします。

  3. のっぽ より:

    要望です。
    OBSの表示と併せて、ローカルのEXEファイルを引数付きで呼び出す機能をつけて欲しいです。

    背景は、以下の通りです。
    私はゲームの配信をしています。
    チャンネルポイントで「腕立て伏せ」や「腹筋」を交換してもらって、ゲームの合間にまとまった数を実行する、ということをしています。
    ゲームをしているため、Triggerfyreでポイントが交換されたことは気づけるものの、何を何回という集計が難しいのです。
    現状、「何を何回」については、自作のプログラムで集計した結果を画像にして配信画面に表示できるようにしました。しかし、ゲームをしている最中にそれを操作するのは困難で、自動化の方法がないか探していました。
    WebサービスからローカルのEXEを実行するなんてセキュリティの問題があるからできないだろうと思いつつ、自分で集計まで含めたWebサービスを作ることも難しく、だったらもともとローカルEXEのソフトがないかと探したところ、「たぬえさ2」を見つけてしまったのです。
    自分にはTwitchのチャンネルポイント交換を取得するプログラムを作成する実力がないのですが、「たぬえさ2」に上記要望機能が実装されれば全て上手くいくため、要望させていただく次第です。

    • nk. より:

      ご利用ありがとうございます。

      実行ファイル呼び出しは実装を検討したこともありましたが、セキュリティ的に不安だったのでそのままなかったことにしていました。
      需要があるようなので、次のバージョンアップで実装したいと思います。

      • のっぽ より:

        ご回答ありがとうございます。楽しみです。
        EXEファイルを呼び出せるとその先はなんでもできるため、危険ですが、無限の可能性が広がります。しかし、セキュリティの確保は確かに大切ですね。
        もし、やはり実装しない方が良さそうだというご判断になるのであれば、ログの常時ファイル出力機能をご検討ください。こちらでは、ログファイルを監視し、チャンネルポイントが交換されたログが出力された場合に任意の処理を行うプログラムを作成することで、希望を満たすことができると思います。

        • nk. より:

          > ログファイルを監視し
          たぬえさ2とOBSとの間ではWebSocketで通信を行っています。初期設定ではlocalhost:56542です。たぬえさ起動中、ローカルからなら制限なく接続できるので、ここから情報を取得するというのもありかもしれません。というかこれで割と楽に解決しそうな気がします。

          WSで通信されるのはメディア情報の配列をJSONであらわしたものです。
          配列の各要素のtargetFile要素に、表示するメディアのファイルパスが格納されていますので、これで条件分岐するとよいと思います。
          「OBS上でプレビュー」機能でもこの通信を行っていますので、実験もしやすいのではないでしょうか。
          現役の言語ならWebSocketもJSONもライブラリが存在していると思います。

          とはいえ、これだと「誰が引き換えたか」までは取得できません。そこまで必要なければこれで十分だと思います。
          セキュリティ的に懸念しているのは実はこのあたりで、引き換え者の名前やら追加テキストもつけて別実行ファイルを呼び出したいけどそういった任意のデータを流し込めるのってexploitがこえーよなー…という。
          なのでできれば実行ファイル呼び出しは実装せずに現状のままでありたいという気持ちはあります。
          ただ、お使いの言語がCとかで、WebSocketやらJSONやらなんてやってられっかよ!とかって場合はやっぱり実装しますのでコメントください(笑)

          • のっぽ より:

            解説ありがとうございます。
            今考えている用途では「誰が引き換えたか」は不要ですので、要件を満たせそうです。
            使っている言語はC#です。JSONは経験があるのですが、WebSocketは未経験ですので、いただいたヒントを元に、これから調べてみます。
            多少時間がかかると思いますので、要望は保留にしてください。
            仕事での強制か、趣味で作りたいものがなければ、なかなか勉強が捗りません。良い題材を与えてくださり、ありがとうございます。できた、できない、にかかわらず、結果は改めてご報告いたします。

          • nk. より:

            現行版でなんとかなりそうでよかったです。

            たぬえさもC#製なので、自分が使っているライブラリを紹介します。
            WS: WebSocketSharp-netstandard by sta v1.0.1 (NuGetから簡単にインストールできます。「WebSocketSharp」で調べると色々サンプルコードが日本語で出てきます。いろいろ調べましたがWSはこれが一番使い勝手よさそうです。)
            JSON: System.Runtime.Serialization.Json (Windows標準のやつです。)

            利用者の方にご負担をかける形になって申し訳ありませんが、よろしくお願いいたします。

          • のっぽ より:

            いただいた情報で希望通りに動くソフトを作ることができました。本当に感謝しています。自らの知識不足から、ろくに調べることもできずに安直な要望をしてしまい、大変失礼いたしました。要望は取り下げさせていただきます。ありがとうございました。

            以下、簡単ですが、結果をご報告いたします。
            「WebSocketSharp-netstandard by sta v1.0.1」の助言を見る前は、「System.Net.WebSockets」で作ってみていました。検索で見つけたサンプルのコードを使って作ってみて、動くには動いたのですが、コードが全く理解できず、どうしようかと悩んでいたところでした。「WebSocketSharp-netstandard by sta v1.0.1」を使うとコードが超シンプルになり、とても助かりましたので、このまま採用させていただきます。
            JSONについては、以前使ったことがあった「Newtonsoft.Json」を使いました。こちらは過去の自分が書いたコードを使いまわし、さほど難しくなく「targetFile」を取り出すことができました。
            あとは、「targetFile」をキーにして、以前から考えていたそれぞれのポイント報酬に対する処理を書いただけです。これで、パソコン内のEXEででやりたいことが大体なんでもできるという、素晴らしいチャンネル報酬システムができました。

            今回は、素晴らしいソフト「たぬえさ2」を公開してくださった上に、こちらの稚拙な要望に対して、有益な助言を頂戴しました。これにより、おそらく最短納期で要件を満たすことができました。本当にありがとうございました。

          • nk. より:

            無事完成されたようでよかったです。
            これからもたぬえさをよろしくお願いいたします。

  4. ばろ より:

    はじめまして。
    いつも配信で”たぬえさ2″を使用させていただいており、
    演出面で大いに貢献頂いております。

    すいません、1つご相談なのですが、もともとAAA(例)と登録していたイベントを
    名前を変えたくてtwitchのクリエイターダッシュボードより
    AABと変更しました。たぬえさ2でもイベントを以降し、
    無事にAABで動作するようになりましたが、
    イベントの取得を行ってもチャットイベント設定に
    AAAが残ったままとなってしまいます。
    (チャットイベント取得をした時の数とチャットイベント設定済の数に差異が出ている状態)
    もし解決方法等あれば教えて頂けないでしょうか。

    • nk. より:

      ご利用ありがとうございます。

      現時点では、イベント名の変更・削除には対応していません。
      (ツイッチ側で消したあとに復活させたときに設定が消えてるほうがだるいと思っていたので)
      ただ、設定を消す機能が予想以上に求められているようなので、次のバージョンアップで実装します。

      もし、XML編集ツール(テキストエディタでも可)をお持ちでしたら、./settings/twitchrewards.xmlを編集することで設定を直接いじることができますが、ミスしたときに備えてバックアップを作成していただいてからの編集をお勧めします。

のっぽ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事