2019年2月24日日曜日

YouTubeの生放送のチャットをPHPから書き込む

今回はYouTuve Liveのチャットの書き込みに挑戦します。
例えば、「チャンネル登録よろしくね」を100コメントごとに1回流すとか、
注意事項を10分ごと流すとか、特定のワードに対して自動で返すとか。
botってやつです。

今回は10分ごとにA⇒B⇒C⇒A…のコメントをローテーションするものを作ります。


APIの使い方は公式のここ
と検索してできた外国の動画でやり方を察しました。情報が少なくて苦労しました。
荒らしとかの関係なのか全然でてこない。謎です。

公式の「Try it now.」の以下のフォーマットが投げられればいいらしいです。



スパチャもたぶんtypeを変えればできそう。試さないけど。



今までのread操作とはやることが多いです。
①OAuth2.0での認証が必要なので、以前の記事を参照してトークンを作成。
ただし、書き込みなので
「https://www.googleapis.com/auth/youtube.readonly」
ではなく
「https://www.googleapis.com/auth/youtube」
でトークンを作る必要があります。
「get_token.php」の12行目を変更し、実行すればOK。
これは URLを送信するときにヘッダーに含まれるようにします。

 ②チャットのテキストのために配列を作ってそれをjson_encode関数で
変換して付与しています。
これを URLを送信するときにRequest bodyに含まれるようにします。

 コードは以下のようになります。
コードの前半は、以前の記事「登録チャンネルリストの出力」 の前半と同じです。

①にはAPIキー、②には今回は生放送中の動画のidを入れます。
https://www.youtube.com/watch?v=xxxxxxxxxxx
のxxxxxxxxxxxの文字列のことです。
③ここにコメントを入力です。絵文字はちょっとわかんないです。
読み出ししたのをコピペすればいけるか?

なお、トークンは読み出して作成するので今回はコード上に記述しません。
また、一度作成したトークンの更新処理を行っていないので1時間で無効になります。
50分ぐらいで更新とか工夫してください。。。






注釈として
69行目から78行目がRequest body部分です。ここにチャットIDやコメント文が入ります。
84行目 たぶんBearerの後にスペースが必要です。
92行目 ここでチャットの書き込みを行います。投げた結果が返ってきます。たぶん書き込みをすぐ消すときに使ったりするのかもしれない。
エラー401が返った場合は認証されてない⇒アクセストークンをうまく設定できていません。
エラー400の場合は認証ができているがRequest bodyのフォーマットが正しくなかったり、
チャットの連続投稿ではじかれたりしているのだと思われます。
95行目 ここで10分という時間を作ってます。
96行目 ここコメントのローテーション

サンプルコードないし、検索しても全然でてこないし、
そもそもPHPでfile_get_contentsが何をしているかよくわかっていないし、
検索するとfile_get_contentsは古くて推奨されてないようなこと書かれているし
よくわからないっすねぇ。
PHPもAPI関係で遊ぶだけで基礎できませんもん。

0 件のコメント:

コメントを投稿