From a2cbcd69af14a55b36522565295f1b99a52f8930 Mon Sep 17 00:00:00 2001 From: qydysky Date: Thu, 18 Feb 2021 22:02:06 +0800 Subject: [PATCH] =?utf8?q?=E5=A4=A7=E8=88=AA=E6=B5=B7=E8=BF=9B=E5=85=A5?= =?utf8?q?=E4=B8=8D=E6=8F=90=E7=A4=BA=E4=BF=AE=E6=AD=A3=20tts=E8=AE=BE?= =?utf8?q?=E7=BD=AEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- README.md | 110 ++++++++++++++++++++++++++++-------- Reply/Msg.go | 4 +- Reply/Reply.go | 40 ++++++++++--- Reply/tts.go | 10 +++- demo/config/config_tts.json | 6 +- 5 files changed, 132 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 0521708..a5af3cc 100644 --- a/README.md +++ b/README.md @@ -58,9 +58,11 @@ golang go version go1.15 linux/amd64 - [x] 排行榜 #### 当前支持功能 -以下内容可能过时,点击查看[当前支持功能](https://github.com/qydysky/bili_danmu/blob/master/Reply/F.go#L16) -- [x] 签到 -- [x] 获取小心心 +以下内容可能过时,点击查看[当前支持功能(旧)](https://github.com/qydysky/bili_danmu/blob/master/Reply/F.go#L16),[功能配置(新)](https://github.com/qydysky/bili_danmu/blob/maintenance/demo/config/config_K_v.json) +- [x] 银瓜子自动兑换硬币(日期更迭会触发) +- [x] 可选有无粉丝牌发进房弹幕(有粉丝牌每日首条弹幕有经验)(日期更迭会触发) +- [x] 签到(日期更迭会触发) +- [x] 有粉丝牌获取小心心(日期更迭会触发) - [x] 自定义私信 - [x] 自动切换粉丝牌 - [x] 扫码登录 @@ -161,31 +163,61 @@ go build -v -tags `gtk` -o demo.exe -i main.go 仅对显示效果进行处理,而不处理输出到日志。更多设置见`demo/config/config_F.json` -### demo -前往[releases](https://github.com/qydysky/bili_danmu/releases)页下载对应系统版本。解压后进入`demo`目录(文件夹),运行`demo.run`(`demo.exe`)。 +### 运行 +#### 方法 +1. 前往[releases](https://github.com/qydysky/bili_danmu/releases)页下载对应系统版本。解压后进入`demo`目录(文件夹),运行`demo.run`(`demo.exe`)。 ``` -./demo.run -q 清晰度 -r 房间ID +./demo.run [-q 清晰度 -r 房间ID] ``` -> 清晰度可取[数值](https://github.com/qydysky/bili_danmu/blob/cf52498a88e885fb66dbc94fb8652cb6fa35fb26/CV/Var.go#L37) -> 弹幕及礼物会记录于danmu.log中 +2. clone本项目。进入`demo`目录(文件夹),运行: +``` +go run [-tags "gtk"] main.go [-q 清晰度 -r 房间ID] +``` -**部分功能需要在`demo`目录(文件夹)下放置`cookie.txt`才可用** +#### 注意事项 +* 其中[]内的内容为可选项 +* 清晰度可取[数值](https://github.com/qydysky/bili_danmu/blob/cf52498a88e885fb66dbc94fb8652cb6fa35fb26/CV/Var.go#L37) +* 法2的golang需1.15并建议使用最新提交 +* 弹幕及礼物会记录于danmu.log中 +* 部分功能(如获取小心心、签到、发送弹幕、获取原画等)**需要在`demo`目录(文件夹)下放置`cookie.txt`才可用** 或 **运行时按提示使用扫码登录成功后才可用(登录信息会保存在`demo/cookie.txt`中)** ### 效果展示 以下内容可能过时,以实际运行为准 -- 命令窗口(以下为截取) -``` -$ go run main.go -输入房间号: 213 -INFO: 2020/09/16 16:48:11 [bili_danmu.go 测试] [连接到房间 213] -INFO: 2020/09/16 16:48:11 [bili_danmu.go 测试] [连接 wss://tx-sh-live-comet-01.chat.bilibili.com/sub] -INFO: 2020/09/16 16:48:11 [bili_danmu.go 测试] [已连接到房间 213] -INFO: 2020/09/16 16:48:11 [bili_danmu.go 测试] [开始心跳] -``` + +#### 命令窗口(以下为截取) ``` -//大航海进入 ->>> 欢迎 舰长 茶摊儿在森林喝碗山海 进入直播间 +//启动 +qydysky@DESKTOP-5CV1EFA:~/程序/git/go/src/github.com/qydysky/bili_danmu/demo$ go run -tags "gtk" main.go -r 21320551 +I: 2021/02/18 20:33:09 api 小心心加密 [如需加密,会自动打开 http://127.0.0.1:33673] +I: 2021/02/18 20:33:09 api 小心心加密 [启动] +PID:14544 +房间号: 21320551 +T: 2021/02/18 20:33:09 api 新建 [ok] +T: 2021/02/18 20:33:09 api 获取房号 [获取房号] +T: 2021/02/18 20:33:10 api LIVE_BUVID [获取LIVE_BUVID] +I: 2021/02/18 20:33:10 api LIVE_BUVID [存在] +T: 2021/02/18 20:33:11 api 获取Token [ok] +I: 2021/02/18 20:33:13 api 获取直播流 [轮播中] +T: 2021/02/18 20:33:13 api 银瓜子=>硬币 [银瓜子=>硬币] +I: 2021/02/18 20:33:15 api 银瓜子=>硬币 [现在有银瓜子 540 个] +W: 2021/02/18 20:33:15 api 银瓜子=>硬币 [当前银瓜子数量不足] +T: 2021/02/18 20:33:15 api 签到 [签到] +I: 2021/02/18 20:33:19 api 获取客户版本 [api version 2.6.25] +I: 2021/02/18 20:33:21 api 获取热门榜 [热门榜: 虚拟主播 50+] +I: 2021/02/18 20:33:23 bilidanmu Demo [连接到房间 21320551] +I: 2021/02/18 20:33:23 bilidanmu Demo [连接 wss://tx-bj-live-comet-02.chat.bilibili.com/sub] +T: 2021/02/18 20:33:23 api 小心心 [获取小心心] +I: 2021/02/18 20:33:23 bilidanmu Demo [已连接到房间 乙女音Official ( 21320551 )] +I: 2021/02/18 20:33:23 bilidanmu Demo [【b限】学《巴啦啦小魔仙》] +I: 2021/02/18 20:33:24 bilidanmu Demo [获取人气] +T: 2021/02/18 20:33:25 api 礼物列表 [获取礼物列表] +I: 2021/02/18 20:33:27 api 获取舰长数 [舰长数获取成功 471] +I: 2021/02/18 20:33:27 弹幕发送 [发送 至 21320551] +I: 2021/02/18 20:33:27 功能 [营收 ¥0.00] + +I: 2021/02/18 20:33:29 api 礼物列表 [成功] +I: 2021/02/18 20:33:29 api 小心心 [今天小心心已满!] ``` ``` //普通弹幕 @@ -195,9 +227,13 @@ INFO: 2020/09/16 16:48:11 [bili_danmu.go 测试] [开始心跳] 吓人 ``` ``` +//大航海 +>>> 欢迎舰长 Mana_单推... 进入直播间 +``` +``` //礼物 ==== -孤单猫与淋雨猪 投喂 1314 x 辣条 ( 131400 x 金瓜子 ) +超级角击 投喂 1 个 摩天轮 ==== ``` ``` @@ -212,9 +248,10 @@ INFO: 2020/09/16 16:48:11 [bili_danmu.go 测试] [开始心跳] ``` //SC ==== -SC: 吹舞火 ¥ 30 -我旁边的一万是幻觉吗? -私の隣の一万は幻ですか? +SC: 凪穗 + +有了OTO能量,我们才能够坚强,prprpr +OTOエネルギーがあれば、私たちは強くなれる。prprprpr ==== ``` ``` @@ -228,7 +265,32 @@ INFO: 2020/11/20 15:40:15 [弹幕发送] [发送 [你知道么] 至 394988] INFO: 2020/11/20 15:42:38 [弹幕发送] [发送 11111111111111111111 至 394988] 11111111111111111111 ``` +``` +//其他会出现在命令行的信息 +//热门榜 +I: 2021/02/18 14:59:00 Msg 房 [热门榜 虚拟 4] +//人气 +I: 2021/02/18 14:58:51 Reply 人气 [当前人气 450869] +//营收 +I: 2021/02/18 14:58:24 功能 [营收 ¥247.80] +//语音 +I: 2021/02/18 14:59:00 TTS [0superchat SC: 三得笠·阿克曼茶 8888888 天才oto天才 ] +``` ctrl+c退出,会同时追加记录到文件danmu.log中(文件记录完整信息,不会减少附加功能作用的弹幕) + +#### danmu.log +基本同命令行显示,不同下列: +``` +//弹幕 上述合并、忽略都不会起作用 +I: 2021/02/18 07:24:55 Msg [从天上掉下来的骚年 : 秀才] +//礼物 超过设定限额的将会在命令行中显示,级别为I +T: 2021/02/18 07:30:30 Msg 礼 [正道的光博航同志 投喂 1 个 上上签 ¥1.0] +I: 2021/02/18 14:52:31 Msg 礼 [三千千千千千千 投喂 1 个 爱之魔力 ¥28.0] +//sc +I: 2021/02/18 14:40:54 Msg 礼 [SC: 加拉入我心 ¥ 30 关注了乙女音,我才能够得到快乐 乙女音符に注目してこそ、私は幸せになれるのです。] +I: 2021/02/18 21:48:49 Msg 房 [欢迎舰长 Mana_单推... 进入直播间] +``` + - 流保存以及弹幕ass ``` 结束后会保存为 diff --git a/Reply/Msg.go b/Reply/Msg.go index bc347b9..6639af9 100644 --- a/Reply/Msg.go +++ b/Reply/Msg.go @@ -60,7 +60,7 @@ var Msg_map = map[string]func(replyF, string) { "WIN_ACTIVITY":replyF.win_activity,//活动 "SPECIAL_GIFT":replyF.special_gift,//节奏风暴 "GUARD_BUY":nil,//replyF.guard_buy,//大航海购买 - "WELCOME_GUARD":replyF.welcome_guard,//大航海进入 + "WELCOME_GUARD":nil,//replyF.welcome_guard,//大航海进入 ?已废弃? "DANMU_MSG":replyF.danmu,//弹幕 "ROOM_CHANGE":replyF.room_change,//房间信息分区改变 "ROOM_SILENT_OFF":replyF.roomsilent,//禁言结束 @@ -74,7 +74,7 @@ var Msg_map = map[string]func(replyF, string) { "SUPER_CHAT_MESSAGE":nil,//replyF.super_chat_message,//SC "SUPER_CHAT_MESSAGE_JPN":replyF.super_chat_message,//SC "PANEL":nil,//replyF.panel,//排行榜 被HOT_RANK_CHANGED替代 - "ENTRY_EFFECT":nil,//replyF.entry_effect,//进入特效 + "ENTRY_EFFECT":replyF.entry_effect,//进入特效 "ROOM_REAL_TIME_MESSAGE_UPDATE":nil,//replyF.roominfo,//粉丝数 } diff --git a/Reply/Reply.go b/Reply/Reply.go index bb52536..260c052 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -4,6 +4,7 @@ import ( "fmt" "time" "bytes" + "strings" "strconv" "compress/zlib" "encoding/json" @@ -604,18 +605,41 @@ func (replyF) messagebox_user_medal_change(s string){ } } -//Msg-进入特效,大多为大航海进入,信息少,使用welcome_guard替代 +//Msg-进入特效 func (replyF) entry_effect(s string){ - msglog := msglog.Base_add("房").Log_show_control(false) - if copy_writing := p.Json().GetValFromS(s, "data.copy_writing");copy_writing == nil { - msglog.L(`E: `, "copy_writing", copy_writing) - return - } else { - msglog.L(`I: `, copy_writing) - fmt.Println(copy_writing) + var res struct{ + Data struct{ + Copy_writing string `json:"copy_writing"` + } `json:"data"` + } + if e := json.Unmarshal([]byte(s), &res);e != nil { + msglog.L(`E: `, e) + } + //处理特殊字符 + copy_writing := strings.ReplaceAll(res.Data.Copy_writing, `<%`, ``) + copy_writing = strings.ReplaceAll(copy_writing, `%>`, ``) + + img := "0default" + if strings.Contains(copy_writing, `总督`) { + img = "0level1" + } else if strings.Contains(copy_writing, `提督`) { + img = "0level2" + } else if strings.Contains(copy_writing, `舰长`) { + img = "0level3" } + {//语言tts + c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{//传入消息队列 + uid:img, + msg:fmt.Sprintln(copy_writing), + }) + } + fmt.Print(">>> ") + fmt.Println(copy_writing) + Gui_show(copy_writing, img) + + msglog.Base_add("房").Log_show_control(false).L(`I: `, copy_writing) } //Msg-房间禁言 diff --git a/Reply/tts.go b/Reply/tts.go index 85c44bc..f1ee2b8 100644 --- a/Reply/tts.go +++ b/Reply/tts.go @@ -75,11 +75,15 @@ func init(){ func TTS(uid,msg string) { if tts_limit.TO() {return} + + v,ok := tts_setting[uid] + if !ok || v == ``{return} + tts_log.L(`I: `,uid, strings.ReplaceAll(msg, "\n", " ")) + + msg = strings.ReplaceAll(v, "{D}", msg) + req := p.Req() - if v,ok := tts_setting[uid];ok{ - msg = strings.ReplaceAll(v, "{D}", msg) - } if err := req.Reqf(p.Rval{ Url:`https://fanyi.baidu.com/gettts?lan=zh&text=`+ url.QueryEscape(msg) +`&spd=5&source=web`, SaveToPath:p.Sys().Cdir()+`/tts.mp3`, diff --git a/demo/config/config_tts.json b/demo/config/config_tts.json index dfaf7ca..e9e05d1 100644 --- a/demo/config/config_tts.json +++ b/demo/config/config_tts.json @@ -1,7 +1,11 @@ { + "help":"空字符串将不触发,{D}会被替换", "0buyguide": "感谢{D}", "0gift": "感谢{D}", "0superchat": "感谢{D}", "0multi": "观众:{D}", - "0rank":"{D}" + "0rank":"{D}", + "0level1":"{D}", + "0level2":"", + "0level3":"" } \ No newline at end of file -- 2.39.2