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 @@