From 388d15fc1a70e4f08afcafdf26e5bfb1259217a0 Mon Sep 17 00:00:00 2001 From: qydysky Date: Thu, 19 Nov 2020 12:46:19 +0800 Subject: [PATCH] =?utf8?q?=E5=8F=AF=E5=9C=A8gtk=E7=95=8C=E9=9D=A2=E5=88=87?= =?utf8?q?=E6=8D=A2=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CV/Var.go | 5 + README.md | 5 +- Reply/0Init.go | 2 +- Reply/Reply.go | 2 +- Reply/gtk.go | 61 ++++++- _Screenshot/Screenshot_20201119_124329.png | Bin 0 -> 30846 bytes bili_danmu.go | 38 +++- bili_danmu_test.go | 10 -- demo/config/config_F.json | 16 ++ demo/config/config_gtk_keep_key.json | 11 ++ demo/go.mod | 4 +- demo/go.sum | 4 + demo/ui/2.glade | 199 +++++++++++++++------ go.mod | 16 +- go.sum | 97 ---------- 15 files changed, 283 insertions(+), 187 deletions(-) create mode 100644 _Screenshot/Screenshot_20201119_124329.png delete mode 100644 bili_danmu_test.go create mode 100644 demo/config/config_F.json create mode 100644 demo/config/config_gtk_keep_key.json delete mode 100644 go.sum diff --git a/CV/Var.go b/CV/Var.go index d5842e7..fbc5191 100644 --- a/CV/Var.go +++ b/CV/Var.go @@ -2,8 +2,10 @@ package cv import ( "time" + mq "github.com/qydysky/part/msgq" ) + var ( Live []string//直播链接 Live_qn string @@ -15,6 +17,9 @@ var ( Liveing bool//是否在直播 ) +//消息队列 +var Danmu_Main_mq = mq.New() + //from player-loader-2.0.11.min.js /* customAuthParam diff --git a/README.md b/README.md index ff734d2..6b3fb0e 100644 --- a/README.md +++ b/README.md @@ -160,11 +160,14 @@ ctrl+c退出,会同时追加记录到文件danmu.log中(文件记录完整 ![](_Screenshot/Screenshot_20200926_173834.png) [截图地址](//zdir.ntsdtt.bid/ALL/Admin/Remote/%E5%9B%BE%E7%89%87/Screenshot_20200926_173834.png) -Gtk弹幕窗(Linux Only) +- Gtk弹幕窗(Linux Only) ![](_Screenshot/Screenshot_20201023_232029.png) [截图地址](//zdir.ntsdtt.bid/ALL/Admin/Remote/%E5%9B%BE%E7%89%87/Screenshot_20201023_232029.png) +![](_Screenshot/Screenshot_20201119_124329.png) + +[截图地址](//zdir.ntsdtt.bid/ALL/Admin/Remote/%E5%9B%BE%E7%89%87/Screenshot_20201119_124329.png) 更多内容详见注释,如有疑问请发issues,欢迎pr diff --git a/Reply/0Init.go b/Reply/0Init.go index 972f53a..039ec6d 100644 --- a/Reply/0Init.go +++ b/Reply/0Init.go @@ -7,7 +7,7 @@ import ( //从config.json初始化 func init(){ buf := s.New() - buf.Load("config_F.json") + buf.Load("config/config_F.json") for k,v := range buf.B { AllF[k] = v.(bool) } diff --git a/Reply/Reply.go b/Reply/Reply.go index 1dacbf4..04bbb44 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -565,7 +565,7 @@ func Msg_showdanmu(auth interface{}, m ...string) { if auth != nil { Gui_show(fmt.Sprint(auth) +`: `+ msg, m[1]) } else { - Gui_show(msg) + Gui_show(m...) } } diff --git a/Reply/gtk.go b/Reply/gtk.go index dca144c..65341d2 100644 --- a/Reply/gtk.go +++ b/Reply/gtk.go @@ -5,6 +5,7 @@ package reply import ( "container/list" "errors" + "strconv" "time" "log" "fmt" @@ -15,6 +16,7 @@ import ( p "github.com/qydysky/part" F "github.com/qydysky/bili_danmu/F" c "github.com/qydysky/bili_danmu/CV" + s "github.com/qydysky/part/buf" ) const ( max = 50 @@ -57,11 +59,22 @@ var ( func init(){ if!IsOn("Gtk") {return} go func(){ + {//加载特定信息驻留时长 + buf := s.New() + buf.Load("config/config_gtk_keep_key.json") + for k,v := range buf.B { + keep_key[k] = int(v.(float64)) + } + } go Gtk_danmu() + var ( + sig = Danmu_mq.Sig() + data interface{} + ) for { - o := Danmu_mq.Pull().(Danmu_mq_t) - Gtk_danmuChan_uid <- o.uid - Gtk_danmuChan <- o.msg + data,sig = Danmu_mq.Pull(sig) + Gtk_danmuChan_uid <- data.(Danmu_mq_t).uid + Gtk_danmuChan <- data.(Danmu_mq_t).msg } }() } @@ -76,6 +89,8 @@ func Gtk_danmu() { var viewport0 *gtk.Viewport var w2_textView0 *gtk.TextView var w2_textView1 *gtk.TextView + var w2_Entry0 *gtk.Entry + var w2_Entry0_editting bool application, err := gtk.ApplicationNew(appId, glib.APPLICATION_FLAGS_NONE) if err != nil {log.Println(err);return} @@ -127,6 +142,39 @@ func Gtk_danmu() { w2_textView1 = tmp }else{log.Println("cant find #t1 in .glade");return} } + {//房间id + obj, err := builder2.GetObject("want_room_id") + if err != nil {log.Println(err);return} + if tmp,ok := obj.(*gtk.Entry); ok { + w2_Entry0 = tmp + tmp.Connect("focus-in-event", func() { + w2_Entry0_editting = true + }) + tmp.Connect("focus-out-event", func() { + w2_Entry0_editting = false + }) + }else{log.Println("cant find #want_room_id in .glade");return} + } + {//房间id click + obj, err := builder2.GetObject("want_click") + if err != nil {log.Println(err);return} + if tmp,ok := obj.(*gtk.Button); ok { + tmp.Connect("clicked", func() { + if t,e := w2_Entry0.GetText();e != nil { + y("读取错误",load_face("0room")) + } else if t != `` { + if i,e := strconv.Atoi(t);e != nil { + y(`输入错误`,load_face("0room")) + } else { + c.Roomid = i + c.Danmu_Main_mq.Push(`change_room`) + } + } else { + y(`房间号输入为空`,load_face("0room")) + } + }) + }else{log.Println("cant find #want_click in .glade");return} + } { obj, err := builder.GetObject("scrolledwindow0") if err != nil {log.Println(err);return} @@ -302,6 +350,13 @@ func Gtk_danmu() { b.SetText(fmt.Sprintf("%02d:%02d:%02d", h, m, s)) } } + {//房间id + if !w2_Entry0_editting { + if t,e := w2_Entry0.GetText();e == nil && t == `` && c.Roomid != 0{ + w2_Entry0.SetText(strconv.Itoa(c.Roomid)) + } + } + } if gtkGetList.Len() == 0 {return} el := gtkGetList.Front() if el == nil {return} diff --git a/_Screenshot/Screenshot_20201119_124329.png b/_Screenshot/Screenshot_20201119_124329.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9ceb11822f429219d9551f20e5e8fea04ac843 GIT binary patch literal 30846 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 Qg~AZnAJ)HDn0hAs54q#jGynhq literal 0 HcmV?d00001 diff --git a/bili_danmu.go b/bili_danmu.go index 8810836..3d2b6de 100644 --- a/bili_danmu.go +++ b/bili_danmu.go @@ -47,16 +47,31 @@ func Demo(roomid ...int) { } else { fmt.Print(strconv.Itoa(room), "\n") } + c.Roomid = room + + var exit_sign bool + var change_room_chan = make(chan bool) + + go func(){ + var ( + sig = c.Danmu_Main_mq.Sig() + data interface{} + ) + for { + data,sig = c.Danmu_Main_mq.Pull(sig) + if data.(string) != `change_room` {continue} + change_room_chan <- true + } + }() - var break_sign bool - for !break_sign { + for !exit_sign { //获取房间相关信息 - api := F.New_api(room).Get_host_Token().Get_live() + api := F.New_api(c.Roomid).Get_host_Token().Get_live() if len(api.Url) == 0 || api.Roomid == 0 || api.Token == "" || api.Uid == 0 || api.Locked { danmulog.E("some err") return } - danmulog.I("连接到房间", room) + danmulog.I("连接到房间", c.Roomid) //对每个弹幕服务器尝试 for _, v := range api.Url { @@ -68,9 +83,12 @@ func Demo(roomid ...int) { danmulog.I("连接", v) ws.SendChan <- F.HelloGen(api.Roomid, api.Token) if F.HelloChe(<- ws.RecvChan) { - danmulog.I("已连接到房间", room) - danmulog.I(c.Title) - + danmulog.I("已连接到房间", c.Roomid) + reply.Gui_show(`进入直播间: `+strconv.Itoa(c.Roomid), `0room`) + if c.Title != `` { + danmulog.I(c.Title) + reply.Gui_show(`房间标题: `+c.Title, `0room`) + } //30s获取一次人气 go func(){ danmulog.I("获取人气") @@ -101,6 +119,7 @@ func Demo(roomid ...int) { } var isclose bool + var break_sign bool for !isclose { select { case i := <- ws.RecvChan: @@ -113,6 +132,11 @@ func Demo(roomid ...int) { ws.Close() danmulog.I("停止,等待服务器断开连接") break_sign = true + exit_sign = true + case <- change_room_chan: + ws.Close() + danmulog.I("停止,等待服务器断开连接") + break_sign = true } } diff --git a/bili_danmu_test.go b/bili_danmu_test.go deleted file mode 100644 index 709ebf1..0000000 --- a/bili_danmu_test.go +++ /dev/null @@ -1,10 +0,0 @@ -package bili_danmu - -import ( - "testing" -) - -func Test_bili_danmu(t *testing.T) { - -} - diff --git a/demo/config/config_F.json b/demo/config/config_F.json new file mode 100644 index 0000000..ea13ad6 --- /dev/null +++ b/demo/config/config_F.json @@ -0,0 +1,16 @@ +{ + "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 diff --git a/demo/config/config_gtk_keep_key.json b/demo/config/config_gtk_keep_key.json new file mode 100644 index 0000000..99b5688 --- /dev/null +++ b/demo/config/config_gtk_keep_key.json @@ -0,0 +1,11 @@ +{ + "face/0default":0, + "face/0room":0, + "face/0buyguide":9, + "face/0gift":8, + "face/0jiezou":8, + "face/0level1":5, + "face/0level2":3, + "face/0level3":1, + "face/0superchat":13 +} \ No newline at end of file diff --git a/demo/go.mod b/demo/go.mod index bcaf5f0..8402bc6 100644 --- a/demo/go.mod +++ b/demo/go.mod @@ -3,12 +3,14 @@ module github.com/qydysky/bili_danmu/demo go 1.14 require ( + github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 // indirect + github.com/gorilla/websocket v1.4.2 // indirect github.com/gotk3/gotk3 v0.5.0 // indirect github.com/klauspost/compress v1.11.2 // indirect github.com/miekg/dns v1.1.35 // indirect github.com/mitchellh/mapstructure v1.3.3 // indirect github.com/qydysky/bili_danmu v0.4.0 - github.com/qydysky/part v0.2.2-0.20201118040602-e0a4255270c5 // indirect + github.com/qydysky/part v0.2.2-0.20201119032922-a6f2c3476095 // indirect github.com/shirou/gopsutil v3.20.10+incompatible // indirect golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect golang.org/x/net v0.0.0-20201110031124-69a78807bb2b // indirect diff --git a/demo/go.sum b/demo/go.sum index 65284af..ee15fe0 100644 --- a/demo/go.sum +++ b/demo/go.sum @@ -50,6 +50,10 @@ github.com/qydysky/part v0.2.2-0.20201117231944-b989fc77f39b h1:YxwA2XVfF3/6mWwO github.com/qydysky/part v0.2.2-0.20201117231944-b989fc77f39b/go.mod h1:93s9ohLtzULet5ZPEUUWrT9BELC30oDZgRpgGSiDye4= github.com/qydysky/part v0.2.2-0.20201118040602-e0a4255270c5 h1:VqAQccFpYPRNvrF6NECzMokcJkt1URo9voUiO5SKf1s= github.com/qydysky/part v0.2.2-0.20201118040602-e0a4255270c5/go.mod h1:93s9ohLtzULet5ZPEUUWrT9BELC30oDZgRpgGSiDye4= +github.com/qydysky/part v0.2.2-0.20201118201147-5c672b694ad4 h1:ROhlxKQCiWfC/d4qnbC6E5v+HuY/01csmbH39OPQncM= +github.com/qydysky/part v0.2.2-0.20201118201147-5c672b694ad4/go.mod h1:93s9ohLtzULet5ZPEUUWrT9BELC30oDZgRpgGSiDye4= +github.com/qydysky/part v0.2.2-0.20201119032922-a6f2c3476095 h1:xMahJIwZcpiRWg3Lm2eBmDS6rB4aXdOX5nJXfF4AlME= +github.com/qydysky/part v0.2.2-0.20201119032922-a6f2c3476095/go.mod h1:93s9ohLtzULet5ZPEUUWrT9BELC30oDZgRpgGSiDye4= github.com/shirou/gopsutil v2.20.7+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v2.20.8+incompatible h1:8c7Atn0FAUZJo+f4wYbN0iVpdWniCQk7IYwGtgdh1mY= github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= diff --git a/demo/ui/2.glade b/demo/ui/2.glade index e2bd81e..c59ee50 100644 --- a/demo/ui/2.glade +++ b/demo/ui/2.glade @@ -26,38 +26,115 @@ True False + 2 + 2 vertical 3 2 - + True - False - 项目 - 16 - - - 0 - 0 - - - - - True - False + True + 2 + 2 True - 值 - - - 1 - 0 - - - - - True - False - 营收(启动后) + False + True + + + True + False + True + True + 3 + 2 + + + True + False + 直播时长 + + + 0 + 1 + + + + + True + False + 营收 + + + 0 + 2 + + + + + True + True + False + right + False + False + + + 1 + 1 + + + + + True + True + natural + False + right + False + False + + + 1 + 2 + + + + + True + False + 项目 + 16 + + + 0 + 0 + + + + + True + False + True + 值 + + + 1 + 0 + + + + + + + + True + False + 本次直播 + + 0 @@ -65,42 +142,62 @@ - - True - True - natural - False - right - False - False - - - 1 - 2 - - - - + True False - 直播时长 + + + True + False + 7 + 7 + 1 + 1 + 房间id + + + 0 + 0 + + + + + True + True + True + number + + + 1 + 0 + + + + + 进入 + True + True + True + + + 2 + 0 + + 0 - 1 + 0 - + True - True - False - right - False - False + False + 2 - 1 + 0 1 diff --git a/go.mod b/go.mod index b2e1f64..4469acd 100644 --- a/go.mod +++ b/go.mod @@ -1,17 +1,3 @@ module github.com/qydysky/bili_danmu -go 1.14 - -require ( - github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 - github.com/gorilla/websocket v1.4.2 - github.com/klauspost/compress v1.11.0 // indirect - github.com/qydysky/part v0.0.6 - github.com/shirou/gopsutil v2.20.8+incompatible // indirect - github.com/therecipe/qt v0.0.0-20200904063919-c0c124a5770d - golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a // indirect - golang.org/x/net v0.0.0-20200904194848-62affa334b73 // indirect - golang.org/x/sys v0.0.0-20200917061948-648f2a039071 // indirect -) - -//replace github.com/qydysky/part => ../part +go 1.15 diff --git a/go.sum b/go.sum deleted file mode 100644 index b94f2cb..0000000 --- a/go.sum +++ /dev/null @@ -1,97 +0,0 @@ -github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= -github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 h1:UFBgEMSPv6a2vgzowHOPphVit+ZBNQ3+4Q+dEBgwIww= -github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5/go.mod h1:P5w+dDqQEbCMFAkmucNcEQ6xgAt/NP+Aw58OQfY/H/o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= -github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= -github.com/gopherjs/gopherjs v0.0.0-20190411002643-bd77b112433e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/klauspost/compress v1.10.10 h1:a/y8CglcM7gLGYmlbP/stPE5sR3hbhFRUjCBfd/0B3I= -github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.0 h1:wJbzvpYMVGG9iTI9VxpnNZfd4DzMPoCWze3GgSqz8yg= -github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/miekg/dns v1.1.31 h1:sJFOl9BgwbYAWOGEwr61FU28pqsBNdpRBnhGXtO06Oo= -github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/qydysky/part v0.0.0-20200912061031-0f3a305b4afb h1:p2R5IUkza8POjdulQWSJrFSxhpjIzSWLX4KMt/YyS9E= -github.com/qydysky/part v0.0.0-20200912061031-0f3a305b4afb/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200914123330-afade058e33d h1:um1WzsGzwD6h+1W3jqGcWJPVr4kT5gmRRaXXVwO7nb4= -github.com/qydysky/part v0.0.0-20200914123330-afade058e33d/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200914222559-436abc80976a h1:Wurgg5wiPemdfbO9lzOywZWst0DyEI610gUo3HV/ros= -github.com/qydysky/part v0.0.0-20200914222559-436abc80976a/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200914225111-80645055bc83 h1:iAqwOKLRNeJ2kwgFOWRifJGEomYPKvCpygSQqSXzdSM= -github.com/qydysky/part v0.0.0-20200914225111-80645055bc83/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200915003959-bbc60ec9e47e h1:/APS+qy3b5k432eh1W5lFIHUWC4mTV0i0neDTtanI0A= -github.com/qydysky/part v0.0.0-20200915003959-bbc60ec9e47e/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200915060427-df3e1d541451 h1:0cLySh/YtFFzKapmgeZttO6qMH8gcixXvrIvswbVYeo= -github.com/qydysky/part v0.0.0-20200915060427-df3e1d541451/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200915064846-d3f2213b9508 h1:RQgjB7cwDWinNOVRkstHrYaZUydCwyZFvoiVtZX7rKo= -github.com/qydysky/part v0.0.0-20200915064846-d3f2213b9508/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.0-20200917071511-9f829642b501 h1:KYRfCW7+5t3Sj2+j8nn+WWIRhEyyYG/n8N500oEp6yU= -github.com/qydysky/part v0.0.0-20200917071511-9f829642b501/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.4 h1:MN1SXuP0korwTAFPG+hJmQHGFs9Aj7XBC4zAq6yEjsc= -github.com/qydysky/part v0.0.4/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/qydysky/part v0.0.6 h1:DEIziO8d9PT+E1OIij3Ua0H8vO9Z5yqCJGb3m8BOGL0= -github.com/qydysky/part v0.0.6/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0= -github.com/shirou/gopsutil v2.20.7+incompatible h1:Ymv4OD12d6zm+2yONe39VSmp2XooJe8za7ngOLW/o/w= -github.com/shirou/gopsutil v2.20.7+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v2.20.8+incompatible h1:8c7Atn0FAUZJo+f4wYbN0iVpdWniCQk7IYwGtgdh1mY= -github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/thedevsaddam/gojsonq v2.3.0+incompatible h1:i2lFTvGY4LvoZ2VUzedsFlRiyaWcJm3Uh6cQ9+HyQA8= -github.com/thedevsaddam/gojsonq v2.3.0+incompatible/go.mod h1:RBcQaITThgJAAYKH7FNp2onYodRz8URfsuEGpAch0NA= -github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0= -github.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs= -github.com/therecipe/qt v0.0.0-20200904063919-c0c124a5770d h1:T+d8FnaLSvM/1BdlDXhW4d5dr2F07bAbB+LpgzMxx+o= -github.com/therecipe/qt v0.0.0-20200904063919-c0c124a5770d/go.mod h1:SUUR2j3aE1z6/g76SdD6NwACEpvCxb3fvG82eKbD6us= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190420063019-afa5a82059c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed h1:WBkVNH1zd9jg/dK4HCM4lNANnmd12EHC9z+LmcCG4ns= -golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 h1:W0lCpv29Hv0UaM1LXb9QlBHLNP8UFfcKjblhVCWftOM= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200915050820-6d893a6b696e h1:RGS7MuoO4EeRp68J5OWuANAi5oVYtLRl+3LoD5fkMns= -golang.org/x/sys v0.0.0-20200915050820-6d893a6b696e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200917061948-648f2a039071 h1:t0H7WMwCt9t0LnLSYz5zdZ/OiAtROxc5cHb5iHt3Xyw= -golang.org/x/sys v0.0.0-20200917061948-648f2a039071/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -- 2.39.2