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