From e9ed31155689ce237f3110e94b71940603fa6104 Mon Sep 17 00:00:00 2001 From: Guohuiyuan Date: Sat, 19 Feb 2022 17:42:16 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9vtb=E8=AF=AD=E5=BD=95?= =?UTF-8?q?=E5=AD=98=E4=B8=BA=E6=9C=AC=E5=9C=B0=E8=B7=AF=E5=BE=84,?= =?UTF-8?q?=E5=8E=BB=E6=8E=89bilibilipush=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin_bilibili_push/bilibili_push.go | 5 -- plugin_vtb_quotation/vtb_quotation.go | 70 ++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 7 deletions(-) diff --git a/plugin_bilibili_push/bilibili_push.go b/plugin_bilibili_push/bilibili_push.go index 878f663989..2898553b63 100644 --- a/plugin_bilibili_push/bilibili_push.go +++ b/plugin_bilibili_push/bilibili_push.go @@ -75,14 +75,9 @@ func init() { // 加载数据库 go func() { dbpath := en.DataFolder() - cachePath := dbpath + "cache/" dbfile := dbpath + "push.db" defer order.DoneOnExit()() _ = os.RemoveAll(en.DataFolder() + "cache") - err := os.MkdirAll(cachePath, 0755) - if err != nil { - panic(err) - } bdb = initialize(dbfile) log.Println("[bilibilipush]加载bilibilipush数据库") }() diff --git a/plugin_vtb_quotation/vtb_quotation.go b/plugin_vtb_quotation/vtb_quotation.go index 40a0c12c2c..eeefb1379d 100644 --- a/plugin_vtb_quotation/vtb_quotation.go +++ b/plugin_vtb_quotation/vtb_quotation.go @@ -2,7 +2,12 @@ package vtbquotation import ( + "crypto/tls" + "fmt" + "io" + "net/http" "net/url" + "os" "regexp" "strconv" "strings" @@ -24,6 +29,7 @@ import ( ) const regStr = ".*/(.*)" +const recordRe = "(\\.mp3|\\.wav|\\.wma|\\.mpa|\\.ram|\\.ra|\\.aac|\\.aif|\\.m4a|\\.tsa)" func init() { engine := control.Register("vtbquotation", order.AcquirePrio(), &control.Options{ @@ -32,8 +38,13 @@ func init() { PublicDataFolder: "VtbQuotation", }) dbfile := engine.DataFolder() + "vtb.db" + storePath := engine.DataFolder() + "store/" go func() { defer order.DoneOnExit()() + err := os.MkdirAll(storePath, 0755) + if err != nil { + panic(err) + } _, _ = file.GetLazyData(dbfile, false, false) }() engine.OnFullMatch("vtb语录").SetBlock(true). @@ -164,7 +175,19 @@ func init() { // log.Println(recordUrl) } ctx.SendChain(message.Reply(e.MessageID), message.Text("请欣赏《"+tc.ThirdCategoryName+"》")) - ctx.SendChain(message.Record(recURL)) + re := regexp.MustCompile(recordRe) + if !re.MatchString(recURL) { + log.Errorln("[vtb]:文件格式不匹配") + return + } + format := re.FindStringSubmatch(recURL)[1] + recordFile := storePath + fmt.Sprintf("%d-%d-%d", firstIndex, secondIndex, thirdIndex) + format + if file.IsExist(recordFile) { + ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile)) + return + } + initRecord(recordFile, recURL) + ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile)) return } } @@ -194,7 +217,19 @@ func init() { recURL = strings.ReplaceAll(recURL, "+", "%20") } ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("请欣赏"+fc.FirstCategoryName+"的《"+tc.ThirdCategoryName+"》")) - ctx.SendChain(message.Record(recURL)) + re := regexp.MustCompile(recordRe) + if !re.MatchString(recURL) { + log.Errorln("[vtb]:文件格式不匹配") + return + } + format := re.FindStringSubmatch(recURL)[1] + recordFile := storePath + fmt.Sprintf("%d-%d-%d", fc.FirstCategoryIndex, tc.SecondCategoryIndex, tc.ThirdCategoryIndex) + format + if file.IsExist(recordFile) { + ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile)) + return + } + initRecord(recordFile, recURL) + ctx.SendChain(message.Record("file:///" + file.BOTPATH + "/" + recordFile)) } db.Close() }) @@ -214,3 +249,34 @@ func init() { ctx.Send("vtb数据库已更新") }) } + +func initRecord(recordFile, recordURL string) { + if file.IsNotExist(recordFile) { + transport := http.Transport{ + TLSClientConfig: &tls.Config{ + MaxVersion: tls.VersionTLS12, + }, + } + client := &http.Client{ + Transport: &transport, + } + req, _ := http.NewRequest("GET", recordURL, nil) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0") + resp, err := client.Do(req) + if err != nil { + log.Errorln("[vtb]:", err) + return + } + defer resp.Body.Close() + data, err := io.ReadAll(resp.Body) + if err != nil { + log.Errorln("[vtb]:", err) + return + } + err = os.WriteFile(recordFile, data, 0666) + if err != nil { + log.Errorln("[vtb]:", err) + } + } +} From 6ae97ae7a8ac4a3362fc9fdd0870b74f46424d51 Mon Sep 17 00:00:00 2001 From: himawari <1156544355@qq.com> Date: Sat, 19 Feb 2022 23:29:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:bilibiliparse=E6=B7=BB=E5=8A=A0up?= =?UTF-8?q?=E5=92=8C=E7=B2=89=E4=B8=9D=E6=95=B0=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?bilibilipush=E7=9A=84=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- plugin_bilibili_parse/bilibili_parse.go | 14 ++++++++++---- plugin_bilibili_push/bilibili_push.go | 4 +--- plugin_vtb_quotation/vtb_quotation.go | 7 +++++-- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9711257932..61517fd308 100644 --- a/README.md +++ b/README.md @@ -279,7 +279,7 @@ zerobot [-h] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地 - **网易云音乐热评** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_wangyiyun"` - [x] 来份网易云热评 - **b站视频链接解析** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_bilibili_parse"` - - [x] https://www.bilibili.com/video/BV1xx411c7BF | https://www.bilibili.com/video/av1605 | https://b23.tv/I8uzWCA + - [x] https://www.bilibili.com/video/BV1xx411c7BF | https://www.bilibili.com/video/av1605 | https://b23.tv/I8uzWCA | https://www.bilibili.com/video/bv1xx411c7BF - **煎蛋网无聊图** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin_jandan"` - [x] 来份屌图 - [x] 更新屌图 diff --git a/plugin_bilibili_parse/bilibili_parse.go b/plugin_bilibili_parse/bilibili_parse.go index e25991a9ec..b979491208 100644 --- a/plugin_bilibili_parse/bilibili_parse.go +++ b/plugin_bilibili_parse/bilibili_parse.go @@ -2,6 +2,7 @@ package bilibiliparse import ( + "fmt" "regexp" "strings" @@ -15,7 +16,7 @@ import ( ) var ( - bilibiliRe = "https://www.bilibili.com/video/av[0-9]+|https://www.bilibili.com/video/BV[0-9a-zA-Z]+|https://b23.tv/[0-9a-zA-Z]+" + bilibiliRe = "https://www.bilibili.com/video/av[0-9]+|https://www.bilibili.com/video/BV[0-9a-zA-Z]+|https://b23.tv/[0-9a-zA-Z]+|https://www.bilibili.com/video/bv[0-9a-zA-Z]+" validRe = "https://www.bilibili.com/video/(BV[0-9a-zA-Z]+)" ) @@ -23,7 +24,7 @@ func init() { engine := control.Register("bilibiliparse", order.AcquirePrio(), &control.Options{ DisableOnDefault: false, Help: "b站视频链接解析\n" + - "- https://www.bilibili.com/video/BV1xx411c7BF | https://www.bilibili.com/video/av1605 | https://b23.tv/I8uzWCA", + "- https://www.bilibili.com/video/BV1xx411c7BF | https://www.bilibili.com/video/av1605 | https://b23.tv/I8uzWCA | https://www.bilibili.com/video/bv1xx411c7BF", }) engine.OnRegex(bilibiliRe).SetBlock(true).Handle(func(ctx *zero.Ctx) { @@ -48,6 +49,11 @@ func parseURL(bilibiliURL string) (m message.Message) { bv := re.FindStringSubmatch(videoURL)[1] title := htmlquery.FindOne(doc, "//*[@id='viewbox_report']/h1/span/text()").Data m = append(m, message.Text(title+"\n")) + upName := strings.TrimSpace(htmlquery.FindOne(doc, "//*[@id='v_upinfo']/div[2]/div[1]/a[1]/text()").Data) + fmt.Println(upName) + fanNumber := htmlquery.InnerText(htmlquery.FindOne(doc, "//i[@class='van-icon-general_addto_s']").NextSibling.NextSibling) + fmt.Println(fanNumber) + m = append(m, message.Text("up:"+upName+",粉丝:"+fanNumber+"\n")) view := htmlquery.FindOne(doc, "//*[@id='viewbox_report']/div/span[@class='view']/text()").Data dm := htmlquery.FindOne(doc, "//*[@id='viewbox_report']/div/span[@class='dm']/text()").Data m = append(m, message.Text(view+dm+"\n")) @@ -57,10 +63,10 @@ func parseURL(bilibiliURL string) (m message.Message) { m = append(m, message.Image(image)) like := htmlquery.FindOne(doc, "//*[@id='arc_toolbar_report']/div[1]/span[@class='like']/text()").Data coin := htmlquery.FindOne(doc, "//*[@id='arc_toolbar_report']/div[1]/span[@class='coin']/text()").Data - m = append(m, message.Text("\n点赞:", strings.TrimSpace(like)+"投币:", strings.TrimSpace(coin)+"\n")) + m = append(m, message.Text("\n点赞:", strings.TrimSpace(like)+",投币:", strings.TrimSpace(coin)+"\n")) collect := htmlquery.FindOne(doc, "//*[@id='arc_toolbar_report']/div[1]/span[@class='collect']/text()").Data share := htmlquery.FindOne(doc, "//*[@id='arc_toolbar_report']/div[1]/span[@class='share']/text()").Data - m = append(m, message.Text("收藏:", strings.TrimSpace(collect)+"分享:", strings.TrimSpace(share)+"\n")) + m = append(m, message.Text("收藏:", strings.TrimSpace(collect)+",分享:", strings.TrimSpace(share)+"\n")) m = append(m, message.Text(bv)) return } diff --git a/plugin_bilibili_push/bilibili_push.go b/plugin_bilibili_push/bilibili_push.go index 2898553b63..cca2750c21 100644 --- a/plugin_bilibili_push/bilibili_push.go +++ b/plugin_bilibili_push/bilibili_push.go @@ -7,7 +7,6 @@ import ( "fmt" "io" "net/http" - "os" "strconv" "time" @@ -77,7 +76,6 @@ func init() { dbpath := en.DataFolder() dbfile := dbpath + "push.db" defer order.DoneOnExit()() - _ = os.RemoveAll(en.DataFolder() + "cache") bdb = initialize(dbfile) log.Println("[bilibilipush]加载bilibilipush数据库") }() @@ -383,7 +381,7 @@ func sendDynamic() { msg = append(msg, message.Text(cContent+"\n")) case 8: cName := gjson.Get(cOrigin, "owner.name").String() - cTime := time.Unix(gjson.Get(cOrigin, "ctime").Int(), 0).Format("2006-01-02 15:04:05") + cTime := time.Unix(gjson.Get(cOrigin, "pubdate").Int(), 0).Format("2006-01-02 15:04:05") msg = append(msg, message.Text(cName+"在"+cTime+typeMsg[cOrigType]+"\n")) cTitle := gjson.Get(cOrigin, "title").String() msg = append(msg, message.Text(cTitle)) diff --git a/plugin_vtb_quotation/vtb_quotation.go b/plugin_vtb_quotation/vtb_quotation.go index 7098319f7c..65b4643a39 100644 --- a/plugin_vtb_quotation/vtb_quotation.go +++ b/plugin_vtb_quotation/vtb_quotation.go @@ -31,6 +31,10 @@ import ( const regStr = ".*/(.*)" const recordRe = "(\\.mp3|\\.wav|\\.wma|\\.mpa|\\.ram|\\.ra|\\.aac|\\.aif|\\.m4a|\\.tsa)" +var ( + re = regexp.MustCompile(recordRe) +) + func init() { engine := control.Register("vtbquotation", order.AcquirePrio(), &control.Options{ DisableOnDefault: false, @@ -175,7 +179,7 @@ func init() { // log.Println(recordUrl) } ctx.SendChain(message.Reply(e.MessageID), message.Text("请欣赏《"+tc.ThirdCategoryName+"》")) - re := regexp.MustCompile(recordRe) + if !re.MatchString(recURL) { log.Errorln("[vtb]:文件格式不匹配") return @@ -217,7 +221,6 @@ func init() { recURL = strings.ReplaceAll(recURL, "+", "%20") } ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("请欣赏"+fc.FirstCategoryName+"的《"+tc.ThirdCategoryName+"》")) - re := regexp.MustCompile(recordRe) if !re.MatchString(recURL) { log.Errorln("[vtb]:文件格式不匹配") return From ef6de8fd3982481c67f7475c9f9e1b85cf17c83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Sat, 19 Feb 2022 23:53:00 +0800 Subject: [PATCH 3/3] Update bilibili_parse.go --- plugin_bilibili_parse/bilibili_parse.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin_bilibili_parse/bilibili_parse.go b/plugin_bilibili_parse/bilibili_parse.go index b979491208..b2d2e36a48 100644 --- a/plugin_bilibili_parse/bilibili_parse.go +++ b/plugin_bilibili_parse/bilibili_parse.go @@ -15,7 +15,7 @@ import ( "github.com/FloatTech/zbputils/control/order" ) -var ( +const ( bilibiliRe = "https://www.bilibili.com/video/av[0-9]+|https://www.bilibili.com/video/BV[0-9a-zA-Z]+|https://b23.tv/[0-9a-zA-Z]+|https://www.bilibili.com/video/bv[0-9a-zA-Z]+" validRe = "https://www.bilibili.com/video/(BV[0-9a-zA-Z]+)" )