bilibili-backup/app/interface/main/tv/model/media_v2.go

138 lines
3.5 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
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"`
}