- [x] GTK信息窗支持房间切换、弹幕格式化发送、时长统计
- [x] GTK弹幕窗支持自定义人/事件消息停留
-### 构建
+### 说明
本项目使用github action自动构建,构建过程详见[yml](https://github.com/qydysky/bili_danmu/blob/master/.github/workflows/go.yml)
-#### 语音
-调用tts需要ffplay,先行安装[ffmpeg](http://ffmpeg.org/download.html)
+#### 私信
+在登录后,可以使用私信
+私信配置在`demo/config/config_K_v.json`有说明
+#### 语音
+调用tts默认使用ffplay,安装[ffmpeg](http://ffmpeg.org/download.html)
+或使用其他程序:可在`demo/config/config_K_v.json`中编辑调用的程序及附加选项
+```
+config_K_v.json
+默认
+ "TTS_使用程序路径":"ffplay",
+ "TTS_使用程序参数":"-autoexit -nodisp"
+使用mpv
+ "TTS_使用程序路径":"mpv",
+ "TTS_使用程序参数":"--no-video"
+```
+release不编译tts,参考如下方法编译
```
编译命令
cd demo
go build -v -tags `tts` -o demo.exe -i main.go
```
-
+自定义响应的事件可在`demo/config/config_tts.json`中编辑
+```
+{D}:为tts内容
+key为demo/face下的文件名
+{
+ "0multi": "观众:{D}",
+ "29183321":"{D}"
+}
+```
#### 弹幕窗
构建gtk需要gtk3,先行安装[gtk](https://www.gtk.org/)
```
package reply
import (
- "fmt"
"net/url"
"strings"
p "github.com/qydysky/part"
var tts_limit = p.Limit(1,5000,15000)//频率限制1次/5s,最大等待时间15s
+var tts_log = c.Log.Base_add(`TTS`)
+
+var (
+ tts_prog = "ffplay"
+ tts_prog_set = "-autoexit -nodisp"
+)
+
func init(){
{//tts配置
buf := s.New()
for k,v := range buf.B {
tts_setting[k] = v.(string)
}
+ buf.Load("config/config_K_v.json")
+ for k,v := range buf.B {
+ if k == `TTS_使用程序路径` {
+ if tmp,ok := v.(string);ok && tmp != ``{
+ tts_prog = tmp
+ } else{tts_log.L(`E: `,`TTS_使用程序路径不是字符串或为空`)}
+ }else if k == `TTS_使用程序参数` {
+ if tmp,ok := v.(string);ok{
+ tts_prog_set = tmp
+ } else{tts_log.L(`E: `,`TTS_使用程序参数不是字符串`)}
+ }
+ }
}
go func(){
for{
func TTS(uid,msg string) {
if tts_limit.TO() {return}
- fmt.Println(`TTS:`, uid, msg)
+ tts_log.L(`I: `,uid, msg)
req := p.Req()
if v,ok := tts_setting[uid];ok{
msg = strings.ReplaceAll(v, "{D}", msg)
Retry:1,
SleepTime:500,
});err != nil {
- fmt.Println(`TTS:`, err)
+ tts_log.L(`E: `,err)
return
}
- p.Exec().Run(false, "ffplay", p.Sys().Cdir()+"/tts.mp3","-autoexit","-nodisp")
+ var prog = []string{}
+ prog = append(prog, p.Sys().Cdir()+"/tts.mp3")
+ prog = append(prog, strings.Split(tts_prog_set," ")...)
+ p.Exec().Run(false, tts_prog, prog...)
return
}
\ No newline at end of file
{
- "help":"额外私信对象为0时,所有额外私信都不会触发;私信为空字符串时,不触发",
+ "私信-help":"额外私信对象为0时,所有额外私信都不会触发;私信为空字符串时,不触发",
"额外私信对象":0,
"上舰私信":"",
"上舰私信(额外)":"[弹幕机测试 额外]:感谢上舰",
"弹幕私信":"",
- "弹幕私信(额外)":"[弹幕机测试 额外]:弹幕"
+ "弹幕私信(额外)":"[弹幕机测试 额外]:弹幕",
+
+ "TTS_配置-help":"将会运行[TTS_使用程序路径 获取的音频路径 TTS_使用程序参数]",
+ "TTS_使用程序路径":"ffplay",
+ "TTS_使用程序参数":"-autoexit -nodisp"
}
\ No newline at end of file