LoginSignup
8
9

More than 5 years have passed since last update.

Google Apps ScriptでSHOWROOMで配信中の番組情報を取得する

Posted at

概要

ストリーミングサービスのSHOWROOMにはRSSのようなものはなく番組情報を簡単に取得することができません。
そこでGoogle Apps Scriptを使って一定間隔で番組情報を取得する仕組みを構築します。

番組情報API

https://www.showroom-live.com/api/live/onlives
にアクセスすると配信中の番組情報がJSON形式で取得できます
ジャンル情報の配列があり、その中に各番組情報が格納されています。

この中でよく使いそうなのは

key 内容
room_url_key 配信URLのID
https://www.showroom-live.com/ と結合することで配信URLを取得できる
started_at 配信開始タイムスタンプ
room_id プロフィールのID
https://www.showroom-live.com/room/profile?room_id= と結合することでプロフィールを取得できる
main_name 配信のタイトル
telop 動画のテロップ
image 配信のサムネイル

Google Apps Scriptの作成

新規のスプレッドシートを作成します
そして、ツール→スクリプトエディタを開きます
image.png

こんな感じでエディタが開きます
image.png

下記のコードをコピー&ペーストします

function myFunction() 
{
  //スプレッドシートの取得
  var book = SpreadsheetApp.getActiveSpreadsheet();
  var sheetData = book.getSheetByName("シート1");

  //いったん内容をクリア
  sheetData.clear();

  //APIにアクセス
  var url = 'https://www.showroom-live.com/api/live/onlives';
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText('UTF-8');

  //JSONに変換
  var content = JSON.parse(html);
  var onlives = content["onlives"];
  var count = 1;
  for( i in onlives )
  {
    var lives = onlives[i]["lives"];
    for( x in lives)
    {
      //room_idがない場合があるのでチェックする
      if(lives[x]["room_id"])
      {
        sheetData.getRange(count, 1).setValue(lives[x]["room_id"]);
        sheetData.getRange(count, 2).setValue(lives[x]["room_url_key"]);
        sheetData.getRange(count, 3).setValue(lives[x]["main_name"]);
        sheetData.getRange(count, 4).setValue(lives[x]["started_at"]);
        sheetData.getRange(count, 5).setValue(lives[x]["image"]);
        count++;
      }
    }
  }
}

実行すると下記のような結果を得ることができます
image.png

定期実行する

編集→現在のプロジェクトのトリガーを開きます
image.png

新しいトリガーを作成します。
image.png

イベントのソースを時間主導型にすることで任意の間隔でスクリプトを実行することができます
image.png

これで一定間隔でスプレッドシートに番組情報が更新されるようになりました。
あとは取得したい配信のroom_idかroom_url_key事前に取得しておき
一致するものが来たら他のサービスに配信中の通知を発行するといったことが可能になります。

8
9
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
8
9