mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
Discovery page
This commit is contained in:
@@ -67,7 +67,7 @@ func (s *ServerConfig) InitializeConfig() error {
|
||||
|
||||
acceptLanguage, hasAcceptLanguage := os.LookupEnv("PIXIVFE_ACCEPTLANGUAGE")
|
||||
if !hasAcceptLanguage {
|
||||
userAgent = "Mozilla/5.0"
|
||||
acceptLanguage = "en-US,en;q=0.5"
|
||||
}
|
||||
s.SetAcceptLanguage(acceptLanguage)
|
||||
|
||||
|
||||
@@ -6,3 +6,8 @@ func GetNewestArtworksURL(worktype, r18, lastID string) string {
|
||||
base := "https://www.pixiv.net/ajax/illust/new?limit=30&type=%s&r18=%s&lastId=%s"
|
||||
return fmt.Sprintf(base, worktype, r18, lastID)
|
||||
}
|
||||
|
||||
func GetDiscoveryURL(mode string, limit int) string {
|
||||
base := "https://www.pixiv.net/ajax/discovery/artworks?mode=%s&limit=%d"
|
||||
return fmt.Sprintf(base, mode, limit)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
session "codeberg.org/vnpower/pixivfe/v2/core/config"
|
||||
http "codeberg.org/vnpower/pixivfe/v2/core/http"
|
||||
"github.com/goccy/go-json"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
func GetDiscoveryArtwork(c *fiber.Ctx, mode string) ([]ArtworkBrief, error) {
|
||||
imageProxy := session.GetImageProxy(c)
|
||||
URL := http.GetDiscoveryURL(mode, 100)
|
||||
|
||||
var artworks []ArtworkBrief
|
||||
|
||||
resp, err := http.UnwrapWebAPIRequest(URL)
|
||||
println("here")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp = ProxyImages(resp, imageProxy)
|
||||
data := gjson.Get(resp, "thumbnails.illust").String()
|
||||
|
||||
|
||||
err = json.Unmarshal([]byte(data), &artworks)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return artworks, nil
|
||||
}
|
||||
@@ -97,6 +97,7 @@ func main() {
|
||||
|
||||
server.Get("about", pages.AboutPage)
|
||||
server.Get("newest", pages.NewestPage)
|
||||
server.Get("discovery", pages.DiscoveryPage)
|
||||
|
||||
log.Println("PixivFE is running.")
|
||||
server.Listen(":8000")
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package pages
|
||||
|
||||
import (
|
||||
core "codeberg.org/vnpower/pixivfe/v2/core/webapi"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
func DiscoveryPage(c *fiber.Ctx) error {
|
||||
mode := c.Query("mode", "safe")
|
||||
|
||||
works, err := core.GetDiscoveryArtwork(c, mode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.Render("pages/discovery", fiber.Map{
|
||||
"Artworks": works,
|
||||
"Title": "Discovery",
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user