SHOWROOMのAPI - 「ライブ情報」の取得..JSONのもう一つの扱い方
前記事 「SHOWROOMのAPI - 「ライブ情報」の取得(GO言語のソースつき)」にSHOWROOMのAPIから返されるJSONからデータを取得する方法があります。これは複雑な(大きな)JSONからひとつ、ぶたつのデータを取り出すやり方としてはいいのですが、JSONから取り出すデータが多いとき(特にほとんどのデータがほしいとき)には面倒になるので、JSONに対応する構造体を作ってそこに代入させる方が手間がかかりません。
前記事とほとんど同じ機能をもつサンプルプログラムを作成しましたので紹介しておきます。この程度だったらどっちでも同じようなものですが....
(参考にしたサイトなども前記事にあります)
---------------------
恥ずかしくて書きたくないのですが、このプログラムはちょっとはまりました。「パッケージ外から参照できるのは最初の文字が大文字の変数だけ」というのを忘れてました。忘れてたというか、どういう場合このルールが適用されるのかよく理解できていませんでした w
(逆に言うと大文字だと外部から参照できるわけで、変数名の付け方はちゃんと考えるようにします。いまさらですが...)
=======================================
/*
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_info2(id string) (live_status int, is_enquete bool, bg_image string, 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 struct {
Age_verification_status int
Video_type int
Enquete_gift_num int
Is_enquete bool
Bcsvr_port int
Live_type int
Is_free_gift_only bool
Bcsvr_host string
Live_id int
Is_enquete_result bool
Live_status int
Room_name string
Room_id int
Bscvr_key string
Background_image_url string
}
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
panic(err)
}
live_status = result.Live_status
is_enquete = result.Is_enquete
bg_image = result.Background_image_url
return
}
func main() {
// パラメータの数をチェックします。
if len(os.Args) != 2 {
fmt.Println("usage:", os.Args[0], "room_id")
return
}
live_status, is_enquete, bg_image, status := Live_Live_info2(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, "bg_image=<", bg_image, ">")
}
}
« SHOWROOMのAPI - 「ライブ情報」の取得(GO言語のソースつき) | トップページ | SHOWROOM - イベントでの配信者の獲得ポイント数を取得する - スマホ版(android版) »
この記事へのコメントは終了しました。
コメント