From b09025a330d2f1ef86be53f90393e0f7516489eb 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: Wed, 1 May 2024 02:27:18 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20del=20cangtoushi=20due=20to=20?= =?UTF-8?q?=E4=BD=BF=E3=81=88=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 --- main.go | 1 - plugin/cangtoushi/cangtoushi.go | 139 -------------------------------- 3 files changed, 150 deletions(-) delete mode 100644 plugin/cangtoushi/cangtoushi.go diff --git a/README.md b/README.md index 21c6ad5c..efcdea19 100644 --- a/README.md +++ b/README.md @@ -540,16 +540,6 @@ print("run[CQ:image,file="+j["img"]+"]") - [x] 随机书评 - -
- 藏头诗 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/cangtoushi"` - - - [x] 藏头诗[xxx] - - - [x] 藏尾诗[xxx] -
选择困难症帮手 diff --git a/main.go b/main.go index a0623b8b..47967b88 100644 --- a/main.go +++ b/main.go @@ -71,7 +71,6 @@ import ( _ "github.com/FloatTech/ZeroBot-Plugin/plugin/baseamasiro" // base天城文加解密 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili" // b站相关 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bookreview" // 哀伤雪刃吧推书记录 - _ "github.com/FloatTech/ZeroBot-Plugin/plugin/cangtoushi" // 藏头诗 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chess" // 国际象棋 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose" // 选择困难症帮手 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chouxianghua" // 说抽象话 diff --git a/plugin/cangtoushi/cangtoushi.go b/plugin/cangtoushi/cangtoushi.go deleted file mode 100644 index 74e5455a..00000000 --- a/plugin/cangtoushi/cangtoushi.go +++ /dev/null @@ -1,139 +0,0 @@ -// Package cangtoushi 藏头诗 -package cangtoushi - -import ( - "fmt" - "io" - "net/http" - "net/http/cookiejar" - "net/url" - "strings" - - ctrl "github.com/FloatTech/zbpctrl" - "github.com/FloatTech/zbputils/control" - "github.com/antchfx/htmlquery" - zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/message" - "github.com/wdvxdr1123/ZeroBot/utils/helper" -) - -const ( - loginURL = "https://www.shicimingju.com/cangtoushi/" - searchURL = "https://www.shicimingju.com/cangtoushi/index.html" - ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" - referer = "https://www.shicimingju.com/cangtoushi/index.html" -) - -var ( - gCurCookieJar *cookiejar.Jar - csrf string -) - -func init() { - engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ - DisableOnDefault: false, - Brief: "藏头诗, 藏尾诗", - Help: "- 藏头诗[xxx]\n- 藏尾诗[xxx]", - }) - engine.OnRegex(`藏头诗\s?([一-龥]{3,10})$`).SetBlock(true).Handle(func(ctx *zero.Ctx) { - kw := ctx.State["regex_matched"].([]string)[1] - err := login() - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - data, err := search(kw, "7", "0") - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - text, err := dealHTML(helper.BytesToString(data)) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - ctx.SendChain(message.Text(text)) - }) - - engine.OnRegex(`藏尾诗\s?([一-龥]{3,10})$`).SetBlock(true).Handle(func(ctx *zero.Ctx) { - kw := ctx.State["regex_matched"].([]string)[1] - err := login() - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - data, err := search(kw, "7", "2") - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - text, err := dealHTML(helper.BytesToString(data)) - if err != nil { - ctx.SendChain(message.Text("ERROR: ", err)) - return - } - ctx.SendChain(message.Text(text)) - }) -} - -func login() error { - gCurCookieJar, _ = cookiejar.New(nil) - client := &http.Client{ - Jar: gCurCookieJar, - } - request, err := http.NewRequest("GET", loginURL, nil) - if err != nil { - return err - } - request.Header.Add("User-Agent", ua) - response, err := client.Do(request) - if err != nil { - return err - } - data, err := io.ReadAll(response.Body) - if err != nil { - return err - } - response.Body.Close() - doc, err := htmlquery.Parse(strings.NewReader(helper.BytesToString(data))) - if err != nil { - return err - } - csrf = htmlquery.SelectAttr(htmlquery.FindOne(doc, "//input[@name='_csrf']"), "value") - return nil -} - -func search(kw, zishu, position string) (data []byte, err error) { - postStr := fmt.Sprintf("_csrf=%s&kw=%s&zishu=%s&position=%s", url.QueryEscape(csrf), url.QueryEscape(kw), zishu, position) - client := &http.Client{ - Jar: gCurCookieJar, - } - request, err := http.NewRequest("POST", searchURL, strings.NewReader(postStr)) - if err != nil { - return nil, err - } - request.Header.Add("Referer", referer) - request.Header.Add("User-Agent", ua) - request.Header.Add("Content-Type", "application/x-www-form-urlencoded") - response, err := client.Do(request) - if err != nil { - return nil, err - } - data, err = io.ReadAll(response.Body) - if err != nil { - return nil, err - } - response.Body.Close() - return -} - -func dealHTML(data string) (text string, err error) { - doc, err := htmlquery.Parse(strings.NewReader(data)) - if err != nil { - return "", err - } - text = htmlquery.InnerText(htmlquery.FindOne(doc, "//div[@class='card']/div[@class='card']")) - text = strings.ReplaceAll(text, " ", "") - text = strings.Replace(text, "\n", "", 1) - return text, nil -}