temporary commit

This commit is contained in:
VnPower 2023-05-16 06:21:20 +07:00
parent 847aa17a92
commit 08d4ad389e
Signed by: vnpower
GPG key ID: 881DE3DEB966106C
2 changed files with 97 additions and 9 deletions

View file

@ -2,6 +2,7 @@ package entity
import (
"html/template"
"regexp"
"time"
)
@ -9,7 +10,6 @@ type Illust struct {
ID int `json:"id"`
Title string `json:"title"`
Caption template.HTML `json:"caption"`
Images map[string]string `json:"image_urls"`
Artist UserBrief `json:"user"`
Date time.Time `json:"create_date"`
Pages int `json:"page_count"`
@ -18,6 +18,41 @@ type Illust struct {
SingleImage map[string]string `json:"meta_single_page"`
MultipleImage []map[string]map[string]string `json:"meta_pages"`
Tags []Tag `json:"tags"`
Images map[string]string `json:"image_urls"`
ImagesAlt []Image
}
func ProxyImages(url string) string {
regex := regexp.MustCompile(`i\.pximg\.net`)
proxy := "px2.rainchan.win"
return regex.ReplaceAllString(url, proxy)
}
func (c *Illust) ParseImages() {
var images []Image
if c.Pages > 1 {
for _, imageMap := range c.MultipleImage {
var image Image
image.Small = imageMap["image_urls"]["square_medium"]
image.Medium = imageMap["image_urls"]["medium"]
image.Large = imageMap["image_urls"]["large"]
image.Original = imageMap["image_urls"]["original"]
images = append(images, image)
}
} else {
var image Image
image.Small = c.Images["square_medium"]
image.Medium = c.Images["medium"]
image.Large = c.Images["large"]
image.Original = c.Images["original"]
images = append(images, image)
}
c.ImagesAlt = images
}
type Spotlight struct {
@ -39,3 +74,10 @@ type UserBrief struct {
Account string `json:"account"`
Avatar map[string]string `json:"profile_image_urls"`
}
type Image struct {
Small string `json:"square_medium"`
Medium string `json:"medium"`
Large string `json:"large"`
Original string `json:"original"`
}

View file

@ -4,6 +4,7 @@ import (
"encoding/json"
"net/http"
"pixivfe/entity"
"regexp"
"io/ioutil"
@ -11,18 +12,62 @@ import (
"github.com/tidwall/gjson"
)
func ParseIllusts(URL string) []entity.Illust {
// TODO: Clean the models
var illusts []entity.Illust
func ImageProxy(url string) string {
s := Request(URL)
g := GetInnerJSON(s, "illusts")
regex := regexp.MustCompile(`i\.pximg\.net`)
proxy := "px2.rainchan.win"
err := json.Unmarshal([]byte(g), &illusts)
if err != nil {
panic("Failed to parse JSON")
return regex.ReplaceAllString(url, proxy)
}
func ParseImages(data string) []entity.Image {
var images []entity.Image
if gjson.Get(data, "meta_single_page.original_image_url").Exists() {
var image entity.Image
image.Small = ImageProxy(gjson.Get(data, "image_urls.square_medium").String())
image.Medium = ImageProxy(gjson.Get(data, "image_urls.medium").String())
image.Large = ImageProxy(gjson.Get(data, "image_urls.large").String())
image.Original = ImageProxy(gjson.Get(data, "meta_single_page.original_image_url").String())
images = append(images, image)
} else {
g := GetInnerJSON(data, "meta_pages.#.image_urls")
err := json.Unmarshal([]byte(g), &images)
if err != nil {
panic(err)
}
}
return images
}
func ParseIllust(data string) []entity.Illust {
var illusts []entity.Illust
g := gjson.Get(data, "#")
for _, handle := range g.Array() {
println(handle.String())
println("here")
}
// g.ForEach(func(key, value gjson.Result) bool {
// var illust entity.Illust
// v := value.String()
// println(v)
// err := json.Unmarshal([]byte(v), &illust)
//
// if err != nil {
// panic(err)
// }
//
// illust.Images = ParseImages(v)
// illusts = append(illusts, illust)
// return true
// })
//
// println(illusts)
return illusts
}
@ -31,6 +76,7 @@ func GetRecommendedIllust(c *gin.Context) []entity.Illust {
var illusts []entity.Illust
s := Request(URL)
ParseIllust(s)
g := GetInnerJSON(s, "illusts")
err := json.Unmarshal([]byte(g), &illusts)