From 3ff09a80d0db880998672c43e9c2a1eabd48dbe4 Mon Sep 17 00:00:00 2001 From: qydysky Date: Sun, 22 Nov 2020 08:40:10 +0800 Subject: [PATCH] =?utf8?q?=E8=90=A5=E6=94=B6=E7=BB=9F=E8=AE=A1=E5=90=AF?= =?utf8?q?=E5=8A=A8=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- F/api.go | 83 ++++++++++++++++++++++++++++++++++++++++++++++ Reply/Reply.go | 20 ++++++++--- bili_danmu.go | 18 ++++++++-- demo/config_F.json | 16 --------- 4 files changed, 114 insertions(+), 23 deletions(-) delete mode 100644 demo/config_F.json diff --git a/F/api.go b/F/api.go index aa40083..8a8b506 100644 --- 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 diff --git a/Reply/Reply.go b/Reply/Reply.go index 04bbb44..7112b1d 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -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...) diff --git a/bili_danmu.go b/bili_danmu.go index b4d41c5..0a65b28 100644 --- a/bili_danmu.go +++ b/bili_danmu.go @@ -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 index ea13ad6..0000000 --- a/demo/config_F.json +++ /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 -- 2.39.2