123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package core
- import (
- "time"
- http "codeberg.org/vnpower/pixivfe/v2/core/http"
- session "codeberg.org/vnpower/pixivfe/v2/core/session"
- "github.com/goccy/go-json"
- "github.com/gofiber/fiber/v2"
- )
- type Novel struct {
- Bookmarks int `json:"bookmarkCount"`
- CommentCount int `json:"commentCount"`
- MarkerCount int `json:"markerCount"`
- CreateDate time.Time `json:"createDate"`
- UploadDate time.Time `json:"uploadDate"`
- Description string `json:"description"`
- ID string `json:"id"`
- Title string `json:"title"`
- Likes int `json:"likeCount"`
- Pages int `json:"pageCount"`
- UserID string `json:"userId"`
- UserName string `json:"userName"`
- Views int `json:"viewCount"`
- IsOriginal bool `json:"isOriginal"`
- IsBungei bool `json:"isBungei"`
- XRestrict int `json:"xRestrict"`
- Restrict int `json:"restrict"`
- Content string `json:"content"`
- CoverURL string `json:"coverUrl"`
- IsBookmarkable bool `json:"isBookmarkable"`
- BookmarkData interface{} `json:"bookmarkData"`
- LikeData bool `json:"likeData"`
- PollData interface{} `json:"pollData"`
- Marker interface{} `json:"marker"`
- Tags struct {
- AuthorID string `json:"authorId"`
- IsLocked bool `json:"isLocked"`
- Tags []struct {
- Name string `json:"tag"`
- } `json:"tags"`
- Writable bool `json:"writable"`
- } `json:"tags"`
- SeriesNavData interface{} `json:"seriesNavData"`
- HasGlossary bool `json:"hasGlossary"`
- IsUnlisted bool `json:"isUnlisted"`
- Language string `json:"language"`
- CommentOff int `json:"commentOff"`
- CharacterCount int `json:"characterCount"`
- WordCount int `json:"wordCount"`
- UseWordCount bool `json:"useWordCount"`
- ReadingTime int `json:"readingTime"`
- AiType int `json:"aiType"`
- Genre string `json:"genre"`
- }
- type NovelBrief struct {
- ID string `json:"id"`
- Title string `json:"title"`
- XRestrict int `json:"xRestrict"`
- Restrict int `json:"restrict"`
- CoverURL string `json:"url"`
- Tags []string `json:"tags"`
- UserID string `json:"userId"`
- UserName string `json:"userName"`
- UserAvatar string `json:"profileImageUrl"`
- TextCount int `json:"textCount"`
- WordCount int `json:"wordCount"`
- ReadingTime int `json:"readingTime"`
- Description string `json:"description"`
- IsBookmarkable bool `json:"isBookmarkable"`
- BookmarkData interface{} `json:"bookmarkData"`
- Bookmarks int `json:"bookmarkCount"`
- IsOriginal bool `json:"isOriginal"`
- CreateDate time.Time `json:"createDate"`
- UpdateDate time.Time `json:"updateDate"`
- IsMasked bool `json:"isMasked"`
- SeriesID string `json:"seriesId"`
- SeriesTitle string `json:"seriesTitle"`
- IsUnlisted bool `json:"isUnlisted"`
- AiType int `json:"aiType"`
- Genre string `json:"genre"`
- }
- func GetNovelByID(c *fiber.Ctx, id string) (Novel, error) {
- var novel Novel
- URL := http.GetNovelURL(id)
- response, err := http.UnwrapWebAPIRequest(c.Context(), URL, "")
- if err != nil {
- return novel, err
- }
- response = session.ProxyImageUrl(c, response)
- err = json.Unmarshal([]byte(response), &novel)
- if err != nil {
- return novel, err
- }
- 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, 50)
- 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
- }
|