예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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}】");
                    }
                }
            }
        }