go-common/app/admin/main/videoup-task/model/video.go
2019-04-22 18:49:16 +08:00

152 lines
4.5 KiB
Go

package model
import (
"time"
)
//video status & attr.
const (
VideoStatusOpen = int16(0)
VideoStatusOrange = int16(10000)
VideoStatusRecycle = int16(-2)
VideoStatusLock = int16(-4)
VideoStatusDelete = -100
ArcStateDelete = -100
RLStateDelete = -100
CopyrightOriginal = int8(1)
VideoXcodeSDFinish = int8(2)
VideoXcodeHDFinish = int8(4)
AttrBitNoRank = uint(0) // NOTE: double write for archive_forbid
// AttrBitNoDynamic 动态禁止
AttrBitNoDynamic = uint(1) // NOTE: double write for archive_forbid
// AttrBitNoWeb 禁止网页输出
AttrBitNoWeb = uint(2)
// AttrBitNoMobile 禁止客户端列表
AttrBitNoMobile = uint(3)
// AttrBitNoSearch 搜索禁止
AttrBitNoSearch = uint(4)
// AttrBitOverseaLock 海外禁止
AttrBitOverseaLock = uint(5)
// AttrBitNoRecommend 禁止推荐
AttrBitNoRecommend = uint(6) // NOTE: double write for archive_forbid
// AttrBitNoReprint 禁止转载
AttrBitNoReprint = uint(7)
// AttrBitHasHD5 是否高清
AttrBitHasHD5 = uint(8)
// AttrBitIsPGC 是否PGC稿件
AttrBitIsPGC = uint(9)
// AttrBitAllowBp 允许承包
AttrBitAllowBp = uint(10)
// AttrBitIsBangumi 是否番剧
AttrBitIsBangumi = uint(11)
// AttrBitIsPorder 是否私单
AttrBitIsPorder = uint(12)
// AttrBitLimitArea 是否限制地区
AttrBitLimitArea = uint(13)
// AttrBitAllowTag 允许其他人添加tag
AttrBitAllowTag = uint(14)
// AttrBitJumpURL 跳转
AttrBitJumpURL = uint(16)
// AttrBitIsMovie 是否影视
AttrBitIsMovie = uint(17)
// AttrBitBadgepay 付费
AttrBitBadgepay = uint(18)
AttrBitPushBlog = uint(20)
)
//qa audit status & attr.
var (
QAAuditStatus = map[int16]string{
VideoStatusOpen: "开放浏览",
VideoStatusOrange: "会员可见",
VideoStatusRecycle: "打回",
VideoStatusLock: "锁定",
}
VideoAttribute = map[uint]string{
AttrBitNoRank: "norank",
AttrBitNoDynamic: "nodynamic",
AttrBitNoWeb: "noweb",
AttrBitNoMobile: "nomobile",
AttrBitNoSearch: "nosearch",
AttrBitOverseaLock: "oversea_block",
AttrBitNoRecommend: "norecommend",
AttrBitNoReprint: "no_reprint",
AttrBitHasHD5: "hd",
AttrBitIsPGC: "is_pgc",
AttrBitAllowBp: "allow_bp",
AttrBitIsBangumi: "bangumi",
AttrBitIsPorder: "is_porder",
AttrBitLimitArea: "limit_area",
AttrBitAllowTag: "allow_tag",
AttrBitJumpURL: "j",
AttrBitIsMovie: "is_movie",
AttrBitBadgepay: "badgepay",
AttrBitPushBlog: "push_blog",
}
)
//Video video info
type Video struct {
ID int64 `json:"id"`
AID int64 `json:"aid"`
CID int64 `json:"cid"`
MID int64 `json:"mid"`
Copyright int8 `json:"copyright"`
TypeID int64 `json:"type_id"`
Status int16 `json:"status"`
Attribute int32 `json:"attribute"`
XcodeState int8 `json:"xcode_state"`
Title string `json:"title"`
Description string `json:"description"`
Filename string `json:"filename"`
TagID int64 `json:"tag_id"`
Reason string `json:"reason"`
Note string `json:"note"`
AttributeList map[string]int32 `json:"attribute_list"`
Encoding int32 `json:"encoding"`
}
//AttributeList get attr as map
func AttributeList(attr int32) (list map[string]int32) {
list = map[string]int32{}
for bit, name := range VideoAttribute {
list[name] = int32(((attr >> bit) & 1))
}
return
}
// AttrSet video Attr set
func (v *Video) AttrSet(attr int32, bit uint) {
v.Attribute = v.Attribute&(^(1 << bit)) | (attr << bit)
}
// ArcVideo is archive_video model.
type ArcVideo struct {
ID int64 `json:"-"`
Aid int64 `json:"aid"`
Title string `json:"title"`
Desc string `json:"desc"`
Filename string `json:"filename"`
SrcType string `json:"-"`
Cid int64 `json:"cid"`
Duration int64 `json:"-"`
Filesize int64 `json:"-"`
Resolutions string `json:"-"`
Index int `json:"index"`
Playurl string `json:"-"`
Status int16 `json:"status"`
StatusDesc string `json:"status_desc"`
FailCode int8 `json:"fail_code"`
FailDesc string `json:"fail_desc"`
XcodeState int8 `json:"xcode"`
Attribute int32 `json:"-"`
RejectReason string `json:"reject_reason"`
WebLink string `json:"weblink"`
CTime time.Time `json:"ctime"`
MTime time.Time `json:"-"`
}