mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-18 20:50:12 +08:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package niuniu
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"image"
|
|
"image/png"
|
|
"net/http"
|
|
|
|
"github.com/FloatTech/AnimeAPI/niu"
|
|
"github.com/FloatTech/floatbox/file"
|
|
"github.com/FloatTech/rendercard"
|
|
"github.com/FloatTech/zbputils/control"
|
|
"github.com/FloatTech/zbputils/img/text"
|
|
zero "github.com/wdvxdr1123/ZeroBot"
|
|
)
|
|
|
|
func processRankingImg(allUsers niu.BaseInfos, ctx *zero.Ctx, t bool) ([]byte, error) {
|
|
fontByte, err := file.GetLazyData(text.GlowSansFontFile, control.Md5File, true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
s := "牛牛长度"
|
|
title := "牛牛长度排行"
|
|
if !t {
|
|
s = "牛牛深度"
|
|
title = "牛牛深度排行"
|
|
}
|
|
ri := make([]*rendercard.RankInfo, len(allUsers))
|
|
for i, user := range allUsers {
|
|
resp, err := http.Get(fmt.Sprintf("https://q1.qlogo.cn/g?b=qq&nk=%d&s=100", user.UID))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
decode, _, err := image.Decode(resp.Body)
|
|
_ = resp.Body.Close()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ri[i] = &rendercard.RankInfo{
|
|
Avatar: decode,
|
|
TopLeftText: ctx.CardOrNickName(user.UID),
|
|
BottomLeftText: fmt.Sprintf("QQ:%d", user.UID),
|
|
RightText: fmt.Sprintf("%s:%.2fcm", s, user.Length),
|
|
}
|
|
}
|
|
img, err := rendercard.DrawRankingCard(fontByte, title, ri)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var buf bytes.Buffer
|
|
err = png.Encode(&buf, img)
|
|
return buf.Bytes(), err
|
|
}
|