From 923583815206736b8680d865641f4f0a939bdb90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E7=99=BD=E7=8C=BF?= <1083092844@qq.com> Date: Sun, 17 Dec 2023 23:56:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=81=E7=A4=BC=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modles/JsonEntity/BarrageMessages.cs | 5 +++ BarrageGrab/Program.cs | 2 +- BarrageGrab/WsBarrageService.cs | 37 +++++++++++-------- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/BarrageGrab/Modles/JsonEntity/BarrageMessages.cs b/BarrageGrab/Modles/JsonEntity/BarrageMessages.cs index 8b4132a..340fcee 100644 --- a/BarrageGrab/Modles/JsonEntity/BarrageMessages.cs +++ b/BarrageGrab/Modles/JsonEntity/BarrageMessages.cs @@ -245,6 +245,11 @@ namespace BarrageGrab.Modles.JsonEntity /// 抖币价格 /// public int DiamondCount { get; set; } + + /// + /// 送礼目标(连麦直播间有用) + /// + public MsgUser ToUser { get; set; } } /// diff --git a/BarrageGrab/Program.cs b/BarrageGrab/Program.cs index 633024a..d44b8fc 100644 --- a/BarrageGrab/Program.cs +++ b/BarrageGrab/Program.cs @@ -21,7 +21,7 @@ namespace BarrageGrab } WinApi.SetConsoleCtrlHandler(cancelHandler, true);//捕获控制台关闭 - WinApi.DisableQuickEditMode();//禁用控制台快速编辑模式 + WinApi.DisableQuickEditMode();//禁用控制台快速编辑模式 Console.Title = "抖音弹幕监听推送"; AppRuntime.DisplayConsole(!Appsetting.Current.HideConsole); AppRuntime.WssService.Grab.Proxy.SetUpstreamProxy(Appsetting.Current.UpstreamProxy); diff --git a/BarrageGrab/WsBarrageService.cs b/BarrageGrab/WsBarrageService.cs index 6dd1ea3..575c64f 100644 --- a/BarrageGrab/WsBarrageService.cs +++ b/BarrageGrab/WsBarrageService.cs @@ -24,7 +24,7 @@ namespace BarrageGrab /// 弹幕服务 /// public class WsBarrageService - { + { WebSocketServer socketServer; Dictionary socketList = new Dictionary(); //礼物计数缓存 @@ -107,6 +107,7 @@ namespace BarrageGrab //解析用户 private MsgUser GetUser(User data) { + if (data == null) return null; MsgUser user = new MsgUser() { DisplayId = data.displayId, @@ -114,13 +115,13 @@ namespace BarrageGrab Gender = data.Gender, Id = data.Id, Level = data.Level, - PayLevel = (int)(data.payGrade?.Level ?? 0), - Nickname = data.Nickname, - HeadImgUrl = data.avatarThumb.urlLists.FirstOrDefault() ?? "", + PayLevel = (int)(data.payGrade?.Level ?? -1), + Nickname = data.Nickname ?? "用户" + data.displayId, + HeadImgUrl = data.avatarThumb?.urlLists?.FirstOrDefault() ?? "", SecUid = data.sec_uid, - FollowerCount = data.followInfo.followerCount, - FollowingCount = data.followInfo.followingCount, - FollowStatus = data.followInfo.followStatus, + FollowerCount = data.followInfo?.followerCount ?? -1, + FollowingCount = data.followInfo?.followingCount ?? -1, + FollowStatus = data.followInfo?.followStatus ?? -1, }; user.FansClub = new FansClubInfo() { @@ -139,7 +140,7 @@ namespace BarrageGrab static int count = 0; private void PrintMsg(Msg msg, PackMsgType barType) - { + { var rinfo = AppRuntime.RoomCaches.GetCachedWebRoomInfo(msg.RoomId.ToString()); var roomName = (rinfo?.Owner?.Nickname ?? ("直播间" + (msg.WebRoomId == 0 ? msg.RoomId : msg.WebRoomId))); var text = $"{DateTime.Now.ToString("HH:mm:ss")} [{roomName}] [{barType}]"; @@ -153,11 +154,11 @@ namespace BarrageGrab var append = msg.Content; switch (barType) { - case PackMsgType.弹幕消息:append = $"{msg?.User?.Nickname}: {msg.Content}"; break; - case PackMsgType.下播:append = $"直播已结束"; break; + case PackMsgType.弹幕消息: append = $"{msg?.User?.Nickname}: {msg.Content}"; break; + case PackMsgType.下播: append = $"直播已结束"; break; default: break; } - + text += append; if (Appsetting.Current.BarrageLog) @@ -181,7 +182,7 @@ namespace BarrageGrab Console.WriteLine("控制台已清理"); count = 0; } - console.WriteLine(text + "\n", color); + console.WriteLine(text + "\n", color); } //粉丝团 @@ -296,9 +297,15 @@ namespace BarrageGrab GroupId = msg.groupId, GiftId = msg.giftId, GiftName = msg.Gift.Name, - User = GetUser(msg.User) + User = GetUser(msg.User), + ToUser = GetUser(msg.toUser) }; + if (enty.ToUser != null) + { + enty.Content += ",给" + enty.ToUser.Nickname; + } + var msgType = PackMsgType.礼物消息; PrintMsg(enty, msgType); var pack = new BarrageMsgPack(enty.ToJson(), PackMsgType.礼物消息, e.Process); @@ -517,7 +524,7 @@ namespace BarrageGrab case CommandCode.DisplayConsole: { var display = (bool)cmdPack.Data; - AppRuntime.DisplayConsole(display); + AppRuntime.DisplayConsole(display); break; } } @@ -612,7 +619,7 @@ namespace BarrageGrab { public string Message { get; set; } - public ConsoleColor Color { get; set; } + public ConsoleColor Color { get; set; } public PackMsgType MsgType { get; set; } }