From 8b0075150520cc2f6f70c341291655e107e3918f Mon Sep 17 00:00:00 2001 From: VnPower Date: Sun, 25 Feb 2024 08:45:16 +0700 Subject: [PATCH] Related novels --- core/http/url.go | 6 +++ core/webapi/artwork.go | 5 +- core/webapi/novel.go | 24 ++++++++- pages/novel.go | 10 +++- views/pages/components/novel-tn.jet.html | 65 ++++++++++++++++++++++++ views/pages/novel.jet.html | 5 ++ views/pages/novelDiscovery.jet.html | 65 +----------------------- 7 files changed, 110 insertions(+), 70 deletions(-) create mode 100644 views/pages/components/novel-tn.jet.html diff --git a/core/http/url.go b/core/http/url.go index 78ad9c9..153ec97 100644 --- a/core/http/url.go +++ b/core/http/url.go @@ -121,3 +121,9 @@ func GetNovelURL(id string) string { return fmt.Sprintf(base, id) } + +func GetNovelRelatedURL(id string, limit int) string { + base := "https://www.pixiv.net/ajax/novel/%s/recommend/init?limit=%d" + + return fmt.Sprintf(base, id, limit) +} diff --git a/core/webapi/artwork.go b/core/webapi/artwork.go index 1e763db..dfdd0a8 100644 --- a/core/webapi/artwork.go +++ b/core/webapi/artwork.go @@ -9,8 +9,8 @@ import ( "sync" "time" - session "codeberg.org/vnpower/pixivfe/v2/core/user" http "codeberg.org/vnpower/pixivfe/v2/core/http" + session "codeberg.org/vnpower/pixivfe/v2/core/user" "github.com/goccy/go-json" "github.com/gofiber/fiber/v2" ) @@ -342,7 +342,7 @@ func GetArtworkByID(c *fiber.Ctx, id string, full bool) (*Illust, error) { sort.Slice(recent[:], func(i, j int) bool { left := recent[i].ID right := recent[j].ID - return numberGreaterThan(left,right) + return numberGreaterThan(left, right) }) illust.RecentWorks = recent }() @@ -366,7 +366,6 @@ func GetArtworkByID(c *fiber.Ctx, id string, full bool) (*Illust, error) { var err error comments, err := GetArtworkComments(c, id) if err != nil { - println("here") cerr <- err return } diff --git a/core/webapi/novel.go b/core/webapi/novel.go index 1d75743..6b54074 100644 --- a/core/webapi/novel.go +++ b/core/webapi/novel.go @@ -3,8 +3,8 @@ package core import ( "time" - session "codeberg.org/vnpower/pixivfe/v2/core/user" http "codeberg.org/vnpower/pixivfe/v2/core/http" + session "codeberg.org/vnpower/pixivfe/v2/core/user" "github.com/goccy/go-json" "github.com/gofiber/fiber/v2" ) @@ -101,3 +101,25 @@ func GetNovelByID(c *fiber.Ctx, id string) (Novel, error) { return novel, nil } + +func GetNovelRelated(c *fiber.Ctx, id string) ([]NovelBrief, error) { + var novels struct { + List []NovelBrief `json:"novels"` + } + + // hard-coded value, may change + URL := http.GetNovelRelatedURL(id, 100) + + response, err := http.UnwrapWebAPIRequest(c.Context(), URL, "") + if err != nil { + return novels.List, err + } + response = session.ProxyImageUrl(c, response) + + err = json.Unmarshal([]byte(response), &novels) + if err != nil { + return novels.List, err + } + + return novels.List, nil +} diff --git a/pages/novel.go b/pages/novel.go index 2349059..3ce5bfb 100644 --- a/pages/novel.go +++ b/pages/novel.go @@ -19,9 +19,15 @@ func NovelPage(c *fiber.Ctx) error { return err } + related, err := core.GetNovelRelated(c, id) + if err != nil { + return err + } + // todo: passing ArtWorkData{} here will not work. maybe lowercase? return c.Render("pages/novel", fiber.Map{ - "Novel": novel, - "Title": novel.Title, + "Novel": novel, + "NovelRelated": related, + "Title": novel.Title, }) } diff --git a/views/pages/components/novel-tn.jet.html b/views/pages/components/novel-tn.jet.html new file mode 100644 index 0000000..052ee38 --- /dev/null +++ b/views/pages/components/novel-tn.jet.html @@ -0,0 +1,65 @@ + +
+
+
+ + {{ .Title }} + +
+ +
+
diff --git a/views/pages/novel.jet.html b/views/pages/novel.jet.html index d3d7b3b..6bbe93c 100644 --- a/views/pages/novel.jet.html +++ b/views/pages/novel.jet.html @@ -62,4 +62,9 @@
{{ raw: renderNovel(Novel.Content) }}
+
+ {{ range NovelRelated }} + {{ include "components/novel-tn" . }} + {{ end }} +
diff --git a/views/pages/novelDiscovery.jet.html b/views/pages/novelDiscovery.jet.html index b7dc0e0..396abe9 100644 --- a/views/pages/novelDiscovery.jet.html +++ b/views/pages/novelDiscovery.jet.html @@ -14,70 +14,7 @@
{{ range Novels }} -
-
-
- - {{ .Title }} - -
- -
-
+ {{ include "components/novel-tn" . }} {{ end }}