123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- package model
- import (
- "encoding/json"
- "strconv"
- "go-common/app/service/main/archive/api"
- xtime "go-common/library/time"
- )
- // Card audio card struct
- type Card struct {
- ID int `json:"-"`
- Tab int `json:"-"`
- RegionID int `json:"-"`
- Type int `json:"-"`
- Title string `json:"-"`
- Cover string `json:"-"`
- Rtype int `json:"-"`
- Rvalue string `json:"-"`
- PlatVer string `json:"-"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- TypeStr string `json:"-"`
- Goto string `json:"-"`
- Param string `json:"-"`
- URI string `json:"-"`
- Desc string `json:"-"`
- TagID int `json:"-"`
- }
- // Content audio content struct
- type Content struct {
- ID int `json:"-"`
- Module int `json:"-"`
- RecID int `json:"-"`
- Type int8 `json:"-"`
- Value string `json:"-"`
- Title string `json:"-"`
- TagID int `json:"-"`
- }
- // PlatLimit audio plat limit struct
- type PlatLimit struct {
- Plat int8 `json:"plat"`
- Build int `json:"build"`
- Condition string `json:"conditions"`
- }
- // ShowItem audio show item struct
- type ShowItem struct {
- Title string `json:"title"`
- Cover string `json:"cover"`
- URI string `json:"uri"`
- NewURI string `json:"-"`
- Param string `json:"param"`
- Goto string `json:"goto"`
- // up
- Mid int64 `json:"mid,omitempty"`
- Name string `json:"name,omitempty"`
- Face string `json:"face,omitempty"`
- Follower int `json:"follower,omitempty"`
- Attribute int `json:"attribute,omitempty"`
- OfficialVerify *OfficialVerify `json:"official_verify,omitempty"`
- // stat
- Play int `json:"play,omitempty"`
- Danmaku int `json:"danmaku,omitempty"`
- Reply int `json:"reply,omitempty"`
- Fav int `json:"favourite,omitempty"`
- // movie and bangumi badge
- Status int8 `json:"status,omitempty"`
- CoverMark string `json:"cover_mark,omitempty"`
- // ranking
- Pts int64 `json:"pts,omitempty"`
- Children []*ShowItem `json:"children,omitempty"`
- // av
- PubDate xtime.Time `json:"pubdate"`
- // av stat
- Duration int64 `json:"duration,omitempty"`
- // region
- Rid int `json:"rid,omitempty"`
- Rname string `json:"rname,omitempty"`
- Reid int `json:"reid,omitempty"`
- //new manager
- Desc string `json:"desc,omitempty"`
- Stime string `json:"stime,omitempty"`
- Etime string `json:"etime,omitempty"`
- Like int `json:"like,omitempty"`
- }
- // OfficialVerify audio verify struct
- type OfficialVerify struct {
- Type int `json:"type"`
- Desc string `json:"desc"`
- }
- // Head audio struct
- type Head struct {
- CardID int `json:"card_id,omitempty"`
- Title string `json:"title,omitempty"`
- Cover string `json:"cover,omitempty"`
- Type string `json:"type,omitempty"`
- Date int64 `json:"date,omitempty"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- URI string `json:"uri,omitempty"`
- Goto string `json:"goto,omitempty"`
- Param string `json:"param,omitempty"`
- Body []*ShowItem `json:"body,omitempty"`
- }
- // CardPlatChange audio card change plat
- func (c *Card) CardPlatChange() (platlinits []*PlatLimit) {
- platlinits = platJSONChange(c.PlatVer)
- return
- }
- // platJSONChange json change plat build condition
- func platJSONChange(jsonStr string) (platlinits []*PlatLimit) {
- var tmp []struct {
- Plat string `json:"plat"`
- Build string `json:"build"`
- Condition string `json:"conditions"`
- }
- if err := json.Unmarshal([]byte(jsonStr), &tmp); err == nil {
- for _, limit := range tmp {
- platlinit := &PlatLimit{}
- switch limit.Plat {
- case "0": // resource android
- platlinit.Plat = PlatAndroid
- case "1": // resource iphone
- platlinit.Plat = PlatIPhone
- case "2": // resource pad
- platlinit.Plat = PlatIPad
- case "5": // resource iphone_i
- platlinit.Plat = PlatIPhoneI
- case "8": // resource android_i
- platlinit.Plat = PlatAndroidI
- }
- platlinit.Build, _ = strconv.Atoi(limit.Build)
- platlinit.Condition = limit.Condition
- platlinits = append(platlinits, platlinit)
- }
- }
- return
- }
- // FromArchivePB from archive archive.
- func (i *ShowItem) FromArchivePB(a *api.Arc) {
- i.Title = a.Title
- i.Cover = a.Pic
- i.Param = strconv.FormatInt(a.Aid, 10)
- i.URI = FillURI(GotoAv, i.Param)
- i.Goto = GotoAv
- i.Play = int(a.Stat.View)
- i.Danmaku = int(a.Stat.Danmaku)
- i.Name = a.Author.Name
- i.Reply = int(a.Stat.Reply)
- i.Fav = int(a.Stat.Fav)
- i.PubDate = a.PubDate
- i.Rid = int(a.TypeID)
- i.Rname = a.TypeName
- i.Duration = a.Duration
- i.Like = int(a.Stat.Like)
- if a.Access > 0 {
- i.Play = 0
- }
- }
- // FillBuildURI fill url by plat build
- func (h *Head) FillBuildURI(plat int8, build int) {
- switch h.Goto {
- case GotoDaily:
- if (plat == PlatIPhone && build > 6670) || (plat == PlatAndroid && build > 5250000) {
- h.URI = "bilibili://pegasus/list/daily/" + h.Param
- }
- }
- }
- // SideBars for side bars
- type SideBars struct {
- SideBar []*SideBar `json:"sidebar,omitempty"`
- Limit map[int64][]*SideBarLimit `json:"limit,omitempty"`
- }
- // SideBar for side bar
- type SideBar struct {
- ID int64 `json:"id,omitempty"`
- Tip int `json:"tip,omitempty"`
- Rank int `json:"rank,omitempty"`
- Logo string `json:"logo,omitempty"`
- LogoWhite string `json:"logo_white,omitempty"`
- Name string `json:"name,omitempty"`
- Param string `json:"param,omitempty"`
- Module int `json:"module,omitempty"`
- Plat int8 `json:"-"`
- Build int `json:"-"`
- Conditions string `json:"-"`
- OnlineTime xtime.Time `json:"online_time"`
- NeedLogin int8 `json:"need_login,omitempty"`
- WhiteURL string `json:"white_url,omitempty"`
- Menu int8 `json:"menu,omitempty"`
- LogoSelected string `json:"logo_selected,omitempty"`
- TabID string `json:"tab_id,omitempty"`
- Red string `json:"red_dot_url,omitempty"`
- Language string `json:"language,omitempty"`
- }
- // SideBarLimit side bar limit
- type SideBarLimit struct {
- ID int64 `json:"-"`
- Build int `json:"-"`
- Condition string `json:"-"`
- }
|