]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
营收统计启动前
authorqydysky <qydysky@foxmail.com>
Sun, 22 Nov 2020 00:40:10 +0000 (08:40 +0800)
committerqydysky <qydysky@foxmail.com>
Sun, 22 Nov 2020 00:40:10 +0000 (08:40 +0800)
F/api.go
Reply/Reply.go
bili_danmu.go
demo/config_F.json [deleted file]

index aa4008356e7737a5f73ffa1ae15dfba981fc84a0..8a8b5069004cb3aa9d5ad2addd51543d506aa846 100644 (file)
--- a/F/api.go
+++ b/F/api.go
@@ -351,4 +351,87 @@ func Get_face_src(uid string) (string) {
                return ""
        }
        return rface.(string) + `@58w_58h`
+}
+
+func (i *api) Get_OnlineGoldRank() {
+       if i.Uid == 0 || c.Roomid == 0 {
+               apilog.Base(1, "Get_OnlineGoldRank").E("i.Uid == 0 || c.Roomid == 0")
+               return
+       }
+       var session_roomid = c.Roomid
+       var self_loop func(page int)(score float64)
+       self_loop = func(page int)(score float64){
+               if page <= 0 || session_roomid != c.Roomid{return}
+               // apilog.Base(1, "self_loop").E(page)
+
+               req := p.Req()
+               if err := req.Reqf(p.Rval{
+                       Url:`https://api.live.bilibili.com/xlive/general-interface/v1/rank/getOnlineGoldRank?ruid=`+strconv.Itoa(i.Uid)+`&roomId=`+strconv.Itoa(c.Roomid)+`&page=`+strconv.Itoa(page)+`&pageSize=20`,
+                       Header:map[string]string{
+                               `Host`: `api.live.bilibili.com`,
+                               `User-Agent`: `Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0`,
+                               `Accept`: `application/json, text/plain, */*`,
+                               `Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`,
+                               `Accept-Encoding`: `gzip, deflate, br`,
+                               `Origin`: `https://live.bilibili.com`,
+                               `Connection`: `keep-alive`,
+                               `Pragma`: `no-cache`,
+                               `Cache-Control`: `no-cache`,
+                               `Referer`:"https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+                       },
+                       Timeout:3,
+                       Retry:2,
+               });err != nil {
+                       apilog.Base(1, "获取OnlineGoldRank").E(err)
+                       return
+               }
+               res := string(req.Respon)
+               if msg := p.Json().GetValFromS(res, "message");msg == nil || msg != "0" {
+                       apilog.Base(1, "获取OnlineGoldRank").E("message", msg)
+                       return
+               }
+               if onlineNum := p.Json().GetValFromS(res, "data.onlineNum");onlineNum == nil {
+                       apilog.Base(1, "获取onlineNum").E("onlineNum", onlineNum)
+                       return
+               } else {
+                       tmp_onlineNum := onlineNum.(float64)
+                       if tmp_onlineNum == 0 {
+                               apilog.Base(1, "获取tmp_onlineNum").E("tmp_onlineNum", tmp_onlineNum)
+                               return
+                       }
+
+                       if tmp_score_list := p.Json().GetArrayFrom(p.Json().GetValFromS(res, "data.OnlineRankItem"), "score");len(tmp_score_list) != 0 {
+                               for _,v := range tmp_score_list {
+                                       score += v.(float64)/10
+                               }
+                       }
+                       c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
+                               Class:`c.Rev_add`,
+                               Data:score,
+                       })
+
+                       if rank_list := p.Json().GetArrayFrom(p.Json().GetValFromS(res, "data.OnlineRankItem"), "userRank");len(rank_list) == 0 {
+                               apilog.Base(1, "获取 rank_list").E("rank_list", len(rank_list))
+                               return
+                       } else if rank_list[len(rank_list)-1].(float64) == tmp_onlineNum {
+                               // apilog.Base(1, "获取 rank_list").E("rank_list == tmp_onlineNum")
+                               return
+                       } else {
+                               p.Sys().Timeoutf(1)
+                               // apilog.Base(1, "获取page").E(page, score)
+                               self_loop(page+1)
+                               return
+                       }
+               }
+       }
+       // apilog.Base(1, "Get_OnlineGoldRank").E("start")
+
+       // apilog.Base(1, "获取score").E("score", self_loop(1))
+       self_loop(1)
+       apilog.Base(1, "获取score").E("以往营收获取成功")
+       // c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
+       //      Class:`c.Rev_add`,
+       //      Data:self_loop(1),
+       // })
+       return
 }
\ No newline at end of file
index 04bbb44bfcd4000ec594e81bb8a9024c84d96e2b..7112b1d4a7280260cd66edeffa1346ded4b6cdc2 100644 (file)
@@ -145,7 +145,10 @@ func (replyF) user_toast_msg(s string){
        }
        if price != nil {
                sh = append(sh, "¥", int(price.(float64)) / 1000)
-               c.Rev += price.(float64) / 1000
+               c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
+                       Class:`c.Rev_add`,
+                       Data:price.(float64) / 1000,
+               })
        }
        {//额外 ass
                Assf(fmt.Sprintln(sh...))
@@ -193,7 +196,10 @@ func (replyF) special_gift(s string){
        }
        if content != nil {
                sh = append(sh, "节奏风暴", content, "¥ 100")
-               c.Rev += 100
+               c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
+                       Class:`c.Rev_add`,
+                       Data:100,
+               })
        }
        {//额外
                Assf(fmt.Sprintln(sh...))
@@ -313,7 +319,10 @@ func (replyF) send_gift(s string){
        if total_coin != nil {
                allprice = int64(total_coin.(float64) / 1000)
                sh = append(sh, "¥", allprice)
-               c.Rev += total_coin.(float64) / 1000
+               c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
+                       Class:`c.Rev_add`,
+                       Data:total_coin.(float64) / 1000,
+               })
        }
 
        if len(sh) == 0 {return}
@@ -425,7 +434,10 @@ func (replyF) super_chat_message(s string){
        }
        if price != nil {
                sh = append(sh, "¥", price, "\n")
-               c.Rev += price.(float64)
+               c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
+                       Class:`c.Rev_add`,
+                       Data:price.(float64),
+               })
        }
        fmt.Println("====")
        fmt.Println(sh...)
index b4d41c52aff06f58c1d5fc5f11df9d612751ad1f..0a65b2845696ce9b943a3656548f66af6a0fa0bf 100644 (file)
@@ -59,9 +59,18 @@ func Demo(roomid ...int) {
                        )
                        for {
                                data,sig = c.Danmu_Main_mq.Pull(sig)
-                               if d,ok := data.(c.Danmu_Main_mq_item);!ok || d.Class != `change_room` {continue}
-                               c.Rev = 0 //营收
-                               change_room_chan <- true
+                               if d,ok := data.(c.Danmu_Main_mq_item);!ok {
+                                       continue
+                               } else {
+                                       switch d.Class {
+                                       case `change_room`:
+                                               c.Rev = 0 //营收
+                                               change_room_chan <- true
+                                       case `c.Rev_add`:
+                                               c.Rev += d.Data.(float64)
+                                       default:
+                                       }
+                               }
                        }
                }()
 
@@ -109,6 +118,9 @@ func Demo(roomid ...int) {
                                                c.Roomid = api.Roomid
                                                c.Live = api.Live
                                                c.Cookie = f
+                                               //获取过往营收
+                                               go api.Get_OnlineGoldRank()
+
                                                if p.Checkfile().IsExist("cookie.txt") {//附加功能 弹幕机
                                                        reply.Danmuji_auto(1)
                                                }
diff --git a/demo/config_F.json b/demo/config_F.json
deleted file mode 100644 (file)
index ea13ad6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "ShowRev":true,
-    "Gtk": true,
-    "Qtd": false,
-    "Saveflv": false,
-    "Ass": true,
-    "Obs": false,
-    "Autoban": false,
-    "Jiezou": true,
-    "Danmuji": true,
-    "Danmuji_auto": false,
-    "Autoskip": true,
-    "Lessdanmu": true,
-    "Moredanmu": false,
-    "Shortdanmu": true
-}
\ No newline at end of file