/// <summary> /// 获取弹幕信息 /// </summary> /// <param name="msgType"></param> /// <returns></returns> static BrrageMsg GetMsgType(string[] msgType) { BrrageMsg brrageMsg = new BrrageMsg(); foreach (string keyValueTemp in msgType) { string[] keyValue = Regex.Split(keyValueTemp, "@=", RegexOptions.IgnoreCase); if (keyValue.Length >= 2) { string key = keyValue[0]; string[] textArr = new string[keyValue.Length - 1]; Array.Copy(keyValue, 1, textArr, 0, keyValue.Length - 1); string value = String.Join("@", textArr); if (key == "nn") { brrageMsg.Name = value; } if ((key == "txt")) { brrageMsg.Txt = value; } } } return(brrageMsg); }
/// <summary> /// 提取弹幕信息 /// </summary> /// <param name="msg"></param> void ShowMsg(string msg) { msg = FIX_TAIL + msg; string[] chatmsgArray = Regex.Split(msg, "type@=", RegexOptions.IgnoreCase); FIX_TAIL = chatmsgArray[chatmsgArray.Length - 1]; //截取最后的丢弃数据,放在下个包的开头,防止数据丢失 string[] newChatmsgArrayArr = new string[chatmsgArray.Length - 1]; Array.Copy(chatmsgArray, 0, newChatmsgArrayArr, 0, chatmsgArray.Length - 1); foreach (string t in newChatmsgArrayArr) { string[] msgType = t.Split('/'); if (msgType.Length >= 2) { string type = msgType[0]; //if (!ls.Contains(type)) //{ // Console.WriteLine(t); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine(); // Console.WriteLine(); // ls.Add(type); //} if (type == "chatmsg") { BrrageMsg brrageMsg = GetMsgType(msgType); brrageMsg.ROOM_ID = ROOM_ID; //通知弹幕来了 BarrageNotice?.Invoke(brrageMsg); } else if (type == "spbc") { Console.WriteLine(t); } else if (type == "dgb") { RoomGiftInfo info = GetGift(msgType); Console.WriteLine(t); if (!douyuGifts.ContainsKey(info.GiftId)) { Console.WriteLine($"不包含礼物【{info.GiftId}】"); continue; } GiftNotice?.Invoke(info); Console.WriteLine($"【{info.NickName}】送了{info.GiftNum}个【{douyuGifts[info.GiftId].Name}】"); } } } }