LoginSignup
2
1

More than 1 year has passed since last update.

Twitch APIで配信のタイトルとゲームカテゴリを更新する

Last updated at Posted at 2022-08-08

はじめに

Twitch APIでココを更新するための手順。
ゲームイベントとかではNodeCG等から叩くケースが想定されます。

image.png

1. New Twitch APIを利用できるようにする

Twitch APIを利用してみようを参考に、利用登録をします。

2 操作対象のAPIに合わせたOAuth2トークン取得

チャンネル情報の更新は Modify Channel Information のAPIを利用します。

各APIのAuthenticationには以下の2種類が書いてあって、それぞれ別物と思ってください。

  • App Access Token: curlだけで取得できるトークン (/tokenのやつ)
  • OAuth Token: 一回ブラウザでアクセスしてリダイレクトして取得できるトークン (/authorizeのやつ)

対応しないトークンで各種APIを叩いた場合、401が返却されます。

{"error":"Unauthorized","status":401,"message":"Invalid OAuth token"}

Modify Channel Information はOAuth Tokenを要求されるので、ブラウザでアクセスしてリダイレクトする方になります。

また、このAPIは channel:manage:broadcast のscopeが必要なので、このscopeを指定しておきます。詳細はTwitch APIに必要なOAuth認証のアクセストークンを取得しようを参照してください。
一応nginxで動かすことを想定したhtmlを記載しておきます。

index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <a href="https://id.twitch.tv/oauth2/authorize?client_id=ここにクライアントID&redirect_uri=http://localhost&response_type=token&scope=channel%3Amanage%3Abroadcast">Twitch認証</a>
    <div id="token"></div>
  </body>
  <script>
    if (location.hash) {
      document.querySelector("#token").innerHTML=decodeURIComponent(location.hash)
    }
  </script>
</html>

ちゃんと取得できれば以下のような感じになります。ここでaccess_tokenが取得できれば以降はコマンドラインだけで進められます。
image.png

なお、その他のscopeについてはTwitch Access Token Scopesを参照。

3 配信者ID(broadcaster_id)の取得

人に見えてる文字列だとAPIには使えないので、数字の方のIDを取得します。

Get Started with the Twitch API にもある通り、とりあえずこれを叩きます。
image.png

Postmanの場合

image.png

curlの場合

curl -X GET 'https://api.twitch.tv/helix/users?login=pastan04' \
-H 'Authorization: Bearer とーくん' \
-H 'Client-Id: 自分のクライアントID'

4 ゲームカテゴリの検索

ゲームカテゴリは自由に入力できるものではなく、ゲームごとのに設定されたIDを知る必要があります。これはSearch Categories のAPIを使います。
image.png

query= の部分に、ゲームカテゴリ名を入れて検索を行います。
複数のゲームがヒットした場合はそれだけレスポンスが返ってきます。機械的に判定するのは大変なので、イベントで使う場合は事前に全ゲームのidを調べ上げておくのがよいでしょう。

Postmanの場合

image.png

curlの場合

スペースを含む検索ワードは+%20に置き換えないと怒られることに注意.

curl -X GET 'https://api.twitch.tv/helix/search/categories?query=The+Somnium+Files' \
-H 'Authorization: Bearer とーくん' \
-H 'Client-Id: 自分のクライアントID'

5 ゲームカテゴリの更新

image.png

これで 更新対象の配信者ID ゲームID が揃ったので、いよいよカテゴリを更新します。
ここではタイトルも一緒に更新する例を記載していますが、更新が不要なkeyは指定しなくてOKです。

Postmanの場合

見えてないけどこれまで通りAuthorizationとClient-IdをHeadersに指定してください。
レスポンスボディは無いです。
image.png

curlの場合

curl -X PATCH 'https://api.twitch.tv/helix/channels?broadcaster_id=43594253' \
-H 'Authorization: Bearer とーくん' \
-H 'Client-Id: 自分のクライアントID' \
-H 'Content-Type: application/json' \
--data-raw '{"game_id":"1816749448", "title":"話題のあのゲームをやるよ!"}'

よくわかんないけどgitbashで叩いた時は文字化けしました。ラズパイとかWSL2のUbuntuからなら問題無かったです

おわり

無事更新されました
t.gif

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1