LoginSignup
0
1

GASxTwitchAPIで視聴者数取得~スプシ出力

Posted at

はじめに

完全に趣味の範疇で調べてやっただけでほぼ無知です。詳しくは各自で調べてください
思いつきと調べながら適当に書いたコードなので命名規則とか色々ごちゃ許して

用意するもの

  • 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ページにアクセストークンの取得が書かれているので

CMD
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ライフを~~

GAS全コード
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;
}


0
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
0
1