配信チェッカーサイトを作ってみたくて、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: {}
}