]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
可在gtk界面切换房间
authorqydysky <qydysky@foxmail.com>
Thu, 19 Nov 2020 04:46:19 +0000 (12:46 +0800)
committerqydysky <qydysky@foxmail.com>
Thu, 19 Nov 2020 04:46:19 +0000 (12:46 +0800)
15 files changed:
CV/Var.go
README.md
Reply/0Init.go
Reply/Reply.go
Reply/gtk.go
_Screenshot/Screenshot_20201119_124329.png [new file with mode: 0644]
bili_danmu.go
bili_danmu_test.go [deleted file]
demo/config/config_F.json [new file with mode: 0644]
demo/config/config_gtk_keep_key.json [new file with mode: 0644]
demo/go.mod
demo/go.sum
demo/ui/2.glade
go.mod
go.sum [deleted file]

index d5842e78cd02660510e5e677d941318bcdbdbce3..fbc51914280c8d0b5f50b7451fd1ca4a3b484551 100644 (file)
--- 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
index ff734d2829fafc43aa66a7ef31c08178d409c22f..6b3fb0eaf5696d4c6f382c61638de7d1cde57123 100644 (file)
--- 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
index 972f53a91b8d6ec54062032eadfa63ce4ba9abd5..039ec6db49f268d8b378644199d9870e8c65371c 100644 (file)
@@ -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)
        }
index 1dacbf4d4508b1bd910211eb9d2deb1ac508eba0..04bbb44bfcd4000ec594e81bb8a9024c84d96e2b 100644 (file)
@@ -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...)
                }       
        }
        
index dca144c59bc891e3a12dbff560d04522b1492cb2..65341d2d5bf7decb321ecf624f8054d00c030aae 100644 (file)
@@ -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 (file)
index 0000000..aa9ceb1
Binary files /dev/null and b/_Screenshot/Screenshot_20201119_124329.png differ
index 88108365bdeb68b187a0d7f2ce023ff7860d2014..3d2b6de3309e946a78f8674cb8cbf8d163a270cb 100644 (file)
@@ -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 (file)
index 709ebf1..0000000
+++ /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 (file)
index 0000000..ea13ad6
--- /dev/null
@@ -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 (file)
index 0000000..99b5688
--- /dev/null
@@ -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
index bcaf5f0a5ae61637a9c8b531881cea3fd0e2d2df..8402bc61abc780f3884f1a50e9ee75dbb7ccc7a7 100644 (file)
@@ -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
index 65284afd58190000180851dfce61d0349452c753..ee15fe00d24879fc27f6bd0b95782414c6be6eff 100644 (file)
@@ -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=
index e2bd81ee96650ae1c86d8c612575a10231eeb307..c59ee50c2ff38a133964bfa37ac2107193097859 100644 (file)
               <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>
diff --git a/go.mod b/go.mod
index b2e1f642638820b8442f02c18ad83d8f48f3dcfc..4469acdb444f2e47881decf7a1e32ad0562ea940 100644 (file)
--- 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 (file)
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=