From: qydysky Date: Sat, 10 Apr 2021 00:23:21 +0000 (+0800) Subject: 直播流保存位置可自定义 X-Git-Tag: v0.5.9~1^2~32 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=a97541bda7b69f736544cb3ba56ef7465e962692;p=bili_danmu%2F.git 直播流保存位置可自定义 --- diff --git a/F/api.go b/F/api.go index 5369528..3d63743 100644 --- 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) { diff --git a/Reply/F.go b/Reply/F.go index e7619f0..2b1cc31 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -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() diff --git a/Reply/Reply.go b/Reply/Reply.go index e9dfdc1..f140007 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -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() + } } } diff --git a/demo/config/config_K_v.json b/demo/config/config_K_v.json index 9cf1068..9b01944 100644 --- a/demo/config/config_K_v.json +++ b/demo/config/config_K_v.json @@ -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, "弹幕处理": "",