You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.5 KiB
137 lines
3.5 KiB
package model |
|
|
|
import "go-common/library/ecode" |
|
|
|
// SnDetailCore is the common part of pgc media v1 and v2 |
|
type SnDetailCore struct { |
|
Cover string `json:"cover"` |
|
Evaluate string `json:"evaluate"` |
|
Link string `json:"link"` |
|
MediaID int `json:"media_id"` |
|
Mode int `json:"mode"` |
|
Paster *Paster `json:"paster"` |
|
Publish *Publish `json:"publish"` |
|
Rating *Rating `json:"rating"` |
|
SeasonID int64 `json:"season_id"` |
|
SeasonStatus int `json:"season_status"` |
|
SeasonTitle string `json:"season_title"` |
|
SeasonType int `json:"season_type"` |
|
ShareURL string `json:"share_url"` |
|
SquareCover string `json:"square_cover"` |
|
Title string `json:"title"` |
|
TotalEp int `json:"total_ep"` |
|
Rights *Rights `json:"rights"` |
|
StyleLabel []*ParamStyle `json:"style_label"` |
|
} |
|
|
|
// SnDetailV2 def |
|
type SnDetailV2 struct { |
|
Episodes []*EpisodeV2 `json:"episodes"` |
|
NewestEP *NewEPV2 `json:"new_ep"` |
|
Stat *StatV2 `json:"stat"` |
|
UserStatus *UserStatusV2 `json:"user_status"` |
|
Seasons []*SeasonV2 `json:"seasons"` |
|
Section []*Section `json:"section"` |
|
Type int `json:"type"` |
|
SnDetailCore |
|
} |
|
|
|
// TypeTrans def. |
|
func (v *SnDetailV2) TypeTrans() { |
|
v.SeasonType = v.Type |
|
} |
|
|
|
// Section def. |
|
type Section struct { |
|
Episodes []*EpisodeV2 `json:"episodes"` |
|
} |
|
|
|
// EpisodeV2 def. |
|
type EpisodeV2 struct { |
|
AID int64 `json:"aid"` |
|
Badge string `json:"badge"` |
|
BadgeType int `json:"badge_type"` |
|
CID int64 `json:"cid"` |
|
Cover string `json:"cover"` |
|
From string `json:"from"` |
|
ID int64 `json:"id"` |
|
LongTitle string `json:"long_title"` |
|
ShareURL string `json:"share_url"` |
|
Status int `json:"status"` |
|
Title string `json:"title"` |
|
VID string `json:"vid"` |
|
WaterMark bool `json:"hidemark"` // true means in the whitelist |
|
CornerMark *CornerMark `json:"cornermark"` |
|
} |
|
|
|
// CornerMark def. |
|
type CornerMark struct { |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
} |
|
|
|
// SnVipCorner def. |
|
type SnVipCorner struct { |
|
Title string `json:"title"` |
|
Cover string `json:"cover"` |
|
} |
|
|
|
// CmsInterv def. |
|
func (v *EpisodeV2) CmsInterv(epCMS *EpCMS) { |
|
if epCMS.Cover != "" { |
|
v.Cover = epCMS.Cover |
|
} |
|
if epCMS.Title != "" { |
|
v.LongTitle = epCMS.Title |
|
} |
|
} |
|
|
|
// NewEPV2 def. |
|
type NewEPV2 struct { |
|
Desc string `json:"desc"` |
|
ID int64 `json:"id"` |
|
IsNew int `json:"is_new"` |
|
Title string `json:"title"` |
|
} |
|
|
|
// StatV2 def. 3 new fields |
|
type StatV2 struct { |
|
Coin int `json:"coin"` |
|
Reply int `json:"reply"` |
|
Share int `json:"share"` |
|
Stat |
|
} |
|
|
|
// UserStatusV2 def. |
|
type UserStatusV2 struct { |
|
Follow int `json:"follow"` |
|
Pay int `json:"pay"` |
|
Progress *WatchProgress `json:"watch_progress"` |
|
Review *ReviewV2 `json:"review"` |
|
Sponsor int `json:"sponsor"` |
|
} |
|
|
|
// ReviewV2 def. |
|
type ReviewV2 struct { |
|
IsOpen int `json:"is_open"` |
|
} |
|
|
|
// Response standard structure |
|
type Response struct { |
|
Code int `json:"code"` |
|
Message string `json:"message"` |
|
} |
|
|
|
// CodeErr generates the code error |
|
func (r *Response) CodeErr() (err error) { |
|
if r.Code != ecode.OK.Code() { |
|
err = ecode.Int(r.Code) |
|
} |
|
return |
|
} |
|
|
|
// MediaRespV2 is the structure of PGC display api response |
|
type MediaRespV2 struct { |
|
Response |
|
Result *SnDetailV2 `json:"result"` |
|
}
|
|
|