import (
"time"
+ mq "github.com/qydysky/part/msgq"
)
+
var (
Live []string//直播链接
Live_qn string
Liveing bool//是否在直播
)
+//消息队列
+var Danmu_Main_mq = mq.New()
+
//from player-loader-2.0.11.min.js
/*
customAuthParam

[截图地址](//zdir.ntsdtt.bid/ALL/Admin/Remote/%E5%9B%BE%E7%89%87/Screenshot_20200926_173834.png)
-Gtk弹幕窗(Linux Only)
+- Gtk弹幕窗(Linux Only)

[截图地址](//zdir.ntsdtt.bid/ALL/Admin/Remote/%E5%9B%BE%E7%89%87/Screenshot_20201023_232029.png)
+
+
+[截图地址](//zdir.ntsdtt.bid/ALL/Admin/Remote/%E5%9B%BE%E7%89%87/Screenshot_20201119_124329.png)
更多内容详见注释,如有疑问请发issues,欢迎pr
//从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)
}
if auth != nil {
Gui_show(fmt.Sprint(auth) +`: `+ msg, m[1])
} else {
- Gui_show(msg)
+ Gui_show(m...)
}
}
import (
"container/list"
"errors"
+ "strconv"
"time"
"log"
"fmt"
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
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
}
}()
}
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}
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}
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}
} 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 {
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("获取人气")
}
var isclose bool
+ var break_sign bool
for !isclose {
select {
case i := <- ws.RecvChan:
ws.Close()
danmulog.I("停止,等待服务器断开连接")
break_sign = true
+ exit_sign = true
+ case <- change_room_chan:
+ ws.Close()
+ danmulog.I("停止,等待服务器断开连接")
+ break_sign = true
}
}
+++ /dev/null
-package bili_danmu
-
-import (
- "testing"
-)
-
-func Test_bili_danmu(t *testing.T) {
-
-}
-
--- /dev/null
+{
+ "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
--- /dev/null
+{
+ "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
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
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=
<object class="GtkGrid" id="grid0">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="margin_top">2</property>
+ <property name="margin_bottom">2</property>
<property name="orientation">vertical</property>
<property name="row_spacing">3</property>
<property name="column_spacing">2</property>
<child>
- <object class="GtkLabel">
+ <object class="GtkExpander">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">项目</property>
- <property name="width_chars">16</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can_focus">True</property>
+ <property name="margin_left">2</property>
+ <property name="margin_right">2</property>
<property name="hexpand">True</property>
- <property name="label" translatable="yes">值</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">营收(启动后)</property>
+ <property name="vexpand">False</property>
+ <property name="expanded">True</property>
+ <child>
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="row_spacing">3</property>
+ <property name="column_spacing">2</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">直播时长</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">营收</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTextView" id="t1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="justification">right</property>
+ <property name="cursor_visible">False</property>
+ <property name="accepts_tab">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTextView" id="t0">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscroll_policy">natural</property>
+ <property name="editable">False</property>
+ <property name="justification">right</property>
+ <property name="cursor_visible">False</property>
+ <property name="accepts_tab">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">项目</property>
+ <property name="width_chars">16</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">值</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <style>
+ <class name="this_time_body"/>
+ </style>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">本次直播</property>
+ </object>
+ </child>
</object>
<packing>
<property name="left_attach">0</property>
</packing>
</child>
<child>
- <object class="GtkTextView" id="t0">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscroll_policy">natural</property>
- <property name="editable">False</property>
- <property name="justification">right</property>
- <property name="cursor_visible">False</property>
- <property name="accepts_tab">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
+ <object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">直播时长</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">7</property>
+ <property name="margin_right">7</property>
+ <property name="margin_top">1</property>
+ <property name="margin_bottom">1</property>
+ <property name="label" translatable="yes">房间id</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="want_room_id">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="input_purpose">number</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="want_click">
+ <property name="label" translatable="yes">进入</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">0</property>
</packing>
</child>
<child>
- <object class="GtkTextView" id="t1">
+ <object class="GtkSeparator">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="justification">right</property>
- <property name="cursor_visible">False</property>
- <property name="accepts_tab">False</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">2</property>
</object>
<packing>
- <property name="left_attach">1</property>
+ <property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
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
+++ /dev/null
-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=