private void ProcessCommand(byte[] playLoad) { var json = JObject.Parse(Encoding.UTF8.GetString(playLoad)); var cmd = json["cmd"].ToObject <string>(); switch (cmd) { case "SEND_GIFT": var giftInfo = json["data"].ToObject <LiveGiftInfo>(); GotGiftEvent?.Invoke(giftInfo); break; case "DANMU_MSG": var info = new LiveCommentInfo() { Username = json["info"][2][1].ToString(), Userid = json["info"][2][0].ToObject <long>(), Message = json["info"][1].ToObject <string>(), IsAdmin = json["info"][2][2].ToString() == "1", IsVip = json["info"][2][3].ToString() == "1" }; GotDanmuEvent?.Invoke(info); break; default: //Console.WriteLine(json.ToString(Formatting.Indented)); break; } }
private void ProcessCommand(byte[] playLoad) { var json = JObject.Parse(Encoding.UTF8.GetString(playLoad)); var a = json.ToString(); var cmd = json["cmd"].ToObject <string>(); if (cmd.StartsWith("SEND_GIFT"))//礼物 { var giftInfo = json["data"].ToObject <BilibiliGiftInfo>(); GotGiftEvent?.Invoke(giftInfo); } else if (cmd.StartsWith("DANMU_MSG")) { var info = new BilibiliDanmakuInfo() { Username = json["info"][2][1].ToString(), Userid = json["info"][2][0].ToObject <long>(), Suffix = json["info"][3].Any() ? json["info"][3][1].ToString() : string.Empty, SuffixRoom = json["info"][3].Any() ? json["info"][3][2].ToString() : string.Empty, SuffixLevel = json["info"][3].Any() ? json["info"][3][0].ToObject <int>() : 0, Message = json["info"][1].ToString(), IsAdmin = json["info"][2][2].ToString() == "1", IsVip = json["info"][2][3].ToString() == "1" }; GotDanmakuEvent?.Invoke(info); } else if (cmd.StartsWith("GUARD_BUY")) { var userGuardLevel = json["data"]["guard_level"].ToObject <int>(); var guardInfo = new BilibiliGiftInfo() { Userid = json["data"]["uid"].ToObject <long>(), Username = json["data"]["username"].ToString(), GiftName = userGuardLevel == 3 ? "舰长" : userGuardLevel == 2 ? "提督" : userGuardLevel == 1 ? "总督" : string.Empty, CoinType = "gold", CostCoin = userGuardLevel == 3 ? 190000 : userGuardLevel == 2 ? 2000000 : userGuardLevel == 1 ? 20000000 : 0, Count = json["data"]["num"].ToObject <int>() }; GotGiftEvent?.Invoke(guardInfo); } else if (cmd.StartsWith("LIVE")) { LiveBeginEvent?.Invoke(this); } else if (cmd.StartsWith("PREPARING")) { LiveStoppedEvent?.Invoke(this); } /* * switch (cmd) * { * case "SEND_GIFT": * var giftInfo = json["data"].ToObject<BilibiliGiftInfo>(); * GotGiftEvent?.Invoke(giftInfo); * break; * case "DANMU_MSG": //弹幕 * var info = new BilibiliDanmakuInfo() * { * Username = json["info"][2][1].ToString(), * Userid = json["info"][2][0].ToObject<long>(), * Suffix = json["info"][3].Any() ? json["info"][3][1].ToString() : string.Empty, * SuffixRoom = json["info"][3].Any() ? json["info"][3][2].ToString() : string.Empty, * SuffixLevel = json["info"][3].Any() ? json["info"][3][0].ToObject<int>() : 0, * Message = json["info"][1].ToString(), * IsAdmin = json["info"][2][2].ToString() == "1", * IsVip = json["info"][2][3].ToString() == "1" * }; * GotDanmakuEvent?.Invoke(info); * break; * case "GUARD_BUY": //购买舰长 * var userGuardLevel = json["data"]["guard_level"].ToObject<int>(); * var guardInfo = new BilibiliGiftInfo() * { * Userid = json["data"]["uid"].ToObject<long>(), * Username = json["data"]["username"].ToString(), * GiftName = userGuardLevel == 3 ? "舰长" : * userGuardLevel == 2 ? "提督" : * userGuardLevel == 1 ? "总督" : string.Empty, * CoinType = "gold", * CostCoin = userGuardLevel == 3 ? 190000 : * userGuardLevel == 2 ? 2000000 : * userGuardLevel == 1 ? 20000000 : 0, * Count = json["data"]["num"].ToObject<int>() * }; * GotGiftEvent?.Invoke(guardInfo); * break; * case "LIVE": * LiveBeginEvent?.Invoke(this); * break; * case "PREPARING": * LiveStoppedEvent?.Invoke(this); * break; * default: * //Console.WriteLine(json.ToString(Formatting.Indented)); * break; * } */ }