forked from FloatTech/ZeroBot-Plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
搜图api 8太行,以后找到更好的再换
- Loading branch information
Showing
1 changed file
with
107 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package setutime | ||
|
||
import ( | ||
"encoding/json" | ||
"fmt" | ||
zero "github.com/wdvxdr1123/ZeroBot" | ||
"github.com/wdvxdr1123/ZeroBot/message" | ||
"math/rand" | ||
"net/http" | ||
"time" | ||
) | ||
|
||
|
||
type AutoGenerated struct { | ||
Illusts []struct { | ||
ID int `json:"id"` | ||
Title string `json:"title"` | ||
Type string `json:"type"` | ||
ImageUrls struct { | ||
SquareMedium string `json:"square_medium"` | ||
Medium string `json:"medium"` | ||
Large string `json:"large"` | ||
} `json:"image_urls"` | ||
Caption string `json:"caption"` | ||
Restrict int `json:"restrict"` | ||
User struct { | ||
ID int `json:"id"` | ||
Name string `json:"name"` | ||
Account string `json:"account"` | ||
ProfileImageUrls struct { | ||
Medium string `json:"medium"` | ||
} `json:"profile_image_urls"` | ||
IsFollowed bool `json:"is_followed"` | ||
} `json:"user"` | ||
Tags []struct { | ||
Name string `json:"name"` | ||
TranslatedName interface{} `json:"translated_name"` | ||
} `json:"tags"` | ||
Tools []interface{} `json:"tools"` | ||
PageCount int `json:"page_count"` | ||
Width int `json:"width"` | ||
Height int `json:"height"` | ||
SanityLevel int `json:"sanity_level"` | ||
XRestrict int `json:"x_restrict"` | ||
Series interface{} `json:"series"` | ||
MetaSinglePage struct { | ||
OriginalImageURL string `json:"original_image_url"` | ||
} `json:"meta_single_page,omitempty"` | ||
MetaPages []interface{} `json:"meta_pages"` | ||
TotalView int `json:"total_view"` | ||
TotalBookmarks int `json:"total_bookmarks"` | ||
IsBookmarked bool `json:"is_bookmarked"` | ||
Visible bool `json:"visible"` | ||
IsMuted bool `json:"is_muted"` | ||
} `json:"illusts"` | ||
NextURL string `json:"next_url"` | ||
SearchSpanLimit int `json:"search_span_limit"` | ||
} | ||
|
||
|
||
func init() { | ||
zero.OnRegex(`^来张 (.*)$`, zero.AdminPermission). | ||
Handle(func(ctx *zero.Ctx) { | ||
keyword := ctx.State["regex_matched"].([]string)[1] | ||
soutujson := soutuapi(keyword) | ||
pom1 := "https://i.pixiv.cat" | ||
rannum := Suiji() | ||
pom2 := soutujson.Illusts[rannum].ImageUrls.Large[19:] | ||
ctx.SendChain(message.Image(pom1 + pom2)) | ||
}) | ||
|
||
} | ||
|
||
|
||
// 请求api | ||
func soutuapi(keyword string) *AutoGenerated { | ||
|
||
url := "https://api.pixivel.moe/pixiv?type=search&page=0&mode=partial_match_for_tags&word=" + keyword | ||
method := "GET" | ||
|
||
client := &http.Client { | ||
} | ||
req, err := http.NewRequest(method, url, nil) | ||
|
||
if err != nil { | ||
fmt.Println(err) | ||
} | ||
req.Header.Add("accept", "application/json, text/plain, */*") | ||
|
||
res, err := client.Do(req) | ||
if err != nil { | ||
fmt.Println(err) | ||
} | ||
defer res.Body.Close() | ||
|
||
result := &AutoGenerated{} | ||
if err := json.NewDecoder(res.Body).Decode(result); err != nil { | ||
panic(err) | ||
} | ||
return result | ||
} | ||
|
||
//从json里的30条数据中随机获取一条返回 | ||
func Suiji() int { | ||
rand.Seed(time.Now().UnixNano()) | ||
return rand.Intn(30) | ||
} |