GMの抵抗ワショーイ

GMの抵抗ワショーイ

2021.11.01
XML
カテゴリ: youtube
youtubeの通知関連の情報は多数ヒットしますが、ツイキャスについては公式の通知機能しか情報が見当たらず、自分で作りたいなと思って実装しました。

ちなみに去年、youtube版の通知を作りたい!ということで 【python】メンバー限定の通知が来たときにアラートを出す方法【Gmail API】 をまとめました。
今回はそのツイキャス版です。




公式の通知システム

サポートしている人からの通知やお知らせを受けとりたい/受け取りたくない
にある方法を試してみました。


1. 画面右上の【サポートリスト】をクリックします
2. 画面右上部の【通知オン】/【通知オフ】から各チェックを切り替えてください


…とあるのですが。
実際ツイキャス始まっても通知来ないし、来てもWindowsの通知なんだろうな…と思ってますね。(Windowsの通知、関係ない通知が多数飛んでくる上にカスタマイズ性が低いのであまり使いたくない)






ツイキャス自動通知システム

TwicasAutoAlert

python 3.8 で動作しました。windows環境です。
google chromeが入ってるのも前提で。
今回はどこまで動作するか調べてないです



上記からコードをダウンロードして、プログラムを配置してください。



構築手順は以下です。

①ツイキャスアプリ登録ページにてAPI追加
Twicas公式開発者向けページ を参考に。

アプリケーション登録ページから[Create New App]ボタンを押して以下項目を入力します。
もしくは https://twitcasting.tv/developernewapp.php より。


Read Onlyで大丈夫です。
今回はローカルで動かすのでCallback URLは http://localhost:8080 を指定で。
今回はローカルで動かすのでこれで大丈夫。
外部サーバで自動化してメール通知->メールから読みたい!とかでない限りは…。
ClientID、ClientSecretは他の人に共有してはいけません。



config.py に貼り付けます。



その後は検索キーワードをsearch_contextに登録。複数キーワード入れても大丈夫。
(本当はユーザ直指定したかったけど、そこまで上手くいかなかった。)

テキスト検索 にて1ユーザだけ引っかかるように検索します。
おすすめはユーザ名+ユーザIDの組み合わせ。




search_context = ['へっぽこばぶ太郎', 'BabutarOfficial']

完全に同一のユーザが出ない限りは大丈夫。(ついでに偽物検知にもなる)

call_timeは頻繁に配信する人でもない限り720分(12時間)を設定。
ここ短くしすぎると配信中に通知が飛んでくるので注意。



別ファイルのconfig.txtにはuser_idを入れてあげてください。ブラウザで開くのに必要です。
例えばhttps://twitcasting.tv/babutarofficialがツイキャス配信のURLであればbabutarofficialを設定。

最後に以下パッケージをインストール。

pip install pytwitcasting


今回はpytwitcastingを活用しました。
[参考] 【Python】ツイキャスWebAPI用ライブラリ作った【PyTwitcasting】

使わずに公式APIを活用すると簡易サーバをローカルに立てて…などと手間が多かったので、
今回はタスクスケジューラで定期的にチェックして見つけたら枠開く、ってプログラムに。
(詳しい人ならラムダ式に実行ってことで)

ここまででインストールと下準備は完了。
あとはバッチファイルをタスクスケジューラから定期的に実行するだけです。


タスクスケジューラに登録

Windows10ならデフォルトでタスクスケジューラが使えます。
左下検索から「タスクスケジューラ」と打ち込めば出てくるはず。

設定方法は 【Windows 10対応】タスクスケジューラで定期的な作業を自動化する を参考に。

繰り返しのトリガー部分は以下設定にしてます。



ここで「全般タブ」の設定について注意点が。
「ユーザがログオンしているかどうかにかかわらず実行する」を選択するとバックグラウンドでタスクが進む→自動で枠をブラウザから開く、ができない 点に注意。


このモードで実行すると、プログラムがバックグラウンド(画面に表示されない実行方法)で実行されてしまいます。タスクマネージャーで確認すると、アプリではなくバックグラウンドプロセスの中に該当アプリのプロセスが存在します。
つまり、仮に枠があったとしても枠が表に出ることなくプログラムが正常終了します。
回避するためには「ユーザーがログオンしているときのみ実行する」に設定をチェンジ。


ここまで設定できたら完了です。
ちなみに、即時でチェックしたい場合は browser_open.bat を実行すれば枠があるかチェックできます。
音を変えたいときはsample.wavを好きなwav音源に変えてください。
(名前はsample.wavのままで)

タスクスケジューラに乗せた!音流れた!音源を10分以上のにしてずっと流して自分で止める目覚まし形式にしたい!って人は以下batを作りましょう。
schtasks /End /TN "\タスク名"


どこに配置してもいいです。タスク名はタスクスケジューラに登録したのと同じ名前で。
これを.bat化して保存、実行するだけで実行中のタスクを強制停止できます。
[参考] 実行中のタスクを終了させる

ここまででタスクスケジューラの設定は完了です。
後は自動的に枠スタートしたら通知が来て…って流れになるはず。
(突然鳴る可能性があるので、家置きの安全なPC上でスケジューリング化するのがおすすめ)

もしくは、メール通知とかもいいかもですね。
メール通知連携実装については今後の対応予定です。








タスクスケジューラの謎

しかし、一部のPCではなぜかバックグラウンドタスクだと実行できて「ユーザーがログオンしているときのみ実行する」だと実行できない現象が発生。
『ユーザーがログオンしているかどうかにかかわらず実行する』を選択すると実行されない を参考にしてアカウントを切り替えたりしつつ検証したのですが…そのPCではなぜか動かず。

パス名称やタスクの有効化など、色々チェックしましたがうごきませんでした。
手動で[実行]ボタンを押したときは正常に実行されるのでプログラム側の問題ではなく、タスクスケジューラ側の設定の問題そうではある。
まだまだタスクスケジューラについて勉強が必要そうですね。


[参考] タスクスケジューラを使用してスケジュールでURLを開く方法
[参考] Windowsのタスクスケジューラでタスクが動かない!そんなときに確認したい項目6選!2021-10-28



(おまけ)本格的に組みたい人は

pythonでやるならローカルに簡易サーバが必要そう。
[参考] ツイキャスの新しい API をつかってみた(ライブ配信サービス戦国時代2016)
[参考] PythonのHTTPServer/BaseHTTPRequestHandlerを使って、簡単なHTTPサーバーを書く
[参考] Pythonでウェブサーバの構築

辺りを参考にローカルにサーバを自作してみてください。




コードを理解したい人向けにオススメの書籍置いときますね
[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

入門Python3 第2版 [ Bill Lubanovic ]
価格:4180円(税込、送料無料) (2021/12/11時点)







お気に入りの記事を「いいね!」で応援しよう

Last updated  2021.12.11 20:28:45
コメント(0) | コメントを書く


■コメント

お名前
タイトル
メッセージ

利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: