【Node.js】Twitch APIでユーザーの配信状態を取得する

配信チェッカーサイトを作ってみたくて、Twitch APIを使ってユーザーの配信状態を取得する方法を調べてみました。

準備

必要なnpm installをしておきます。

また、Twitch アプリケーションのクライアントIDを取得しておきます。

こちらを参考に取得しました。

npm install request --save

使うTwitch API

Get StreamのExample Request 3を使用します。

curl -X GET
'https://api.twitch.tv/helix/streams?user_login=afro&user_login=cohhcarnage&user_login=lana_lux' \
-H 'Authorization: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx' \
-H 'Client-Id: uo6dggojyb8d6soh92zknwmi5ej1q2'

作成コード

次のコードをserver.jsとして保存します。

const request = require("request");
var accessToken = '';


function gameRequest(accessToken){
    setTimeout(() => {
 	const gameOptions = {
	    url: 'https://api.twitch.tv/helix/streams?user_login=twitchdev',
	    method: 'GET',
	    headers:{
	        'Client-ID': '***********************',
	        'Authorization': 'Bearer ' + accessToken
	    }
	}
	if(!accessToken){
	    console.log("No Token");
	}else{
	    console.log(gameOptions);
	
	    const gameRequest = request.get(gameOptions,(err,res,body) => {
	        if(err){
	            return console.log(err);
	        }
	        
	    console.log('Status: ${res.statusCode}');
	    console.log(JSON.parse(body));
	});
	};
	
	},2000)
}

const options = {
    url: 'https://id.twitch.tv/oauth2/token',
    json:true,
    body: {
    client_id: '***********************',
    client_secret: '***********************',
    grant_type: 'client_credentials'
    }
};

request.post(options, (err,res,body)=>{
    if(err){
        return console.log(err);
    }
    console.log('Status: ${res.statusCode}');
    console.log(body.access_token);
    gameRequest(body.access_token);
    
});

実行

node server.js

動作イメージ

指定したユーザーが配信していた場合は以下のように表示されます。

Status: ${res.statusCode}
{
  data: [
    {
      id: '*********',
      user_id: '*********',
      user_login: 'twitchdev',
      user_name: 'twitchdev',
      game_id: '*********',
      game_name: '*********',
      type: 'live',
      title: '配信タイトル',
      viewer_count: 1,
      started_at: '2022-MM-DDT03:36:19Z',
      language: 'ja',
      thumbnail_url: 'https://static-cdn.jtvnw.net/previews-ttv/*********',
      tag_ids: [Array],
      is_mature: false
    }
  ],
  pagination: {}
}

参考にしたページ

Twitch API

Twitch API Get Stream

https://discuss.dev.twitch.tv/t/getting-user-ids/13806

https://github.com/jeff-interapt/twitchNode

Leave a Reply

Your email address will not be published.

CAPTCHA