はじめに
完全に趣味の範疇で調べてやっただけでほぼ無知です。詳しくは各自で調べてください
思いつきと調べながら適当に書いたコードなので命名規則とか色々ごちゃ許して
用意するもの
- TwitchAPIのDevelopアカウント
- スプシ(xlsxなど拡張子がない規定のスプシファイル)
- GASファイル
いざ実践
まずはTwitchAPIのDevelopアカウントがないことには始まらないので
下記にアクセスして作成
TwitchDevelopアカウントを作成した後は
色々やってる人には馴染深い認証トークンとかを取得する必要がある
TwitchDevGuid: authentication
ガイド通りに進めていくと
おそらくコンソールアプリケーションの追加までできるはずなのでこの記事では割愛
実際に認証トークンを取得するところが個人的にはわかりにくかった
Web関連専攻してなくて馴染ないから不確定だけどこんな理解
-
ClientID:
コンソールアプリケーションを作成するとできるIDのこと、おそらく公開したらアカン奴 -
クライアントの秘密:
秘密鍵 、一般公開したらアカン奴 -
ユーザID:
Twitchにログインする時のID、各人のチャンネルURLとかに乗ってるIDでもある
バレバレだから気にしない -
Authorization:
API Referenceの随所に出てくるわからん奴、最大の要
アクセストークン、認証トークンなどそう呼ばれてる奴、偉い人言葉統一して広辞苑に書いてくれ
TwitchAPIはLinuxが必要らしいけど用意してられないので沢山しらべたところ
WindowsCMDでもいけるっぽい
TwitchDevGuid: cURL
要約すると ' が " になって¥が ^ になるだけ、どこまで動くかは未検証
ちょうどcURLのDevページにアクセストークンの取得が書かれているので
curl -X POST "https://id.twitch.tv/oauth2/token" ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-d "client_id=<your client id goes here>&client_secret=<your client secret goes here>&grant_type=client_credentials"
これをコピペして<your client id goes here>
<your client secret goes here>
この部分は上記で取得してきたClientIDや秘密鍵を入れて実行するとアクセストークンを作成してくれる
使用期限や破棄方法は不明。。。怖い
これでTwitchAPIを使用する準備は整った!
今回紹介するもの以外をやりたい場合は下記のAPI Referenceページから各自でがんばる
GASコード
別途取得と記載ある箇所とシート名、セルなどは各人でお願いするとして
notification
がメインに実行する関数でセルの更新など
sendHttpPost
がTwitchAPIで取得してもらう関数
コンソールに取得してきた情報を全出力しているのでその中からほしい値がある場合は
live["viewer_count"]
ここをうまくやればヨシ
あとはトリガー設定するなりお好きにどうぞ
それでは楽しいTwitchライフを~~
var CLIENTID = '別途取得';//コンソールアプリケーション作成時のクライアントID
var TOKEN = '別途取得';//秘密
var USERID = 'Twitchログインする時のID'
function notification() {
//スプシ読み込み
const file = SpreadsheetApp.openById("別途取得");
const sheet = file.getSheetByName('シート1');
const now_viewer_sel = 'B4';
const max_viewer_sel = 'B6';
var res = sendHttpPost(USERID);
var lives = JSON.parse(res.getContentText());
for(var j = 0; j < lives["data"].length; j++){
var live = lives["data"][j];
console.log(live);//全出力
//現視聴者数から最大視聴者数を入れ替える
var liveViewer = live["viewer_count"];//現視聴者数
var nowRange = sheet.getRange(now_viewer_sel);//現視聴者セル指定
nowRange.setValue(liveViewer); //現視聴者の更新
var maxRange = sheet.getRange(max_viewer_sel);//最大視聴者セル指定
var maxVal = maxRange.getValue(); //最大視聴者の値取得
//最大視聴者の更新
if ( liveViewer > maxVal)
{
maxRange.setValue(liveViewer);
}
}// for(var j = 0; j < lives["data"].length; j++)
}
/**
* Twitch 配信情報を取得
*/
function sendHttpPost(id){
var endpoint = "https://api.twitch.tv/helix/streams?user_login="+id;
console.log("endpoint::" + endpoint);
var headers =
{
'Client-ID': CLIENTID,
'Authorization' : "Bearer "+ TOKEN
}
var options =
{
"method" : "get",
"headers" : headers
};
var res = UrlFetchApp.fetch(endpoint, options);
return res;
}