概要
ストリーミングサービスの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の作成
新規のスプレッドシートを作成します
そして、ツール→スクリプトエディタを開きます
下記のコードをコピー&ペーストします
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++;
}
}
}
}
定期実行する
イベントのソースを時間主導型にすることで任意の間隔でスクリプトを実行することができます
これで一定間隔でスプレッドシートに番組情報が更新されるようになりました。
あとは取得したい配信のroom_idかroom_url_key事前に取得しておき
一致するものが来たら他のサービスに配信中の通知を発行するといったことが可能になります。