SHOWROOMのAPI - 「ライブ情報」の取得(GO言語のソースつき)
先日「SHOWROOM - イベントでの配信者の獲得ポイント数を取得する(改良版)」という記事を書き、使っているAPIのURLは某巨大掲示板にころがってたやつです、って書いたのですが、SHOWROOMのAPIをきちんとまとめられている方がいらっしゃいました。
「たける - SHOWROOMのAPIについて(現在26個公開。引き続き調査中)」
---------
「SHOWROOM 新・自動三周ツール -- GO言語によるブラウザ制御 (1) main()」に書いたように今"自動三周ツール"の改良版を作成しています。その中で応援しているルーム(星投げ・種投げの対象ルーム)が配信中か否かのチェックを視聴者数が0でないかということでやっていたのですが、ちょっとタイムラグがあるようです。
どうしようか考えていたのですが、上の記事を見ると、ちゃんと配信状況を知るAPIがあるみたいです。これを使わない手はないと思いAPIの機能チェックのプログラムを書いてみました(ソースは記事の最後にあります)
Live_statusが具体的にどういう値になるのかわからなかったのですが、テストプログラムを実行してみると、配信中でないとき 1、配信中のとき 2、となるようです。
最初の実行結果は配信中のもので、Live_statusは2となっています。次の実行結果は配信終了後のものでLive_statusは1になっています。
これ以外の値をとるのかとらないのか?は今後の課題です。
なお、JSONのデコードは
「qiita @msh5 - Go言語でJSONに泣かないためのコーディングパターン」
の記事を参考にさせていただきました。
-----------------------------
main()
「SHOWROOM 新・自動三周ツール -- GO言語によるブラウザ制御 (1) main()」
SetEnvironment() 環境やポリシーに依存するパラメータを設定します。
SetBlackList() 星集め/種集めの対象としないルームのリストを作ります。
GetCategoryList() 公式枠/アマチュア枠に該当するジャンル(の位置)をオンライブ画面から検出します。
BreakDownSchedule() 配信スケジュールから星集め/種集め、星投げ/種投げ、カウントの
「SHOWROOM 星集め・星投げツール スケジュールの詳細化 BreakDownSchedule() (三周のやり方を例に)」
Scheduler() タスクリストにしたがって星集め/種集め、星投げ/種投げ、カウントを行います。
MakeTaskList() タスクリストから現在時(時分)に実行すべきタスクの集まり(タスクグループ)を抜き出します。
GetRoomList() 星集め/種集めの対象とするルームのリストを作ります。
CollectStarts() 星集め/種集めを行います。
ThrowStars() 星投げ/種投げを行います。
Count50() カウントを行います。
共通して使用する主な関数
MakeNewPage() ブラウザ画面を開きます。
ClosePage() ブラウザ画面を閉じます。
=================================================
/*
Room_IDで指定したルームの配信状況を確認するためのAPI live_info のテストプログラムです。
Live_Live_info Room_ID
Room_ID 配信ルームのID、アカウントっぽい方じゃなくて(ふつう)数字6桁くらいのやつです。
参考
SHOWROOMのAPI - 「ライブ情報」の取得(GO言語のソースつき)
http://seppina.cocolog-nifty.com/blog/2019/10/post-7df814.html
*/
package main
import (
"fmt"
"os"
"encoding/json"
"net/http"
)
func Live_Live_info(id string) (live_status int, is_enquete bool, status int) {
status = 0
// 配信者ルームの配信状況を確認するためのURL(このURLについては記事参照)
URL := "https://www.showroom-live.com/api/live/live_info?room_id=" + id
resp, err := http.Get(URL)
if err != nil {
// 一時的にデータが取得できない。
resp.Body.Close()
status = 1
return
// panic(err)
}
defer resp.Body.Close()
// JSONをデコードする。
var result interface{}
decoder := json.NewDecoder(resp.Body)
if err := decoder.Decode(&result); err != nil {
panic(err)
}
// SHOWROOMをやめた、などの対応
if result.(map[string]interface{})["live_status"] == nil {
status = 2
return
}
lstatus, _ := result.(map[string]interface{})["live_status"].(float64)
live_status = int(lstatus)
is_enquete, _ = result.(map[string]interface{})["is_enquete"].(bool)
return
}
func main() {
// パラメータの数をチェックします。
if len(os.Args) != 2 {
fmt.Println("usage:", os.Args[0], "room_id")
return
}
live_status, is_enquete, status := Live_Live_info(os.Args[1])
if status != 0 {
fmt.Println("Error in intLive_Live_info() status=", status)
} else {
fmt.Println("live_status=", live_status, "is_enquete=", is_enquete)
}
}
« SHOWROOM 星集め・星投げツール スケジュールの詳細化 BreakDownSchedule() (三周のやり方を例に) | トップページ | SHOWROOMのAPI - 「ライブ情報」の取得..JSONのもう一つの扱い方 »
「パソコン・インターネット」カテゴリの記事
- さくらインターネットのレンタルサーバーでGOで書いたCGIを動かした(苦労)話(2021.04.19)
- SHOWROOMのAPI - 「ライブ情報」の取得(GO言語のソースつき)(2019.10.26)
- SHOWROOM 星集め・星投げツール スケジュールの詳細化 BreakDownSchedule() (三周のやり方を例に)(2019.09.25)
- SHOWROOM 新・自動三周ツール -- GO言語によるブラウザ制御 (1) main()(2019.09.17)
この記事へのコメントは終了しました。
コメント