//调用记录
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}
}
if num == 24 {
Close(0)//关闭全部(0)浏览器websocket连接
- apilog.L(`I: `,`今天小心心已满!`);return
+ apilog.L(`I: `,`今天小心心已满!`)
+ return
} else {
apilog.L(`I: `,`今天已有`,num,`个小心心,开始获取`)
defer apilog.L(`T: `,`退出`)
`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) {
}
if num == 24 {
Close(0)//关闭全部(0)浏览器websocket连接
- apilog.L(`I: `,`今天小心心已满!`);return
+ apilog.L(`I: `,`今天小心心已满!`)
+ return
} else {
apilog.L(`I: `,`获取了今天的第`,num,`个小心心`)
}
`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) {
"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"
path string
wait *s.Signal
cancel *s.Signal
+ skipFunc funcCtrl.SkipFunc
}
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 {
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}
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()
}
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()
+ }
}
}
"调用obs": false,
"直播流清晰度-help": "清晰度可选-1:不保存 0:默认 10000:原画 800:4K 401:蓝光(杜比) 400:蓝光 250:超清 150:高清 80:流畅,无提供所选清晰度时,使用低一档清晰度",
"flv直播流清晰度": 150,
+ "直播流保存位置": "./live",
"ass-help": "只有保存直播流时才考虑生成ass",
"生成Ass弹幕": true,
"弹幕处理": "",