temporary commit
This commit is contained in:
parent
847aa17a92
commit
08d4ad389e
2 changed files with 97 additions and 9 deletions
|
@ -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"`
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue