Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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;
             * }
             */
        }