]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
优化流程,修复登录问题
authorqydysky <qydysky@foxmail.com>
Sat, 3 Apr 2021 08:55:08 +0000 (16:55 +0800)
committerqydysky <qydysky@foxmail.com>
Sat, 3 Apr 2021 08:55:08 +0000 (16:55 +0800)
F/api.go
Reply/F.go
bili_danmu.go
demo/config/config_K_v.json

index fc78f7968217471ce89c89aed868297b1fc33b5b..1e276df9db9f338664144247740c93e0c3f664b0 100644 (file)
--- a/F/api.go
+++ b/F/api.go
@@ -30,6 +30,12 @@ func Get(key string) {
        if api_limit.TO() {return}//超额请求阻塞,超时将取消
 
        var api_can_get = map[string][]func()([]string){
+               `Cookie`:[]func()([]string){//Cookie
+                       Get_cookie,
+               },
+               `Uid`:[]func()([]string){//用戶uid
+                       GetUid,
+               },
                `UpUid`:[]func()([]string){//主播uid
                        getInfoByRoom,
                        getRoomPlayInfo,
@@ -113,6 +119,9 @@ func Get(key string) {
                },
        }
        var check = map[string]func()(bool){
+               `Uid`:func()(bool){//用戶uid
+                       return c.Uid != 0
+               },
                `UpUid`:func()(bool){//主播uid
                        return c.UpUid != 0
                },
@@ -174,6 +183,9 @@ func Get(key string) {
                `CheckSwitch_FansMedal`:func()(bool){//切换粉丝牌
                        return true
                },
+               `Cookie`:func()(bool){//Cookie
+                       return true
+               },
        }
 
        if fList,ok := api_can_get[key];ok{
@@ -204,6 +216,17 @@ func Get(key string) {
        }
 }
 
+func GetUid() (missKey []string) {
+       if uid,ok := c.Cookie.LoadV(`DedeUserID`).(string);!ok{//cookie中无DedeUserID
+               missKey = append(missKey, `Cookie`)
+       } else if uid,e := strconv.Atoi(uid);e != nil{
+               missKey = append(missKey, `Cookie`)
+       } else {
+               c.Uid = uid
+       }
+       return
+}
+
 func Info(UpUid int) (info J.Info) {
        apilog := apilog.Base_add(`Info`)
        if api_limit.TO() {return}//超额请求阻塞,超时将取消
@@ -935,10 +958,25 @@ func Get_Version() (missKey []string) {
 var boot_Get_cookie funcCtrl.FlashFunc//新的替代旧的
 
 //扫码登录
-func Get_cookie() {
-       
+func Get_cookie() (missKey []string) {
+       if v,ok := c.K_v.LoadV(`扫码登录`).(bool);!ok || !v {return}
+
        apilog := apilog.Base_add(`获取Cookie`)
        
+       if p.Checkfile().IsExist("cookie.txt") {//读取cookie文件
+               if cookieString := string(CookieGet());cookieString != ``{
+                       for k,v := range p.Cookies_String_2_Map(cookieString){//cookie存入全局变量syncmap
+                               c.Cookie.Store(k, v)
+                       }
+                       if miss := CookieCheck([]string{
+                               `bili_jct`,
+                               `DedeUserID`,
+                       });len(miss) == 0 {
+                               return
+                       }
+               }
+       }
+
        //获取id
        id := boot_Get_cookie.Flash()
        defer boot_Get_cookie.UnFlash()
@@ -1112,6 +1150,7 @@ func Get_cookie() {
                        return
                }
        }
+       return
 }
 
 //短信登录
index ce0224353ff3efe1624942ae8fb2993226f25056..7e3ab23f705ae121b8812ad407fd2d5dd2a32a5f 100644 (file)
@@ -256,7 +256,6 @@ func Saveflvf(){
                go func(){
                        saveflv.cancel.Wait()
                        rr.Close()
-                       p.FileMove(saveflv.path+".flv.dtmp", saveflv.path+".flv")
                }()
 
 
@@ -306,6 +305,7 @@ func Saveflvf(){
 
                l.L(`I: `,"结束")
                Ass_f("", time.Now())//ass
+               p.FileMove(saveflv.path+".flv.dtmp", saveflv.path+".flv")
                if !saveflv.cancel.Islive() {break}//cancel
                /*
                        Saveflv需要外部组件
index ce65378acd13072a6b9596f5c6dea77110ab51cb..d3c4015724c089922458297c277e9e5e3f435a31 100644 (file)
@@ -111,53 +111,10 @@ func Demo(roomid ...int) {
                //ctrl+c退出
                signal.Notify(interrupt, os.Interrupt)
 
-               //获取cookies
-               {
-                       var get_cookie = func(){
-                               danmulog.L(`I: `, "未检测到cookie.txt,如果需要登录请在本机打开以下网址扫码登录,不需要请忽略")
-                               //获取cookie
-                               F.Get_cookie()
-                               //验证cookie
-                               if missKey := F.CookieCheck([]string{
-                                       `bili_jct`,
-                                       `DedeUserID`,
-                               });len(missKey) == 0 {
-                                       danmulog.L(`I: `,"你已登录,刷新房间!")
-                                       //刷新
-                                       c.Danmu_Main_mq.Push_tag(`change_room`,nil)
-                               }
-                       }
-                       
-                       if !p.Checkfile().IsExist("cookie.txt") {//读取cookie文件
-                               go get_cookie()
-                               p.Sys().Timeoutf(3)
-                       } else {
-                               
-                               cookieString := string(F.CookieGet())
-
-                               if cookieString == `` {//cookie.txt为空
-                                       danmulog.L(`T: `, `cookie.txt为空`)
-                                       go get_cookie()
-                                       p.Sys().Timeoutf(3)
-                               } else {
-                                       for k,v := range p.Cookies_String_2_Map(cookieString){//cookie存入全局变量syncmap
-                                               c.Cookie.Store(k, v)
-                                       }
-                                       if uid,ok := c.Cookie.LoadV(`DedeUserID`).(string);!ok{//cookie中无DedeUserID
-                                               danmulog.L(`T: `, `读取cookie错误,无DedeUserID`)
-                                               go get_cookie()
-                                               p.Sys().Timeoutf(3)
-                                       } else if uid,e := strconv.Atoi(uid);e != nil{
-                                               danmulog.L(`E: `, e)
-                                               go get_cookie()
-                                               p.Sys().Timeoutf(3)
-                                       } else {
-                                               c.Uid = uid
-                                       }
-                               }
-                       }
-               }
-               
+               //获取cookie
+               F.Get(`Cookie`)
+               //获取uid
+               F.Get(`Uid`)
                //命令行操作 切换房间 发送弹幕
                go F.Cmd()
                //兑换硬币
index 9711187d6f7cf35ad8f2625ac1c605a82b31ea54..740aae62c602f0e4d92f19e8c5f4faf83768f677 100644 (file)
@@ -33,7 +33,6 @@
     "其他":"",
     "发送还有几天过期的礼物":3,
     "保持牌子亮着":true,
-    "扫码登录自动打开标签页":true,
     "日志显示":["I: ","W: ","E: "],
     "统计营收":true,
     "Gtk弹幕窗":true,
@@ -58,5 +57,9 @@
 
     "cookie保护":"下填路径",
     "cookie加密公钥":"public.pem",
-    "cookie解密私钥":"private.pem"
+    "cookie解密私钥":"private.pem",
+
+    "扫码登录-help":"当扫码登陆设置为true时,每次启动会检查,若失败则会要求登录",
+    "扫码登录":true,
+    "扫码登录自动打开标签页":true
 }
\ No newline at end of file