// Package bilibiliparse b站视频链接解析 package bilibiliparse import ( "encoding/json" "net/http" "regexp" "strconv" "time" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" "github.com/FloatTech/zbputils/web" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" ) type result struct { Data struct { Bvid string `json:"bvid"` Aid int `json:"aid"` Copyright int `json:"copyright"` Pic string `json:"pic"` Title string `json:"title"` Pubdate int `json:"pubdate"` Ctime int `json:"ctime"` Rights struct { IsCooperation int `json:"is_cooperation"` } `json:"rights"` Owner struct { Mid int `json:"mid"` Name string `json:"name"` } `json:"owner"` Stat struct { Aid int `json:"aid"` View int `json:"view"` Danmaku int `json:"danmaku"` Reply int `json:"reply"` Favorite int `json:"favorite"` Coin int `json:"coin"` Share int `json:"share"` Like int `json:"like"` } `json:"stat"` Staff []struct { Title string `json:"title"` Name string `json:"name"` Follower int `json:"follower"` } `json:"staff"` } `json:"data"` } type owner struct { Data struct { Card struct { Fans int `json:"fans"` } `json:"card"` } `json:"data"` } const ( videoapi = "https://api.bilibili.com/x/web-interface/view?" cardapi = "http://api.bilibili.com/x/web-interface/card?" origin = "https://www.bilibili.com/video/" ) var ( reg = regexp.MustCompile(`https://www.bilibili.com/video/([0-9a-zA-Z]+)`) limit = ctxext.NewLimiterManager(time.Second*10, 1) ) // 插件主体 func init() { en := control.Register("bilibiliparse", &ctrl.Options[*zero.Ctx]{ 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", }) en.OnRegex(`(?