diff --git a/core/config/config.go b/core/config/config.go index e86c832..9fd3354 100644 --- a/core/config/config.go +++ b/core/config/config.go @@ -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) diff --git a/core/http/url.go b/core/http/url.go index 4b3930c..5013f10 100644 --- a/core/http/url.go +++ b/core/http/url.go @@ -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) +} diff --git a/core/webapi/discovery.go b/core/webapi/discovery.go new file mode 100644 index 0000000..a862aab --- /dev/null +++ b/core/webapi/discovery.go @@ -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 +} diff --git a/main.go b/main.go index 3a453c3..3046b8c 100644 --- a/main.go +++ b/main.go @@ -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") diff --git a/pages/discovery.go b/pages/discovery.go new file mode 100644 index 0000000..34e6f51 --- /dev/null +++ b/pages/discovery.go @@ -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", + }) +}