UnityNicoliveClientはニコニコ生放送の新配信番組をUnityから操作するクライアントです。
UPMから導入してください。
https://github.com/TORISOUP/UnityNicoliveClient.git?path=Assets/TORISOUP/NicoliveClient/Plugins
次のライブラリを別途導入する必要があります。
- R3
- R3.Unity
- UniTask
- ログインしてユーザセッション取得
- 番組開始/終了
- 番組延長手段取得
- 番組延長
- 運営コメント投稿/削除
- 番組情報取得
- 番組統計情報取得(来場者数、コメント数)
(削除) コメント取得 (削除ここまで)- アンケートの実行/終了
コメントの取得についてはNdgrClientSharpを利用してください。
またコミュニティの概念がなくなったため、それに関係する機能を削除しました。
NiconicoUserClient.LoginAsyncを実行してNiconicoUserを取得NiconicoUserをNicoliveApiClientに渡してクライアント作成SetNicoliveProgramIdに番組IDを渡して操作対象番組を登録- 各種メソッドを実行
public async UniTask LoginAsync(string mail, string pass, CancellationToken ct) { //ログイン実行 NiconicoUser user = await NiconicoUserClient.LoginAsync(mail, pass, ct); //クライアントにユーザ情報を渡して初期化 var client = new NicoliveApiClient(user); //操作したい番組ID登録 client.SetNicoliveProgramId("lv123456"); //運営コメントを非同期で投稿 await client.SendOperatorCommentAsync("名前", "テスト投稿", "white", false, ct); }
SetNicoliveProgramId()を実行する。これを実行しないとApiClientは動作しません。
client.SetNicoliveProgramId("lv123456");
デフォルトではUnityNicoliveClientがUAに設定されています。
変更したい場合はSetCustomUserAgentから設定可能(できるだけ自身のアプリ名を設定してください)
client.SetCustomUserAgent("YourApplicationNameHere");
GetProgramInfoAsync で取得可能
ProgramInfo result = await client.GetProgramInfoAsync("lv123456", ct);
コメントの取得についてはNdgrClientSharpを利用してください。
GetProgramInfoAsyncで番組情報(ProgramInfo)を取得するProgramInfoの中のRoom.ViewUeiを使ってNDGR(ニコ生の新コメントサーバー)に接続するNdgrClientSharpのNdgrLiveCommentFetcherを使ってコメントを取得する
// 番組情報取得 var programInfo = await client.GetProgramInfoAsync("lv12345", ct); // 新仕様にニコ生では常にRoomは1つ // そこに入っているViewUriを使う var viewUri = programInfo.Rooms[0].ViewUri // 生放送コメント取得用のクライアントを生成 var liveCommentFetcher = new NdgrLiveCommentFetcher(); // コメントの受信準備 liveCommentFetcher .OnMessageReceived .Subscribe(chukedMessage => { switch (chukedMessage.PayloadCase) { case ChunkedMessage.PayloadOneofCase.Message: // コメントやギフトの情報などはMessage Debug.Log(chukedMessage.Message); break; case ChunkedMessage.PayloadOneofCase.State: // 番組他状態の変更などはStateから取得可能 Debug.Log(chukedMessage.State); break; default: break; } }); // コメントの受信開始 liveCommentFetcher.Connect(viewUri); // --- // コメントの受信停止 liveCommentFetcher.Disconnect(); // リソースの解放(忘れずに) liveCommentFetcher.Dispose();
詳しくはNdgrClientSharpのREADMEを参照してください。
// アンケート開始 await client.StartEnqueteAsync( "lv12345", "好きな食べ物は?", new[] { "バナナ", "りんご", "カレー" }, ct); // 結果表示&取得 var result = await client.ShowResultEnqueteAsync("lv12345", ct); foreach (var data in result.Items) { Debug.Log($"{data.Name} : {data.Rate}%"); } // アンケート終了 await client.FinishEnqueteAsync("lv12345", ct);
MITライセンス
UniRx Copyright (c) 2014 Yoshifumi Kawai https://github.com/neuecc/UniRx/blob/master/LICENSE
R3 Copyright (c) 2024 Cysharp, Inc. https://github.com/Cysharp/R3/blob/main/LICENSE
UniTask Copyright (c) 2019 Yoshifumi Kawai / Cysharp, Inc. https://github.com/Cysharp/UniTask/blob/master/LICENSE
NugetForUnity Copyright (c) 2018 Patrick McCarthy https://github.com/GlitchEnzo/NuGetForUnity/blob/master/LICENSE