score += v.(float64)/10
}
}
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
- Class:`c.Rev_add`,
- Data:score,
- })
+ //传入消息队列
+ c.Danmu_Main_mq.Push_tag(`c.Rev_add`,score)
if rank_list := p.Json().GetArrayFrom(p.Json().GetValFromS(res, "data.OnlineRankItem"), "userRank");rank_list == nil {
apilog.Base(1, "获取 rank_list").E("rank_list", len(rank_list))
}
}
-func (i *api) Get_cookie() {
+func Get_cookie() {
if api_limit.TO() {return}//超额请求阻塞,超时将取消
var img_url string
uname := p.Json().GetValFromS(s, "data.uname");
if v,ok := uname.(string);ok {
{//语言tts
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`tts`,
- Data:Danmu_mq_t{
- uid:`0follow`,
- msg:fmt.Sprint(v + `关注了直播间`),
- },
+ c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{
+ uid:`0follow`,
+ msg:fmt.Sprint(v + `关注了直播间`),
})
}
Gui_show(v + `关注了直播间`,`0follow`)
}
if price != nil {
sh_log = append(sh, "¥", int(price.(float64)) / 1000)//不在界面显示价格
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
- Class:`c.Rev_add`,
- Data:price.(float64) / 1000,
- })
+ c.Danmu_Main_mq.Push_tag(`c.Rev_add`,price.(float64) / 1000)
}
{//语言tts
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`tts`,
- Data:Danmu_mq_t{
- uid:`0buyguide`,
- msg:fmt.Sprint(sh...),
- },
+ c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{//传入消息队列
+ uid:`0buyguide`,
+ msg:fmt.Sprint(sh...),
})
}
{//额外 ass
Assf(fmt.Sprintln(sh...))
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//使用连续付费的新舰长无法区分,刷新舰长数
- Class:`guard_update`,
- })
+ c.Danmu_Main_mq.Push_tag(`guard_update`,nil)//使用连续付费的新舰长无法区分,刷新舰长数
}
fmt.Println("\n====")
fmt.Println(sh...)
//HeartBeat-心跳用来传递人气值
func (replyF) heartbeat(s int){
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`c.Renqi`,
- Data:s,
- })
+ c.Danmu_Main_mq.Push_tag(`c.Renqi`,s)//使用连续付费的新舰长无法区分,刷新舰长数
if s == 1 {return}//人气为1,不输出
heartlog.I("当前人气", s)
}
sh = append(sh, username, "进入直播间")
}
{//语言tts
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`tts`,
- Data:Danmu_mq_t{
- uid:img,
- msg:fmt.Sprintln(sh...),
- },
+ c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{//传入消息队列
+ uid:img,
+ msg:fmt.Sprintln(sh...),
})
}
fmt.Print(">>> ")
if total_coin != nil {
allprice = total_coin.(float64) / 1000
sh_log = append(sh, fmt.Sprintf("¥%.1f",allprice))//不在界面显示价格
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
- Class:`c.Rev_add`,
- Data:allprice,
- })
+ c.Danmu_Main_mq.Push_tag(`c.Rev_add`,allprice)
}
if len(sh) == 0 {return}
//小于3万金瓜子
if allprice < 30 {msglog.T(sh...);return}
{//语言tts
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`tts`,
- Data:Danmu_mq_t{
- uid:`0gift`,
- msg:fmt.Sprintln(sh...),
- },
+ c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{//传入消息队列
+ uid:`0gift`,
+ msg:fmt.Sprintln(sh...),
})
}
{//额外
if price != nil {
sh = append(sh, "\n")//界面不显示价格
logg = append(logg, "¥", price)
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//传入消息队列
- Class:`c.Rev_add`,
- Data:price.(float64),
- })
+ c.Danmu_Main_mq.Push_tag(`c.Rev_add`,price.(float64))
}
fmt.Println("====")
fmt.Println(sh...)
logg = append(logg, message)
}
{//语言tts
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`tts`,
- Data:Danmu_mq_t{
- uid:`0superchat`,
- msg:fmt.Sprintln(sh...),
- },
+ c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{//传入消息队列
+ uid:`0superchat`,
+ msg:fmt.Sprintln(sh...),
})
}
if message_jpn != nil && message.(string) != message_jpn.(string) && message_jpn.(string) != "" {
}
{//语言tts
if len(m) > 1 {
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`tts`,
- Data:Danmu_mq_t{
- uid:m[1],
- msg:msg,
- },
+ c.Danmu_Main_mq.Push_tag(`tts`,Danmu_mq_t{//传入消息队列
+ uid:m[1],
+ msg:msg,
})
}
}
uid := ""
if len(m) > 1 {uid = m[1]}
- Danmu_mq.Push(Danmu_mq_t{
+ Danmu_mq.Push_tag(`danmu`,Danmu_mq_t{
uid:uid,
msg:m[0],
})
func init(){
if!IsOn("Gtk") {return}
- go func(){
- go Gtk_danmu()
- var (
- sig = Danmu_mq.Sig()
- data interface{}
- )
- for {
- data,sig = Danmu_mq.Pull(sig)
- Gtk_danmuChan_uid <- data.(Danmu_mq_t).uid
+ go Gtk_danmu()
+ //使用带tag的消息队列在功能间传递消息
+ Danmu_mq.Pull_tag(map[string]func(interface{})(bool){
+ `danmu`:func(data interface{})(bool){//弹幕
+ Gtk_danmuChan_uid <- data.(Danmu_mq_t).uid
Gtk_danmuChan <- data.(Danmu_mq_t).msg
- }
- }()
+ return false
+ },
+ })
}
func Gtk_danmu() {
y(`输入错误`,load_face("0room"))
} else {
c.Roomid = i
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{
- Class:`change_room`,
- })
+ c.Danmu_Main_mq.Push_tag(`change_room`,nil)
}
} else {
y(`房间号输入为空`,load_face("0room"))
}
}
go func(){
- go func(){
- for{
- e := <- tts_List
- TTS(e.(Danmu_mq_t).uid, e.(Danmu_mq_t).msg)
- }
- }()
-
- //消息队列接收tts类消息,并传送到TTS朗读
- 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 `tts`:
- if _,ok := tts_setting[d.Data.(Danmu_mq_t).uid];!ok {continue}
- tts_List <- d.Data
- default:
- }
- }
+ for{
+ e := <- tts_List
+ TTS(e.(Danmu_mq_t).uid, e.(Danmu_mq_t).msg)
}
}()
+
+ //消息队列接收tts类消息,并传送到TTS朗读
+ //使用带tag的消息队列在功能间传递消息
+ c.Danmu_Main_mq.Pull_tag(map[string]func(interface{})(bool){
+ `tts`:func(data interface{})(bool){//tts
+ if _,ok := tts_setting[data.(Danmu_mq_t).uid];ok {
+ tts_List <- data
+ }
+ return false
+ },
+ })
}
change_room_chan <- true
}
}()
-
- go func(){
- 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 `change_room`:
- c.Rev = 0.0 //营收
- c.Renqi = 1//人气置1
- c.GuardNum = 0//舰长数
- c.Note = ``//分区排行
- c.Uname = ``//主播id
- c.Title = ``
- reply.Saveflv_wait()//停止保存直播流
- change_room_chan <- true
- case `c.Rev_add`:
- c.Rev += d.Data.(float64)
- case `c.Renqi`:
- if tmp,ok := d.Data.(int);ok{
- c.Renqi = tmp
- }
- default:
- }
+
+ //使用带tag的消息队列在功能间传递消息
+ c.Danmu_Main_mq.Pull_tag(map[string]func(interface{})(bool){
+ `change_room`:func(data interface{})(bool){//房间改变
+ c.Rev = 0.0 //营收
+ c.Renqi = 1//人气置1
+ c.GuardNum = 0//舰长数
+ c.Note = ``//分区排行
+ c.Uname = ``//主播id
+ c.Title = ``
+ reply.Saveflv_wait()//停止保存直播流
+ change_room_chan <- true
+ return false
+ },
+ `c.Rev_add`:func(data interface{})(bool){//收入
+ c.Rev += data.(float64)
+ return false
+ },
+ `c.Renqi`:func(data interface{})(bool){//人气更新
+ if tmp,ok := data.(int);ok{
+ c.Renqi = tmp
}
- }
- }()
+ return false
+ },
+ })
<-change_room_chan
} else {
danmulog.I("未检测到cookie.txt,如果需要登录请在本机打开以下网址扫码登录,不需要请忽略")
go func(){//获取cookie
- F.New_api(c.Roomid).Get_cookie()
+ F.Get_cookie()
if c.Cookie != `` {
danmulog.I("你已登录,刷新房间!")
- c.Danmu_Main_mq.Push(c.Danmu_Main_mq_item{//刷新
- Class:`change_room`,
- })
+ //刷新
+ c.Danmu_Main_mq.Push_tag(`change_room`,nil)
}
}()
p.Sys().Timeoutf(3)
//获取过往营收 舰长数量
// 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:
- }
- }
- }
- }()
+ //订阅消息,以便刷新舰长数
+ api.Get_guardNum()
+ //使用带tag的消息队列在功能间传递消息
+ c.Danmu_Main_mq.Pull_tag(map[string]func(interface{})(bool){
+ `guard_update`:func(data interface{})(bool){//舰长更新
+ go api.Get_guardNum()
+ return false
+ },
+ `change_room`:func(data interface{})(bool){//换房时退出当前房间
+ return true
+ },
+ })
if c.Cookie != `` {//附加功能 弹幕机 无cookie无法发送弹幕
reply.Danmuji_auto(1)
github.com/miekg/dns v1.1.35 // indirect
github.com/mitchellh/mapstructure v1.4.0 // indirect
github.com/qydysky/bili_danmu v0.5.4
- github.com/qydysky/part v0.3.5-0.20201222075205-70243aca6682 // indirect
+ github.com/qydysky/part v0.3.5-0.20201222123333-27d31033ffec // indirect
github.com/shirou/gopsutil v3.20.11+incompatible // indirect
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
golang.org/x/crypto v0.0.0-20201217014255-9d1352758620 // indirect
github.com/qydysky/part v0.3.5-0.20201222061900-d0c0ca9fc246/go.mod h1:SxxNav0Z7DbsDLoG5uxo0wW5EKU/JBu2CAkZzZeLnX0=
github.com/qydysky/part v0.3.5-0.20201222075205-70243aca6682 h1:k7YM2PUXxW96cIAludM1zJ4c9Ru6/W5jxJ67HrUht3w=
github.com/qydysky/part v0.3.5-0.20201222075205-70243aca6682/go.mod h1:SxxNav0Z7DbsDLoG5uxo0wW5EKU/JBu2CAkZzZeLnX0=
+github.com/qydysky/part v0.3.5-0.20201222123333-27d31033ffec h1:Mwrebha+zOcwYRxroUJhWBMgopVoqIyfOEYOeq6idtA=
+github.com/qydysky/part v0.3.5-0.20201222123333-27d31033ffec/go.mod h1:SxxNav0Z7DbsDLoG5uxo0wW5EKU/JBu2CAkZzZeLnX0=
github.com/qydysky/part/msgq v0.0.0-20201213031129-ca3253dc72ad h1:Jtzf509lQrkUMGTV0Sc6IDCAiR1VrBcHrIban7hpye4=
github.com/qydysky/part/msgq v0.0.0-20201213031129-ca3253dc72ad/go.mod h1:w32TkJNVtTJd4LOS09cq+4uYG6itcN2vsqw+slp44Rg=
github.com/qydysky/part/msgq v0.0.0-20201213120821-f36e49c32bba h1:1ew9dRpc0Rux0WkWeT/4AE15ynYWmL2D7onJEJIFOB8=