]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
tts
authorqydysky <qydysky@foxmail.com>
Sun, 13 Dec 2020 12:12:21 +0000 (20:12 +0800)
committerqydysky <qydysky@foxmail.com>
Sun, 13 Dec 2020 12:12:21 +0000 (20:12 +0800)
Reply/tts.go [new file with mode: 0644]

diff --git a/Reply/tts.go b/Reply/tts.go
new file mode 100644 (file)
index 0000000..5f79df6
--- /dev/null
@@ -0,0 +1,58 @@
+//+build tts
+
+package reply
+
+import (
+       "log"
+       "net/url"
+       p "github.com/qydysky/part"
+)
+
+var tts_on = map[string]bool{
+       "0buyguide":true,
+       "0gift":true,
+       "0superchat":true,
+}
+var tts_List = make(chan interface{},20)
+
+var tts_limit = p.Limit(1,5000,15000)//频率限制1次/5s,最大等待时间15s
+
+func init(){
+       go func(){
+               var (
+                       sig = Danmu_mq.Sig()
+                       data interface{}
+               )
+               go func(){
+                       for{
+                               e := <- tts_List
+                               TTS(e.(Danmu_mq_t).uid, e.(Danmu_mq_t).msg)
+                       }
+               }()
+
+               for {
+                       data,sig = Danmu_mq.Pull(sig)
+                       if v,ok := tts_on[data.(Danmu_mq_t).uid];!ok || !v {continue}
+                       tts_List <- data
+               }
+       }()
+}
+
+
+func TTS(uid,msg string) {
+       if tts_limit.TO() {return}
+       log.Println(`TTS:`, uid, msg)
+       req := p.Req()
+       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`,
+               Timeout:3,
+               Retry:1,
+               SleepTime:500,
+       });err != nil {
+               log.Println(`TTS:`, err)
+               return
+       }
+       p.Exec().Run(false, "ffplay", p.Sys().Cdir()+"/tts.mp3","-autoexit","-nodisp")
+       return
+}
\ No newline at end of file