]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
直播流保存位置可自定义
authorqydysky <qydysky@foxmail.com>
Sat, 10 Apr 2021 00:23:21 +0000 (08:23 +0800)
committerqydysky <qydysky@foxmail.com>
Sat, 10 Apr 2021 00:23:21 +0000 (08:23 +0800)
F/api.go
Reply/F.go
Reply/Reply.go
demo/config/config_K_v.json

index 5369528a51a0c266a969de27fbfcd9b98474d085..3d637436dbdc1018a106c2d371e6af85e79743d7 100644 (file)
--- a/F/api.go
+++ b/F/api.go
@@ -1601,6 +1601,12 @@ type E_json struct{
 //调用记录
 var boot_F_x25Kn funcCtrl.FlashFunc//新的替代旧的
 
+func F_x25Kn_cancel() {
+       apilog.Base_add(`小心心`).L(`T: `,`取消`)
+       boot_F_x25Kn.Flash()//获取函数调用会话id
+       boot_F_x25Kn.UnFlash()
+}
+
 func F_x25Kn() {
        apilog := apilog.Base_add(`小心心`)
        if c.Wearing_FansMedal == 0{apilog.L(`I: `,`无粉丝牌,不获取`);return}
@@ -1629,7 +1635,8 @@ func F_x25Kn() {
                }
                if num == 24 {
                        Close(0)//关闭全部(0)浏览器websocket连接
-                       apilog.L(`I: `,`今天小心心已满!`);return
+                       apilog.L(`I: `,`今天小心心已满!`)
+                       return
                } else {
                        apilog.L(`I: `,`今天已有`,num,`个小心心,开始获取`)
                        defer apilog.L(`T: `,`退出`)
@@ -1696,7 +1703,7 @@ func F_x25Kn() {
                                        `Cookie`:p.Map_2_Cookies_String(Cookie),
                                },
                                PostStr:url.PathEscape(PostStr),
-                               Timeout:3,
+                               Timeout:5,
                                Retry:2,
                        });err != nil {
                                if !errors.Is(err, context.DeadlineExceeded) {
@@ -1735,7 +1742,8 @@ func F_x25Kn() {
                                        }
                                        if num == 24 {
                                                Close(0)//关闭全部(0)浏览器websocket连接
-                                               apilog.L(`I: `,`今天小心心已满!`);return
+                                               apilog.L(`I: `,`今天小心心已满!`)
+                                               return
                                        } else {
                                                apilog.L(`I: `,`获取了今天的第`,num,`个小心心`)
                                        }
@@ -1802,7 +1810,7 @@ func F_x25Kn() {
                                        `Cookie`:p.Map_2_Cookies_String(Cookie),
                                },
                                PostStr:url.PathEscape(PostStr),
-                               Timeout:3,
+                               Timeout:5,
                                Retry:2,
                        });err != nil {
                                if errors.Is(err, context.DeadlineExceeded) {
index e7619f05695c813a91f70b34874342869611b33d..2b1cc3124c3e71d6ba661191851db4bebf4db7d7 100644 (file)
@@ -8,12 +8,14 @@ import (
        "math"
        "time"
        "os/exec"
+    "path/filepath"
 
        c "github.com/qydysky/bili_danmu/CV"
        F "github.com/qydysky/bili_danmu/F"
        send "github.com/qydysky/bili_danmu/Send"
        "github.com/christopher-dG/go-obs-websocket"
        p "github.com/qydysky/part"
+       funcCtrl "github.com/qydysky/part/funcCtrl"
        msgq "github.com/qydysky/part/msgq"
        b "github.com/qydysky/part/buf"
        s "github.com/qydysky/part/signal"
@@ -193,6 +195,7 @@ type Saveflv struct {
        path string
        wait *s.Signal
        cancel *s.Signal
+       skipFunc funcCtrl.SkipFunc
 }
 
 var saveflv = Saveflv {
@@ -201,7 +204,7 @@ var saveflv = Saveflv {
 func init(){
        //使用带tag的消息队列在功能间传递消息
        c.Danmu_Main_mq.Pull_tag(msgq.FuncMap{
-               `saveflv`:func(data interface{})(bool){//舰长更新
+               `saveflv`:func(data interface{})(bool){
                        if saveflv.cancel.Islive() {
                                Saveflv_wait()
                        } else {
@@ -217,6 +220,15 @@ func init(){
 func Saveflvf(){
        l := c.Log.Base(`saveflv`)
 
+       //避免多次开播导致的多次触发
+       {
+               if saveflv.skipFunc.NeedSkip() {
+                       l.L(`T: `,`已存在实例`)
+                       return
+               }
+               defer saveflv.skipFunc.UnSet()
+       }
+
        qn, ok := c.K_v.LoadV("flv直播流清晰度").(float64)
        if !ok || qn < 0 {return}
 
@@ -247,7 +259,14 @@ func Saveflvf(){
                F.Get(`Live`)
                if len(c.Live)==0 {break}
 
-               saveflv.path = strconv.Itoa(c.Roomid) + "_" + time.Now().Format("2006_01_02_15-04-05-000")
+               if path,ok := c.K_v.LoadV("直播流保存位置").(string);ok{
+                       if path,err := filepath.Abs(path);err == nil{
+                               saveflv.path = path+"/"
+                       }
+               }
+               
+
+               saveflv.path += strconv.Itoa(c.Roomid) + "_" + time.Now().Format("2006_01_02_15-04-05-000")
 
                saveflv.wait = s.Init()
                saveflv.cancel = s.Init()
index e9dfdc19ebded2017ca0d24ac7a3ae318573386f..f140007210f1490ad29ddb173909af28c93fd3d0 100644 (file)
@@ -607,6 +607,9 @@ func (replyF) little_message_box(s string){
        }
        if type_item.Data.Msg != `` {
                msglog.L(`I: `, type_item.Data.Msg)
+               if strings.Contains(type_item.Data.Msg,`小心心`) && strings.Contains(type_item.Data.Msg,`上限`) {
+                               F.F_x25Kn_cancel()
+               }
        }
 }
 
index 9cf1068dfd897caa1ef9d680509147e0793e8b30..9b01944e160c0a835109dc8042cb808ed7bad941 100644 (file)
@@ -43,6 +43,7 @@
     "调用obs": false,
     "直播流清晰度-help": "清晰度可选-1:不保存 0:默认 10000:原画 800:4K 401:蓝光(杜比) 400:蓝光 250:超清 150:高清 80:流畅,无提供所选清晰度时,使用低一档清晰度",
     "flv直播流清晰度": 150,
+    "直播流保存位置": "./live",
     "ass-help": "只有保存直播流时才考虑生成ass",
     "生成Ass弹幕": true,
     "弹幕处理": "",