diff --git a/setutime/utils/download.go b/api/pixiv/download.go similarity index 99% rename from setutime/utils/download.go rename to api/pixiv/download.go index 3c0ee9a7..3640e86b 100644 --- a/setutime/utils/download.go +++ b/api/pixiv/download.go @@ -1,4 +1,4 @@ -package utils +package pixiv import ( "crypto/md5" diff --git a/setutime/utils/pixiv_api.go b/api/pixiv/pixiv_api.go similarity index 67% rename from setutime/utils/pixiv_api.go rename to api/pixiv/pixiv_api.go index 09a20307..7b027277 100644 --- a/setutime/utils/pixiv_api.go +++ b/api/pixiv/pixiv_api.go @@ -1,4 +1,4 @@ -package utils +package pixiv import ( "crypto/tls" @@ -92,3 +92,46 @@ func (this *Illust) IllustInfo(id int64) (err error) { this.UserName = json.Get("userName").Str return nil } + +// BigPic 返回一张XML大图CQ码 +func (i *Illust) BigPic(file string) string { + var hash = PicHash(file) + return fmt.Sprintf(`[CQ:xml,data= + +]`, + hash, + hash, + hash, + i.Title, + i.Pid, + i.UserName, + ) +} + +// NormalPic 返回一张普通图CQ码 +func (i *Illust) NormalPic(file string) string { + return fmt.Sprintf(`[CQ:image,file=file:///%s]`, file) +} + +// DetailPic 返回一张带详细信息的图片CQ码 +func (i *Illust) DetailPic(file string) string { + return fmt.Sprintf(`[SetuTime] %s +标题:%s +插画ID:%d +画师:%s +画师ID:%d +直链:https://pixivel.moe/detail?id=%d`, + i.NormalPic(file), + i.Title, + i.Pid, + i.UserName, + i.UserId, + i.Pid, + ) +} diff --git a/setutime/utils/utils.go b/api/pixiv/utils.go similarity index 98% rename from setutime/utils/utils.go rename to api/pixiv/utils.go index e4c4013c..21e1733d 100644 --- a/setutime/utils/utils.go +++ b/api/pixiv/utils.go @@ -1,4 +1,4 @@ -package utils +package pixiv import ( "os" diff --git a/build_mips.sh b/build_mips.sh index 4fac2088..98abb55e 100755 --- a/build_mips.sh +++ b/build_mips.sh @@ -4,4 +4,4 @@ go env -w GO111MODULE=auto go mod tidy export CCBIN=~/openwrt_with_lean_packages/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/bin/mips-openwrt-linux-musl-gcc export CXXBIN=~/openwrt_with_lean_packages/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/bin/mips-openwrt-linux-musl-g++ -GOOS=linux GOARCH=mips GOMIPS=softfloat CGO_ENABLED=1 CC=${CCBIN} CXX=${CXXBIN} go build -ldflags "-s -w" -o zerobot \ No newline at end of file +GOOS=linux GOARCH=mips GOMIPS=softfloat CGO_ENABLED=0 CC=${CCBIN} CXX=${CXXBIN} go build -ldflags "-s -w" -o zerobot \ No newline at end of file diff --git a/main.go b/main.go index c065ed9a..a431de5f 100644 --- a/main.go +++ b/main.go @@ -23,10 +23,11 @@ import ( _ "github.com/Yiwen-Chan/ZeroBot-Plugin/runcode" // 在线运行代码 // 娱乐类 - _ "github.com/Yiwen-Chan/ZeroBot-Plugin/music" // 点歌 - _ "github.com/Yiwen-Chan/ZeroBot-Plugin/randimg" //简易随机图片 - _ "github.com/Yiwen-Chan/ZeroBot-Plugin/setutime" // 涩图 - _ "github.com/Yiwen-Chan/ZeroBot-Plugin/shindan" // 测定 + _ "github.com/Yiwen-Chan/ZeroBot-Plugin/music" // 点歌 + _ "github.com/Yiwen-Chan/ZeroBot-Plugin/picsearcher" // 搜图 + _ "github.com/Yiwen-Chan/ZeroBot-Plugin/randimg" //简易随机图片 + _ "github.com/Yiwen-Chan/ZeroBot-Plugin/setutime" // 涩图 + _ "github.com/Yiwen-Chan/ZeroBot-Plugin/shindan" // 测定 ) func init() { diff --git a/setutime/pic_searcher.go b/picsearcher/pic_searcher.go similarity index 88% rename from setutime/pic_searcher.go rename to picsearcher/pic_searcher.go index 5b9a6840..09904be3 100644 --- a/setutime/pic_searcher.go +++ b/picsearcher/pic_searcher.go @@ -1,4 +1,4 @@ -package setutime +package picsearcher import ( "fmt" @@ -9,17 +9,24 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" - utils "github.com/Yiwen-Chan/ZeroBot-Plugin/setutime/utils" + "github.com/Yiwen-Chan/ZeroBot-Plugin/api/pixiv" + utils "github.com/Yiwen-Chan/ZeroBot-Plugin/picsearcher/utils" +) + +var ( + BOTPATH = pixiv.PathExecute() // 当前bot运行目录 + DATAPATH = BOTPATH + "data/SetuTime/" // 数据目录 + CACHEPATH = DATAPATH + "cache/" // 缓冲图片路径 ) func init() { // 插件主体 // 根据PID搜图 zero.OnRegex(`^搜图(\d+)$`).SetBlock(true).SetPriority(30). Handle(func(ctx *zero.Ctx) { - id := utils.Str2Int(ctx.State["regex_matched"].([]string)[1]) + id := pixiv.Str2Int(ctx.State["regex_matched"].([]string)[1]) ctx.Send("少女祈祷中......") // 获取P站插图信息 - illust := &utils.Illust{} + illust := &pixiv.Illust{} if err := illust.IllustInfo(id); err != nil { ctx.Send(fmt.Sprintf("ERROR: %v", err)) return diff --git a/setutime/utils/ascii2d.go b/picsearcher/utils/ascii2d.go similarity index 95% rename from setutime/utils/ascii2d.go rename to picsearcher/utils/ascii2d.go index 82ecbec6..d4c3a6ef 100644 --- a/setutime/utils/ascii2d.go +++ b/picsearcher/utils/ascii2d.go @@ -6,6 +6,7 @@ import ( "net/url" "strings" + "github.com/Yiwen-Chan/ZeroBot-Plugin/api/pixiv" xpath "github.com/antchfx/htmlquery" "github.com/wdvxdr1123/ZeroBot/message" ) @@ -71,12 +72,12 @@ func Ascii2dSearch(pic string) (message.Message, error) { if link == "" || index == -1 { return nil, fmt.Errorf("Ascii2d not found") } - var id = Str2Int(link[index+1:]) + var id = pixiv.Str2Int(link[index+1:]) if id == 0 { return nil, fmt.Errorf("convert to pid error") } // 根据PID查询插图信息 - var illust = &Illust{} + var illust = &pixiv.Illust{} if err := illust.IllustInfo(id); err != nil { return nil, err } diff --git a/setutime/utils/saucenao.go b/picsearcher/utils/saucenao.go similarity index 100% rename from setutime/utils/saucenao.go rename to picsearcher/utils/saucenao.go diff --git a/setutime/setu_geter.go b/setutime/setu_geter.go index c8e4f0d5..cb0a44fa 100644 --- a/setutime/setu_geter.go +++ b/setutime/setu_geter.go @@ -9,13 +9,14 @@ import ( zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/extension/rate" + "github.com/Yiwen-Chan/ZeroBot-Plugin/api/pixiv" "github.com/Yiwen-Chan/ZeroBot-Plugin/setutime/utils" ) var limit = rate.NewManager(time.Minute*1, 5) var ( - BOTPATH = utils.PathExecute() // 当前bot运行目录 + BOTPATH = pixiv.PathExecute() // 当前bot运行目录 DATAPATH = BOTPATH + "data/SetuTime/" // 数据目录 DBPATH = DATAPATH + "SetuTime.db" // 数据库路径 @@ -33,11 +34,11 @@ func init() { PoolsCache.Group = CACHEGROUP // 图片缓冲群 PoolsCache.Path = CACHEPATH // 缓冲图片路径 - utils.CreatePath(DBPATH) - utils.CreatePath(CACHEPATH) + pixiv.CreatePath(DBPATH) + pixiv.CreatePath(CACHEPATH) for i := range PoolList { - if err := DB.Create(PoolList[i], &utils.Illust{}); err != nil { + if err := DB.Create(PoolList[i], &pixiv.Illust{}); err != nil { panic(err) } } @@ -53,9 +54,9 @@ func init() { // 插件主体 var type_ = ctx.State["regex_matched"].([]string)[1] // 补充池子 go func() { - times := utils.Min(PoolsCache.Max-PoolsCache.Size(type_), 2) + times := pixiv.Min(PoolsCache.Max-PoolsCache.Size(type_), 2) for i := 0; i < times; i++ { - illust := &utils.Illust{} + illust := &pixiv.Illust{} // 查询出一张图片 if err := DB.Select(type_, illust, "ORDER BY RANDOM() limit 1"); err != nil { ctx.Send(fmt.Sprintf("ERROR: %v", err)) @@ -96,8 +97,8 @@ func init() { // 插件主体 Handle(func(ctx *zero.Ctx) { var ( type_ = ctx.State["regex_matched"].([]string)[1] - id = utils.Str2Int(ctx.State["regex_matched"].([]string)[2]) - illust = &utils.Illust{} + id = pixiv.Str2Int(ctx.State["regex_matched"].([]string)[2]) + illust = &pixiv.Illust{} ) ctx.Send("少女祈祷中......") // 查询P站插图信息 @@ -129,7 +130,7 @@ func init() { // 插件主体 Handle(func(ctx *zero.Ctx) { var ( type_ = ctx.State["regex_matched"].([]string)[1] - id = utils.Str2Int(ctx.State["regex_matched"].([]string)[2]) + id = pixiv.Str2Int(ctx.State["regex_matched"].([]string)[2]) ) // 查询数据库 if err := DB.Delete(type_, fmt.Sprintf("WHERE pid=%d", id)); err != nil { diff --git a/setutime/utils/pic_pool.go b/setutime/utils/pic_pool.go index 7692a2bd..17ab21a0 100644 --- a/setutime/utils/pic_pool.go +++ b/setutime/utils/pic_pool.go @@ -3,6 +3,8 @@ package utils import ( "fmt" "sync" + + "github.com/Yiwen-Chan/ZeroBot-Plugin/api/pixiv" ) // PoolsCache 图片缓冲池 @@ -11,7 +13,7 @@ type PoolsCache struct { Max int Path string Group int64 - Pool map[string][]*Illust + Pool map[string][]*pixiv.Illust } // NewPoolsCache 返回一个缓冲池对象 @@ -20,7 +22,7 @@ func NewPoolsCache() *PoolsCache { Max: 10, Path: "./data/SetuTime/cache/", Group: 1048452984, - Pool: map[string][]*Illust{}, + Pool: map[string][]*pixiv.Illust{}, } } @@ -35,7 +37,7 @@ func (p *PoolsCache) IsFull(type_ string) bool { } // Push 向缓冲池插入一张图片,返回错误 -func (p *PoolsCache) Push(type_ string, illust *Illust) (err error) { +func (p *PoolsCache) Push(type_ string, illust *pixiv.Illust) (err error) { p.Lock.Lock() defer p.Lock.Unlock() p.Pool[type_] = append(p.Pool[type_], illust) @@ -43,7 +45,7 @@ func (p *PoolsCache) Push(type_ string, illust *Illust) (err error) { } // Push 在缓冲池拿出一张图片,返回错误 -func (p *PoolsCache) Pop(type_ string) (illust *Illust) { +func (p *PoolsCache) Pop(type_ string) (illust *pixiv.Illust) { p.Lock.Lock() defer p.Lock.Unlock() if p.Size(type_) == 0 { @@ -69,46 +71,3 @@ func (p *PoolsCache) GetOnePic(type_ string, form string) string { return illust.NormalPic(file) } } - -// BigPic 返回一张XML大图CQ码 -func (i *Illust) BigPic(file string) string { - var hash = PicHash(file) - return fmt.Sprintf(`[CQ:xml,data= - -]`, - hash, - hash, - hash, - i.Title, - i.Pid, - i.UserName, - ) -} - -// NormalPic 返回一张普通图CQ码 -func (i *Illust) NormalPic(file string) string { - return fmt.Sprintf(`[CQ:image,file=file:///%s]`, file) -} - -// DetailPic 返回一张带详细信息的图片CQ码 -func (i *Illust) DetailPic(file string) string { - return fmt.Sprintf(`[SetuTime] %s -标题:%s -插画ID:%d -画师:%s -画师ID:%d -直链:https://pixivel.moe/detail?id=%d`, - i.NormalPic(file), - i.Title, - i.Pid, - i.UserName, - i.UserId, - i.Pid, - ) -}