diff --git a/handler/constants.go b/handler/constants.go index 40d6505..c1dff07 100644 --- a/handler/constants.go +++ b/handler/constants.go @@ -6,7 +6,7 @@ const ( ArtworkRelatedURL = "https://www.pixiv.net/ajax/illust/%s/recommend/init?limit=%d" ArtworkCommentsURL = "https://www.pixiv.net/ajax/illusts/comments/roots?illust_id=%s&limit=100" ArtworkNewestURL = "https://www.pixiv.net/ajax/illust/new?limit=30&type=%s&r18=%s&lastId=%s" - ArtworkRankingURL = "https://www.pixiv.net/ranking.php?format=json&mode=%s&content=%s&date=%s&p=%s" + ArtworkRankingURL = "https://www.pixiv.net/ranking.php?format=json&mode=%s&content=%s%s&p=%s" ArtworkDiscoveryURL = "https://www.pixiv.net/ajax/discovery/artworks?mode=%s&limit=%d" SearchTagURL = "https://www.pixiv.net/ajax/search/tags/%s" SearchArtworksURL = "https://www.pixiv.net/ajax/search/%s/%s?order=%s&mode=%s&p=%s" diff --git a/handler/misc.go b/handler/misc.go index 0f63bac..23022c2 100644 --- a/handler/misc.go +++ b/handler/misc.go @@ -41,6 +41,10 @@ func (p *PixivClient) GetRanking(mode string, content string, date string, page // Ranking data is formatted differently var pr models.RankingResponse + if len(date) > 0 { + date = "&date=" + date + } + url := fmt.Sprintf(ArtworkRankingURL, mode, content, date, page) s, err := p.TextRequest(url) @@ -53,6 +57,8 @@ func (p *PixivClient) GetRanking(mode string, content string, date string, page if err != nil { return pr, err } + pr.PrevDate = strings.ReplaceAll(string(pr.PrevDateRaw[:]), "\"", "") + pr.NextDate = strings.ReplaceAll(string(pr.NextDateRaw[:]), "\"", "") return pr, nil } diff --git a/models/helpers.go b/models/helpers.go index 5e14fec..49b63a4 100644 --- a/models/helpers.go +++ b/models/helpers.go @@ -33,6 +33,14 @@ func ProxyRecommendedByTagsSlice(artworks []LandingRecommendByTags, proxy string return artworks } +func ProxyRankedArtworkSlice(artworks []RankedArtwork, proxy string) []RankedArtwork { + for i := range artworks { + artworks[i].Image = ProxyImage(artworks[i].Image, proxy) + artworks[i].ArtistAvatar = ProxyImage(artworks[i].ArtistAvatar, proxy) + } + return artworks +} + func ProxyCommentsSlice(comments []Comment, proxy string) []Comment { for i := range comments { comments[i].Avatar = ProxyImage(comments[i].Avatar, proxy) diff --git a/models/models.go b/models/models.go index 123dfd8..c2b6702 100644 --- a/models/models.go +++ b/models/models.go @@ -20,9 +20,18 @@ type PixivResponse struct { } type RankingResponse struct { - Artworks []RankedArtwork `json:"contents"` - Mode string `json:"mode"` - Content string `json:"content"` + Artworks []RankedArtwork `json:"contents"` + Mode string `json:"mode"` + Content string `json:"content"` + CurrentDate string `json:"date"` + PrevDateRaw json.RawMessage `json:"prev_date"` + NextDateRaw json.RawMessage `json:"next_date"` + PrevDate string + NextDate string +} + +func (s *RankingResponse) ProxyImages(proxy string) { + s.Artworks = ProxyRankedArtworkSlice(s.Artworks, proxy) } type ImageResponse struct { diff --git a/template/pages/rank.jet.html b/template/pages/rank.jet.html index 6d278db..0462468 100644 --- a/template/pages/rank.jet.html +++ b/template/pages/rank.jet.html @@ -1,70 +1,77 @@
-

{{ Title }}

+

{{ Title }}

-
- {{ url := "/ranking?mode=" + Queries.Mode + "&page=1&content=" }} - Content - Overall - Illustrations - Mangas -
-
+
+ {{ url := "/ranking?mode=" + Queries.Mode + "&date=" + Data.CurrentDate + "&page=1&content=" }} + Content + Overall + Illustrations + Mangas +
+
-
- {{ url := "/ranking?content=" + Queries.Content + "&page=1&mode=" }} - Modes - Daily - Weekly - Monthly - Rookie - - Daily (R-18) - Weekly (R-18) -
-
+
+ {{ url := "/ranking?content=" + Queries.Content +"&date=" + Data.CurrentDate + "&page=1&mode=" }} + Modes + Daily + Weekly + Monthly + Rookie + + Daily (R-18) + Weekly (R-18) +
+
- {{ range Items }} -
-
{{ .Rank }}
- {{ if toInt(.Pages) > 1 }} -
⧉ {{ .Pages }}
- {{ end }} - - {{ .Title }} - +
+ {{ url := "/ranking?content=" + Queries.Content + "&mode=" + Queries.Mode + "&page=1" }} + Date + {{ if Data.PrevDate != "false" }} + Yesterday + {{ end }} + {{ if Data.NextDate != "false" }} + Next day + {{ end }} + Latest +
+
- -

{{ .Title }}

-
- {{ .ArtistName }} - {{ .ArtistName }} -
- {{ end }} + {{ range Data.Artworks }} +
+
{{ .Rank }}
+ {{ if toInt(.Pages) > 1 }} +
⧉ {{ .Pages }}
+ {{ end }} + + {{ .Title }} + - {{ end }} - {{ Page }} + + {{ Page }} + + {{ if Page == 10 }} + Next + Last + {{ else }} + Next + Last + {{ end }} +
diff --git a/views/pages.go b/views/pages.go index 2c9d2cf..4a59ae2 100644 --- a/views/pages.go +++ b/views/pages.go @@ -141,16 +141,11 @@ func ranking_page(c *fiber.Ctx) error { return err } - artworks := response.Artworks - - for i := range artworks { - artworks[i].Image = models.ProxyImage(artworks[i].Image, *image_proxy) - artworks[i].ArtistAvatar = models.ProxyImage(artworks[i].ArtistAvatar, *image_proxy) - } + response.ProxyImages(*image_proxy) return c.Render("pages/rank", fiber.Map{ "Title": "Ranking", - "Items": artworks, + "Data": response, "Queries": queries, "Page": pageInt, })