From 3b7e8e94ea4d7f5fc9e1e93f7d0a48c69a6a91d7 Mon Sep 17 00:00:00 2001 From: eson Date: Wed, 2 Sep 2020 18:56:20 +0800 Subject: [PATCH] =?UTF-8?q?nimo=20=E6=8F=92=E4=BB=B6=E4=BC=98=E5=8C=96=20n?= =?UTF-8?q?imo=20=E6=95=B0=E6=8D=AE=E6=B5=8B=E8=AF=95=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crx/myblock.crx | Bin 75903 -> 75993 bytes crx/myblock.pem | 52 +- extractor/nimo_extractor/nimo_extractor.go | 9 + .../nimo_extractor/nimo_extractor_test.go | 88 + .../twitch_extractor/tiwtch_extractor.go | 2 +- store.go | 1 + supervisor_conf/nimo_task1.conf | 13 + tasks/nimo/nimo_task1/main.go | 5 + tasks/nimo/nimo_task1/nimo_task1.go | 2 +- testfile/nimolive.html | 2015 +++++++++++++++++ utils.go | 3 + 11 files changed, 2162 insertions(+), 28 deletions(-) create mode 100644 extractor/nimo_extractor/nimo_extractor.go create mode 100644 extractor/nimo_extractor/nimo_extractor_test.go create mode 100644 supervisor_conf/nimo_task1.conf create mode 100644 tasks/nimo/nimo_task1/main.go create mode 100644 testfile/nimolive.html diff --git a/crx/myblock.crx b/crx/myblock.crx index 6ee88c65bb208fc887b525118235a905a7b66f8f..f4d1096e06124a7fbfd86f92e80b1aefdd5feb62 100644 GIT binary patch delta 4717 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 delta 4670 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 0 { + if do == nil { + return true, nil + } + if do(elements...) { + return true, nil + } + } + return false, nil + + }, time.Second*15) +} + +type LiveInfo struct { + Followers int64 `exp:"//div[contains(@class,'nimo-rm_followers')]//span[@class='text c2']" mth:"r:ExtractNumber"` + Views int64 `exp:"//div[contains(@class,'nimo-rm_audience')]//span[@class='text c2']" mth:"r:ExtractNumber"` + Giver []int64 `exp:"//div[contains(@class,'rank-item-after3')]//span[contains(@class,'nimo-currency__count')]"` +} + +func Execute() { + wd := intimate.GetChromeDriver(3031) + waitfor := NewWaitFor(wd) + ps := intimate.NewPerfectShutdown() + + for !ps.IsClose() { + // streamer, err := estore.Pop(intimate.PNimo) + // if err != nil { + // log.Println(err) + // // estore.UpdateError(streamer, err) + // continue + // } + // log.Println(streamer) + var pagesource string + // wd.Get(streamer.LiveUrl.String) + wd.Get("https://www.nimo.tv/live/1253835677") + + waitfor.Default("//div[contains(@class,'nimo-rm_followers')]//span[@class='text c2' and text() != '']", nil) + waitfor.Default("//div[contains(@class,'rank-item-top3')]", nil) + element, err := wd.FindElement(selenium.ByXPATH, "//div[contains(@class,'rank-item-top3')]") + if err != nil { + log.Println(err) + } else { + err = element.MoveTo(50, 50) + element.Click() + if err != nil { + log.Println(err) + } + } + + waitfor.Default("//div[contains(@class,'nimo-rm_audience')]//span[@class='text c2']", nil) + pagesource, _ = wd.PageSource() + etor := extractor.ExtractHtmlString(pagesource) + li := etor.GetObjectByTag(LiveInfo{}).(*LiveInfo) + log.Printf("%#v", li) + } +} diff --git a/extractor/twitch_extractor/tiwtch_extractor.go b/extractor/twitch_extractor/tiwtch_extractor.go index c6173ba..2ae0c23 100644 --- a/extractor/twitch_extractor/tiwtch_extractor.go +++ b/extractor/twitch_extractor/tiwtch_extractor.go @@ -29,7 +29,7 @@ func main() { // var err error for !ps.IsClose() { - streamer, err := estore.PopNoWait(intimate.Ptwitch, "tags is NULL", 15) + streamer, err := estore.Pop(intimate.Ptwitch) if streamer == nil || err != nil { if err != lasterr { log.Println(err, lasterr) diff --git a/store.go b/store.go index d49df1e..673bb81 100644 --- a/store.go +++ b/store.go @@ -228,6 +228,7 @@ func NewStoreExtractor() *StoreExtractor { return &StoreExtractor{db: db} } +// PopNoWait 弹出一个不用按时间间隔更新的主播信息, 主要用来测试. func (store *StoreExtractor) PopNoWait(platform Platform, condition string, operators ...int32) (*Streamer, error) { tx, err := store.db.Begin() if err != nil { diff --git a/supervisor_conf/nimo_task1.conf b/supervisor_conf/nimo_task1.conf new file mode 100644 index 0000000..778f858 --- /dev/null +++ b/supervisor_conf/nimo_task1.conf @@ -0,0 +1,13 @@ +[supervisord] +nodaemon=false + +[program:nimo_task1] +environment=DISPLAY=":99" +directory = MYPATH/bin/nimo_task1/ +command= MYPATH/bin/nimo_task1/nimo_task1 +# process_name=%(program_name)s_%(process_num)02d ;多进程名称 +# numprocs=1 ;启动多个进程 +autorestart=true +stderr_logfile=MYPATH/bin/nimo_task1/log +stderr_logfile_maxbytes=0 +stopsignal=QUIT diff --git a/tasks/nimo/nimo_task1/main.go b/tasks/nimo/nimo_task1/main.go new file mode 100644 index 0000000..736ef31 --- /dev/null +++ b/tasks/nimo/nimo_task1/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + Execute() +} diff --git a/tasks/nimo/nimo_task1/nimo_task1.go b/tasks/nimo/nimo_task1/nimo_task1.go index d423e90..827e0bf 100644 --- a/tasks/nimo/nimo_task1/nimo_task1.go +++ b/tasks/nimo/nimo_task1/nimo_task1.go @@ -59,7 +59,7 @@ func Execute() { log.Println(tp.GetURLRawPath(), "rooms:", len(rooms)) if len(rooms) == 0 { param.IntSet(1) - time.Sleep(time.Minute * 10) + time.Sleep(time.Minute * 15) continue } diff --git a/testfile/nimolive.html b/testfile/nimolive.html new file mode 100644 index 0000000..b91e763 --- /dev/null +++ b/testfile/nimolive.html @@ -0,0 +1,2015 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Best Allain VN 直播-AOV 直播-遊戲直播在線觀看 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+
+
+
+
+ + Best Allain VN + + +
+
+
+
+
+

kéo rank nha các + bạn iew

+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + + Nimo TV + +
12
+
+

Best Allain VN

+ +
-
+
followers:211 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
    +
  • 480P
  • +
  • 360P
  • +
+
480P
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

您的瀏覽器不支持視頻自動播放

點擊播放 +
+
+
+
+ + Nimo TV + + +
+
+
+ kéo rank nha các bạn iew
+
+
+
+
Best Allain VN
+
+ +
-
+
+ followers:211
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + + Nimo TV + +
+
+
+
+
+
+
+
+
+
+
+
+ + + 幸运草 + +
+
+
+
+ + + 咖啡 + +
+
+
+
+ + + 粉絲票 + +
+
+
+
+ + + 禮盒 + + + + Nimo TV + +
+
+
+
+ + + 彩蛋 + + + + Nimo TV + +
+
+
+
+ + + Carriage + + + + Nimo TV + +
+
+
+
+ + + 跑车 + + + + Nimo TV + +
+
+
+
+ + + 火箭 + + + + Nimo TV + +
+
+
+
+ + + Vietnam is the best + +
+
+
+
+ + + Romantic Skywheel + +
+
+
+
+ + + 丘比特 + +
+
+
+
+ + + 撒錢 + +
+
+
+
+ + + 旋轉木馬 + + + + Nimo TV + +
+
+
+
+ + + 摩托车 + +
+
+
+
+ + + 血瓶 + +
+
+
+
+ + + 炸彈 + +
+
+
+
+ + + 螢光棒 + +
+
+
+
+ + + 口罩 + +
+
+
+
+ + + 魔法書 + +
+
+
+
+
+
+
+
+
+
+
0 +
+
0 +
+
0 +
+
+
+
+
+
+
+
+
+
+
+ 貢獻榜
+
+ 貴賓席 (0)
+
+
粉絲榜
+
+
+
+
+
+ 我的王座還空著,快去收集禮物吧~
+
+
+
+
該主播未創建粉絲團
+
+
+
+
+
+
+
+
+
+
+
+ + 系統消息:Nimo官方提倡綠色直播,對直播內容進行24小時線上巡查。任何傳播違法、違規、低俗、暴力等不當訊息的行為將被停用帳號。請勿與他人私下交易轉帳,以免上當受騙。 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
    + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
  • +
  • +
  • +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
    + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
  • +
  • +
  • +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
    + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
  • + +
  • +
  • +
  • +
  • +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ + + +
+
+ +

+ 升級一下你的瀏覽器吧,使用體驗會很棒喲!

+
+
+
+
Chrome
+ 下載 +
+
+
+
Firefox
+ 下載 +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/utils.go b/utils.go index 2ed1a79..c3b9ac1 100644 --- a/utils.go +++ b/utils.go @@ -87,9 +87,12 @@ func GetChromeDriver(port int) selenium.WebDriver { caps := selenium.Capabilities{"browserName": "chrome"} chromecaps := chrome.Capabilities{} + + // chromecaps.AddExtension("/home/eson/test/myblock.crx") for _, epath := range []string{"../../../crx/myblock.crx", "../../crx/myblock.crx"} { _, err := os.Stat(epath) if err == nil { + err := chromecaps.AddExtension(epath) if err != nil { panic(err)