メモです
YouTubeLiveAPIを叩きに行って、コメントを取得したかったもののまだ途中です。
忘れないためのメモ。
コードが汚いのは、メモなので勘弁してほしい。
UnityでYoutubeAPIを叩きに行く
private IEnumerator GetYoutubeAPI()
{
UnityWebRequest request = UnityWebRequest.Get(uri);
yield return request.SendWebRequest();
if(request.isHttpError || request.isNetworkError)
{
Debug.Log(request.error);
}
else
{
Debug.Log(request.downloadHandler.text);
}
Debug.Log(request.downloadHandler.text);
}
コルーチン内で、UnityWebRequestを作って、Get(uri)で、呼びに行く。
uriは、上の方で適当に定義する。
Debug.Log(request.downloadHandler.text);
これで、コンソールにJSONのログが出現する。
yield return request.SendWebRequest();
yield 節の意味を未だによくわかってない。誰か教えて。
とりあえずこれで、JSONデータがとれます。
YouTubeLiveのコメントを見に行く。
たどる順番。
- チャンネルIDを知っているとする
- videoIDを取得
- chatIDを取得
- チャットを取りに行く!
JSONのパースで大いにハマる。
結局、Unity標準のJsonUtilityは使い方がわからなかったので、MiniJSONを使用。
JSONの辿り方としてこれで正しいか全くわからないけど、
videoID取りに行くときのやり方をメモしておく。
//MiniJSON つかうー!!!!
var mjson = (IDictionary)MiniJSON.Json.Deserialize(jsontext);
var mitems = (IList)mjson["items"];
var mid = (IDictionary)mitems[0];
var sid = (IDictionary)mid["id"];
//videoIdを取得
videoId = (string)sid["videoId"];
中に配列がはいっていてもパースできることがわかったので良かった。
こんな感じで、URI作って投げて、返ってきた値を、突っ込んで投げてすればチャットとれます。
全然まとまってないのは、そのうちちゃんとかきます。
まだ、表示部までできてないので・・・。
参考と言うか、ほぼそのままと言うか
JSONをパース
https://qiita.com/phi/items/914bc839b543988fc0ec
https://qiita.com/asus4/items/bac121c34cd3169116c0
YoutubeLive
https://blog.sky-net.pw/article/86
https://qiita.com/minakawa-daiki/items/2568afdc6d88a0de705a
その他もろもろ・・・。
うぅ。出来る人なら1時間もあれば出来ることを僕はまるっと一日かかってしまった。(しかもまだ途中
もっとこうした方がいいよ、。とか言うことがあれば、教えて下さい。お願いします。
あと、コルーチンとかまだまだよくわかってないし。。。