Discovery page

This commit is contained in:
VnPower
2024-01-01 21:12:59 +07:00
parent e4d7e36b08
commit e4da9d061d
5 changed files with 60 additions and 1 deletions
+1 -1
View File
@@ -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)
+5
View File
@@ -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)
}
+33
View File
@@ -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
}
+1
View File
@@ -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")
+20
View File
@@ -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",
})
}