From: qydysky Date: Wed, 16 Sep 2020 23:53:41 +0000 (+0800) Subject: 12 X-Git-Tag: v0.0.0~34 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=d3e9f2013e445ef908eaecf537d6ee44663d0469;p=bili_danmu%2F.git 12 --- diff --git a/F.go b/F.go index 8665260..8766d05 100644 --- a/F.go +++ b/F.go @@ -15,7 +15,8 @@ var AllF = map[string]bool{ "Danmuji":true,//反射型弹幕机,回应弹幕 "Danmuji_auto":false,//自动型弹幕机,定时输出 "Autoskip":true,//刷屏缩减,相同合并 - "Lessdanmu":true,//弹幕缩减,显示差异大的 + "Lessdanmu":false,//弹幕缩减,显示差异大的 + "Moredanmu":false,//弹幕增量 } func IsOn(s string) bool { @@ -124,7 +125,7 @@ func Autoskipf(s string, maxNum,muteSecond int) int { } autoskip.num -= 1 i, ok := autoskip.buf.LoadAndDelete(s); - if ok && i.(int) > 0 {fmt.Println(s, "+", i)} + if ok && i.(int) > 1 {fmt.Println(s, "+", i)} }() return 0 } @@ -149,23 +150,21 @@ func Lessdanmuf(s string, bufsize int) bool { } o := cross(s, lessdanmu.buf) - lessdanmu.avg = (0.8 * lessdanmu.avg + 0.2 * o) - return o > lessdanmu.avg + lessdanmu.avg = (95 * lessdanmu.avg + 5 * o) / 100 + return o < lessdanmu.avg } -func cross(a string,buf []string) float32 { - var ( - s float32 - all float32 - ) - for _,v1 := range buf { - for _,v2 := range v1 { - for _,v3 := range a { - if v3 == v2 {s += 1} - all += 1 +func cross(a string,buf []string) (float32) { + var s float32 + for _,v1 := range a { + var matched bool + for _,v2 := range buf { + for _,v3 := range v2 { + if v3 == v1 {matched = true;break} } + if matched {break} } - + if matched {s += 1} } - return s / all + return s / float32(len(a)) } \ No newline at end of file diff --git a/Msg.go b/Msg.go index 9b71574..0cee8f7 100644 --- a/Msg.go +++ b/Msg.go @@ -11,7 +11,7 @@ import ( 数据为WS_OP_MESSAGE类型的 */ -var msglog = p.Logf().New().Base(-1, "Msg.go>").Open("danmu.log").Level(1) +var msglog = p.Logf().New().Base(-1, "Msg.go").Open("danmu.log").Level(1) var Msg_cookie string var Msg_roomid int var Msg_map = map[string]func(replayF, string) { @@ -96,8 +96,9 @@ func (replayF) defaultMsg(s string){ } func (replayF) guard_buy(s string){ - msglog.Fileonly(true).Base(1, "礼") - defer msglog.Fileonly(false) + msglog.Fileonly(true).Base(-1, "礼") + defer msglog.Base(0).Fileonly(false) + username := p.Json().GetValFromS(s, "data.username"); gift_name := p.Json().GetValFromS(s, "data.gift_name"); price := p.Json().GetValFromS(s, "data.price"); @@ -111,7 +112,7 @@ func (replayF) guard_buy(s string){ sh = append(sh, "购买了", gift_name) } if price != nil { - sh = append(sh, "¥", price) + sh = append(sh, "¥", int(price.(float64)) / 1000) } fmt.Println("====") @@ -177,14 +178,14 @@ func (replayF) send_gift(s string){ sh = append(sh, giftName) } if price != nil { - allprice = int64(num.(float64) * price.(float64)) - sh = append(sh, "(", allprice, "x 金瓜子 )") + allprice = int64(num.(float64) * price.(float64) / 1000) + sh = append(sh, "¥", allprice) } if len(sh) == 0 {return} - msglog.Fileonly(true).Base(1, "礼") - defer msglog.Fileonly(false) + msglog.Fileonly(true).Base(-1, "礼") + defer msglog.Base(0).Fileonly(false) //小于3万金瓜子 if allprice < 30000 {msglog.T(sh...);return} @@ -196,8 +197,8 @@ func (replayF) send_gift(s string){ } func (replayF) room_block_msg(s string) { - msglog.Fileonly(true).Base(1, "封") - defer msglog.Fileonly(false) + msglog.Fileonly(true).Base(-1, "封") + defer msglog.Base(0).Fileonly(false) if uname := p.Json().GetValFromS(s, "uname");uname == nil { msglog.E("uname", uname) @@ -273,8 +274,8 @@ func (replayF) panel(s string){ } func (replayF) entry_effect(s string){ - msglog.Fileonly(true).Base(1, "房") - defer msglog.Fileonly(false) + msglog.Fileonly(true).Base(-1, "房") + defer msglog.Base(0).Fileonly(false) if copy_writing := p.Json().GetValFromS(s, "data.copy_writing");copy_writing == nil { msglog.E("copy_writing", copy_writing) @@ -326,6 +327,7 @@ func (replayF) danmu(s string) { msglog.Fileonly(true) defer msglog.Fileonly(false) + //F附加方法 Danmujif(msg, Msg_cookie, Msg_roomid) if Autobanf(msg) > 0.5 { msglog.Base(1, "风险").I(msg) @@ -335,7 +337,7 @@ func (replayF) danmu(s string) { msglog.I(auth, ":", msg) return } - if Lessdanmuf(msg, 50) { + if Lessdanmuf(msg, 200) { msglog.I(auth, ":", msg) return } diff --git a/api.go b/api.go index 496cdf3..812e0e9 100644 --- a/api.go +++ b/api.go @@ -13,11 +13,12 @@ type api struct { Token string } +var apilog = p.Logf().New().Base(-1, "api.go").Level(LogLevel) func New_api(Roomid int) (o *api) { - l := p.Logf().New().Base(-1, "api.go>新建").Level(LogLevel).T("New_api") - defer l.Block() + apilog.Base(-1, "新建") + defer apilog.Base(0) - l.T("ok") + apilog.T("ok") o = new(api) o.Roomid = Roomid o.Get_info() @@ -26,12 +27,12 @@ func New_api(Roomid int) (o *api) { } func (i *api) Get_info() (o *api) { - o = i - l := p.Logf().New().Base(-1, "api.go>获取房号").Level(LogLevel).T("*api.Get_info") - defer l.Block() + o = i + apilog.Base(-1, "获取房号") + defer apilog.Base(0) if o.Roomid == 0 { - l.E("还未New_api") + apilog.E("还未New_api") return } Roomid := strconv.Itoa(o.Roomid) @@ -43,26 +44,26 @@ func (i *api) Get_info() (o *api) { Timeout:10, Retry:2, });err != nil { - l.E(err) + apilog.E(err) return } res := string(req.Respon) if msg := p.Json().GetValFrom(res, "msg");msg == nil || msg != "ok" { - l.E("msg", msg) + apilog.E("msg", msg) return } if Uid := p.Json().GetValFrom(res, "data.uid");Uid == nil { - l.E("data.uid", Uid) + apilog.E("data.uid", Uid) return } else { o.Uid = int(Uid.(float64)) } if room_id := p.Json().GetValFrom(res, "data.room_id");room_id == nil { - l.E("data.room_id", room_id) + apilog.E("data.room_id", room_id) return } else { - l.T("ok") + apilog.T("ok") o.Roomid = int(room_id.(float64)) } return @@ -70,11 +71,11 @@ func (i *api) Get_info() (o *api) { func (i *api) Get_host_Token() (o *api) { o = i - l := p.Logf().New().Base(-1, "api.go>获取host key").Level(LogLevel).T("*api.Get_host_Token") - defer l.Block() + apilog.Base(-1, "获取host key") + defer apilog.Base(0) if o.Roomid == 0 { - l.E("还未New_api") + apilog.E("还未New_api") return } Roomid := strconv.Itoa(o.Roomid) @@ -87,35 +88,35 @@ func (i *api) Get_host_Token() (o *api) { Timeout:10, Retry:2, });err != nil { - l.E(err) + apilog.E(err) return } res := string(req.Respon) if msg := p.Json().GetValFrom(res, "message");msg == nil || msg != "0" { - l.E("message", msg) + apilog.E("message", msg) return } _Token := p.Json().GetValFrom(res, "data.token") if _Token == nil { - l.E("data.token", _Token, res) + apilog.E("data.token", _Token, res) return } o.Token = _Token.(string) if host_list := p.Json().GetValFrom(res, "data.host_list");host_list == nil { - l.E("data.host_list", host_list) + apilog.E("data.host_list", host_list) return } else { for k, v := range host_list.([]interface{}) { if _host := p.Json().GetValFrom(v, "host");_host == nil { - l.E("data.host_list[", k, "].host", _host) + apilog.E("data.host_list[", k, "].host", _host) continue } else { o.Url = append(o.Url, "wss://" + _host.(string) + "/sub") } } - l.T("ok") + apilog.T("ok") } return diff --git a/bili_danmu.go b/bili_danmu.go index f91ffca..dc5fc3e 100644 --- a/bili_danmu.go +++ b/bili_danmu.go @@ -116,6 +116,8 @@ const ( //返回数据分派 func Reply(b []byte) { + danmulog.Base(-1, "返回分派") + defer danmulog.Base(0) if ist, _ := headChe(b[:16], len(b), WS_BODY_PROTOCOL_VERSION_DEFLATE, WS_OP_MESSAGE, 0, 4); ist { Msg(b, true);return @@ -124,8 +126,6 @@ func Reply(b []byte) { Msg(b, false);return } - danmulog.Base(1, "返回分派") - if ist, _ := headChe(b[:16], len(b), WS_HEADER_DEFAULT_VERSION, WS_OP_HEARTBEAT_REPLY, WS_HEADER_DEFAULT_SEQUENCE, 4); ist { danmulog.T("heartbeat replay!"); return @@ -148,10 +148,13 @@ func headGen(datalenght,Opeation,Sequence int) []byte { } func headChe(head []byte, datalenght,Bodyv,Opeation,Sequence,show int) (bool,int32) { + danmulog.Base(-1, "头部检查") + defer danmulog.Base(0) + if len(head) != WS_PACKAGE_HEADER_TOTAL_LENGTH {return false, 0} - danmulog.Base(-1, "头部检查").Level(show) - defer danmulog.Base(0).Level(LogLevel) + danmulog.Level(show) + defer danmulog.Level(LogLevel) packL := Btoi32(head[:4]) @@ -171,9 +174,11 @@ func headChe(head []byte, datalenght,Bodyv,Opeation,Sequence,show int) (bool,int //认证生成与检查 func hello_send(roomid int, key string) []byte { + danmulog.Base(-1, "认证生成") + defer danmulog.Base(0) if roomid == 0 || key == "" { - danmulog.Base(1, "认证生成").E("roomid == 0 || key == \"\"") + danmulog.E("roomid == 0 || key == \"\"") return []byte("") }