]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
营收相关
authorqydysky <qydysky@foxmail.com>
Sat, 12 Dec 2020 00:44:50 +0000 (08:44 +0800)
committerqydysky <qydysky@foxmail.com>
Sat, 12 Dec 2020 00:44:50 +0000 (08:44 +0800)
F/api.go
Reply/Reply.go
Reply/gtk.go
bili_danmu.go
demo/ui/2.glade

index d53ae62f0375f7a8b809291e4a36ca15281667c8..2d43a01268d4ef2099d664118d13acbf6f7a22c8 100644 (file)
--- a/F/api.go
+++ b/F/api.go
@@ -440,11 +440,13 @@ func (i *api) Get_OnlineGoldRank() {
        return
 }
 
+var guard_num_get_limit = p.Limit(1,1000,2000)//频率限制1次/1s,最大等待时间2s
 func (i *api) Get_guardNum() {
        if i.Uid == 0 || c.Roomid == 0 {
                apilog.Base(1, "Get_guardNum").E("i.Uid == 0 || c.Roomid == 0")
                return
        }
+       if guard_num_get_limit.TO() {return}//超额请求阻塞,超时将取消
 
        req := p.Req()
        if err := req.Reqf(p.Rval{
index 4eb5eb5bc2eacf2170913acc38ecb9b09897de07..5f37655efd9520c85250af4819c56a57e5f2d731 100644 (file)
@@ -125,12 +125,10 @@ func (replyF) user_toast_msg(s string){
                switch op_type.(float64) {
                case 1:
                        sh = append(sh, "购买了")
-                       c.GuardNum += 1
                case 2:
                        sh = append(sh, "续费了")
                case 3:
                        sh = append(sh, "自动续费了")
-                       c.GuardNum += 1
                default:
                        msglog.W(s)
                        sh = append(sh, op_type)
@@ -154,6 +152,9 @@ func (replyF) user_toast_msg(s string){
        }
        {//额外 ass
                Assf(fmt.Sprintln(sh...))
+               c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//使用连续付费的新舰长无法区分,刷新舰长数
+                       Class:`guard_update`,
+               })
        }
        fmt.Println("\n====")
        fmt.Println(sh...)
@@ -201,11 +202,7 @@ func (replyF) special_gift(s string){
                return
        }
        if content != nil {
-               sh = append(sh, "节奏风暴", content, "¥ 100")
-               c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
-                       Class:`c.Rev_add`,
-                       Data:float64(100),
-               })
+               sh = append(sh, "节奏风暴", content)
        }
        {//额外
                Assf(fmt.Sprintln(sh...))
@@ -332,6 +329,7 @@ func (replyF) send_gift(s string){
        }
 
        if len(sh) == 0 {return}
+       msglog.Base(1, "礼").Fileonly(true).I(sh...).Fileonly(false)
 
        //小于3万金瓜子
        if allprice < 30 {msglog.T(sh...);return}
@@ -345,8 +343,6 @@ func (replyF) send_gift(s string){
        // Gui_show("\n====")
        Gui_show(Itos(sh), "0gift")
        // Gui_show("====\n")
-       
-       msglog.Base(1, "礼").Fileonly(true).I(sh...).Fileonly(false)
 }
 
 //Msg-房间封禁信息
@@ -403,7 +399,7 @@ func (replyF) live(s string) {
                        go Saveflvf()
                }
                {
-                       c.Rev = 0 //营收
+                       c.Rev = 0.0 //营收
                        c.Liveing = true //直播i标志
                        c.Live_Start_Time = time.Now() //开播h时间
                }
index 3b1b45455177d9cf78e6b6e7366ab81ffa3d3814..8ab5829451e176ff414a6dc17a5d9053434efab4 100644 (file)
@@ -382,6 +382,7 @@ func Gtk_danmu() {
        application.Connect("activate", func() {
                go func(){
                        for danmu_win_running {
+                               time.Sleep(time.Second)
                                if len(Gtk_danmuChan) == 0 {continue}
                                for el := keep_list.Front(); el != nil && time.Now().After(el.Value.(time.Time));el = el.Next() {
                                        keep_list.Remove(el)
@@ -391,7 +392,6 @@ func Gtk_danmu() {
                                        y(<-Gtk_danmuChan,load_face(<-Gtk_danmuChan_uid))
                                        return true
                                })
-                               time.Sleep(time.Second)
                        }
                }()
 
index 4ea8799ecc8f01dfeb50d38e76535b1df2da6c24..a6ba32a4dbba96bceca7054d4629187e4ea3ac60 100644 (file)
@@ -32,25 +32,29 @@ func Demo(roomid ...int) {
        
                if _,ok := c.Default_qn[*live_qn]; ok{c.Live_qn = *live_qn}
 
-               var room = *groomid
-               if room == 0 && len(roomid) != 0 {
-                       room = roomid[0]
-               }
+               var exit_sign bool
+               var change_room_chan = make(chan bool,1)
 
-               fmt.Printf("输入房间号: ")
-               if room == 0 {
-                       _, err := fmt.Scanln(&room)
-                       if err != nil {
-                               danmulog.E("输入错误", err)
-                               return
+               go func(){
+                       var room = *groomid
+                       if room == 0 && len(roomid) != 0 {
+                               room = roomid[0]
                        }
-               } else {
-                       fmt.Print(strconv.Itoa(room), "\n")
-               }
-               c.Roomid = room
-
-               var exit_sign bool
-               var change_room_chan = make(chan bool)
+                       if room == 0 {
+                               fmt.Printf("输入房间号: ")
+                               _, err := fmt.Scanln(&room)
+                               if err != nil {
+                                       danmulog.E("输入错误", err)
+                                       return
+                               }
+                       } else {
+                               fmt.Print("房间号: ", strconv.Itoa(room), "\n")
+                       }
+                       if c.Roomid == 0 {
+                               c.Roomid = room
+                               change_room_chan <- true
+                       }
+               }()
 
                go func(){
                        var (
@@ -64,19 +68,23 @@ func Demo(roomid ...int) {
                                } else {
                                        switch d.Class {
                                        case `change_room`:
-                                               c.Rev = 0 //营收
+                                               c.Rev = 0.0 //营收
                                                c.Renqi = 1//人气置1
                                                change_room_chan <- true
                                        case `c.Rev_add`:
                                                c.Rev += d.Data.(float64)
                                        case `c.Renqi`:
-                                               c.Renqi = d.Data.(int)
+                                               if tmp,ok := d.Data.(int);ok{
+                                                       c.Renqi = tmp
+                                               }
                                        default:
                                        }
                                }
                        }
                }()
 
+               <-change_room_chan
+
                for !exit_sign {
                        //获取房间相关信息
                        api := F.New_api(c.Roomid).Get_host_Token().Get_live()
@@ -122,8 +130,29 @@ func Demo(roomid ...int) {
                                                c.Live = api.Live
                                                c.Cookie = f
                                                //获取过往营收 舰长数量
-                                               go api.Get_OnlineGoldRank()
-                                               go api.Get_guardNum()
+                                               // go api.Get_OnlineGoldRank()//高能榜显示的是在线观众的打赏
+
+                                               go func(){//订阅消息,以便刷新舰长数
+                                                       api.Get_guardNum()
+                                                       var (
+                                                               sig = c.Danmu_Main_mq.Sig()
+                                                               data interface{}
+                                                       )
+                                                       for {
+                                                               data,sig = c.Danmu_Main_mq.Pull(sig)
+                                                               if d,ok := data.(c.Danmu_Main_mq_item);!ok {
+                                                                       continue
+                                                               } else {
+                                                                       switch d.Class {
+                                                                       case `guard_update`:
+                                                                               go api.Get_guardNum()
+                                                                       case `change_room`:
+                                                                               return//换房时退出当前房间
+                                                                       default:
+                                                                       }
+                                                               }
+                                                       }
+                                               }()
 
                                                if p.Checkfile().IsExist("cookie.txt") {//附加功能 弹幕机
                                                        reply.Danmuji_auto(1)
index 097c471c06d756d92381710d7b0bfd2b70aac43a..fdbcac23a663ae71be796d662701efad941dae20 100644 (file)
@@ -54,6 +54,7 @@
                           <object class="GtkLabel">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
+                            <property name="tooltip_text" translatable="yes">每3s更新一次</property>
                             <property name="label" translatable="yes">直播时长</property>
                           </object>
                           <packing>
@@ -65,6 +66,7 @@
                           <object class="GtkLabel">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
+                            <property name="tooltip_text" translatable="yes">启动后的统计数据</property>
                             <property name="label" translatable="yes">营收</property>
                           </object>
                           <packing>
                           <object class="GtkLabel">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
+                            <property name="tooltip_text" translatable="yes">每半分钟更新一次</property>
                             <property name="label" translatable="yes">人气</property>
                           </object>
                           <packing>