|
@@ -6,14 +6,122 @@
|
|
|
// Copyright © 2020 BytesFlow. All rights reserved.
|
|
|
//
|
|
|
|
|
|
-import UIKit
|
|
|
import BFCommonKit
|
|
|
+import UIKit
|
|
|
+
|
|
|
+public protocol BFVideoItemProtocol {
|
|
|
+ dynamic var uniqueId: String? { get set } // 唯一ID
|
|
|
+ dynamic var videoId: Int { get set } // 视频ID
|
|
|
+ dynamic var id: UInt64 { get set } // 视频ID
|
|
|
+ dynamic var eventId: String? { get set } // 事件ID
|
|
|
+ dynamic var title: String? { get set } // 标题
|
|
|
+ dynamic var attributedTitle: NSMutableAttributedString? { get set } // 富文本标题
|
|
|
+ dynamic var summary: String? { get set } // 描述
|
|
|
+ dynamic var imageUrl: String { get set } // 图片地址
|
|
|
+ dynamic var selectedImage: String { get set } // 图片地址
|
|
|
+ dynamic var isSelected: Bool { get set }
|
|
|
+ dynamic var recommendLogVO: String? { get set } // 推荐日志对象
|
|
|
+ dynamic var abInfoData: String? { get set } // AB
|
|
|
+ dynamic var pageCategoryId: Int { get set } // 页面分类ID
|
|
|
+ dynamic var version: String { get set } // 版本号
|
|
|
+ dynamic var mid: String { get set } // 设备ID
|
|
|
+ dynamic var date: Int { get set } // 当前时间戳 Float64(Date.init().timeIntervalSince1970) * 1000
|
|
|
+ var headVideoId: String? { get set } // 当前的相关推荐视频是属于哪个视频的相关推荐,值为那个头部视频的videoId
|
|
|
+ var auditStatus: Int { get set } // 审核状态 1 审核中,2 不通过 3 待修改,4 自己可见 5 通过 ,
|
|
|
+ var barrageCount: Int { get set } // 弹幕数量
|
|
|
+ var barrageSwitch: Int { get set } // 是否打开弹幕 1打开 -1关闭 ,
|
|
|
+ var auditReason: String? { get set } // 审核不通过或者待修改的原因
|
|
|
+ var barrage: Any? { get set } // 弹幕集合
|
|
|
+ var chargeDetail: [String: Any]? { get set } // 收费的相关信息
|
|
|
+ var commentCount: Int { get set } // 评论数量
|
|
|
+ var coverImg: [String: Any]? { get set } // 封面对象 ,
|
|
|
+ var cutVoStr: String? { get set } // h5剪切板内容 ,
|
|
|
+ var descr: String? { get set } // 视频简介 ,
|
|
|
+ var encryption: Int { get set } // 是否加密视频:0是1不是 ,
|
|
|
+ var favorited: Bool { get set } // 是否收藏 ,
|
|
|
+ var favoriteds: Int { get set } // 收藏数 ,
|
|
|
+ var fileExtensions: String? { get set } // 视频后缀 ,
|
|
|
+ var firstPicture: Bool { get set } // 封面是否是第一帧,false不是true是 ,
|
|
|
+ var gmtCreate: String? { get set } // 创建时间 ,
|
|
|
+ var gmtCreateDescr: String? { get set } // 发视频时间描述 ,
|
|
|
+ var gmtCreateTimestamp: Int { get set } // 创建时间戳 ,
|
|
|
+ var gmtModifie: String? { get set } // 修改时间 ,
|
|
|
+ var gmtModifiedTimestamp: Int { get set } // 修改时间戳 ,
|
|
|
+ var h5ShareImgPath: String? { get set } // h5分享图URL ,
|
|
|
+ var hasShareSpaceData: Bool { get set } // 是否有分享空间数据,
|
|
|
+ var isRecommendShare: Int { get set } // 是否有分发推荐的封面和标题 1 有 0 无 传空或者不传默认为0,
|
|
|
+ var lastTimestamp: Int { get set } // 时间戳 ,
|
|
|
+ // liteVideoData (LiteVideoDataVO, optional): lite数据,
|
|
|
+ var measure: Int { get set }
|
|
|
+ var measureId: Int { get set }
|
|
|
+ var measureType: Int { get set } // 0 非流量池 1曝光池2普通推荐测试池3待推荐测试池 ,
|
|
|
+ var playBeforeDay: Int { get set } // 播放时间距离今天的天数 ,
|
|
|
+ var playCount: Int { get set } // 播放次数 ,
|
|
|
+ var playCountFormatStr: String? { get set } // 用户视频总播放数,格式化后的值,前端直接显示 ,
|
|
|
+ var playCountTotal: Int { get set } // 总播放次数 ,
|
|
|
+ var playTime: Int { get set } // 播放时间 ,
|
|
|
+ var processShareHeadLab: [String: Any]? { get set } // 视频分享片尾数据 ,
|
|
|
+ var processShareTailLab: [String: Any]? { get set } // 视频分享片尾数据 ,
|
|
|
+ var pwd: String? { get set } // 视频密码 ,
|
|
|
+ var recommendId: String? { get set } // 推荐链路ID ,
|
|
|
+ var recommendSource: Int { get set } // 0 默认 1 第四范式
|
|
|
+ var recommendStatus: Int { get set } // 推荐状态 ,
|
|
|
+ var rotate: Int { get set } // 旋转角度 ,
|
|
|
+ var sampleJobId: String? { get set }
|
|
|
+ var sampleRequestId: String? { get set }
|
|
|
+ var sampleTotalTime: Int { get set }
|
|
|
+ var sampleTranscodeStatus: Int { get set }
|
|
|
+ var sampleTransedVideoPath: String? { get set }
|
|
|
+ var sendBeforeDay: Int { get set } // 发视频距离今天的天数 ,
|
|
|
+ var sensitiveMsg: String? { get set } // 敏感提示信息 ,
|
|
|
+ var sensitiveStatus: Int { get set } // 内容敏感状态(0:未检验,1:不敏感,2:敏感,3:敏感已审) ,
|
|
|
+ var shareCount: Int { get set } // 分享到朋友圈次数 ,
|
|
|
+ var shareId: String? { get set } // 分享的 ID
|
|
|
+ var shareCountFriend: Int { get set } // 分享到微信好友 ,
|
|
|
+ var shareImgPath: String? { get set } // 分享图URL ,
|
|
|
+ var shareLinkType: Int { get set } // 分享到微信好友的图片的链接的类型 ,
|
|
|
+ var sharePageType: Int { get set } // 0 综合模块 1 feed流 ,
|
|
|
+ var shareTitle: String? { get set } // 分享到微信好友的图片的title ,
|
|
|
+ var showHotRecommend: Bool { get set } // 是否需要显示热门推荐 ,
|
|
|
+ var size: Int { get set } // 大小 ,
|
|
|
+ var status: Int { get set } // 数据状态,1 有效,2 已删除,3 已屏蔽,4 关注可见,5 分享可见 6 自己可见 ,
|
|
|
+ var tabShareImgPath: String? { get set } // 转发分享图URL ,
|
|
|
+ var thumbnailImagePath: String? { get set } // 缩略图URL ,
|
|
|
+ var totalTime: Int { get set } // 视频时长 ,
|
|
|
+ var totalTimeParas: String? { get set } // 视频时长十分秒 ,
|
|
|
+ var transcodeStatus: Int { get set } // 转码状态:1-不需转码 2-转码中 3-转码完成 4-转码失败 ,
|
|
|
+ var transcodeVOList: [Any]? { get set } // 多码率数据 ,
|
|
|
+ var uid: Int { get set } // 视频的用户ID ,
|
|
|
+ var user: [String: Any]? { get set } // 用户对象 ,
|
|
|
+ var videoCollectionId: Int { get set } // 视频所在的视频集ID ,
|
|
|
+ var videoCoverSnapshotPath: String? { get set } // 原始封面图片 ,
|
|
|
+ var videoPath: String? { get set } // 视频地址 ,
|
|
|
+ var videoReportMeta: String? { get set } // 视频上报数据,上报时原样返回 ,
|
|
|
+ var videoShareJumpModel: [String: Any]? { get set } // 分享页跳转的信息 ,
|
|
|
+ var playProgress: Float64 { get set } // 已播放时长
|
|
|
+ var duration: Float64 { get set } // 视频总时长
|
|
|
+ var tab_pageType: TAB_PAGETYPE { get set } // 0-推荐 1-关注
|
|
|
+ var pageSource: PAGESOURCE { get set }
|
|
|
+ var isVerticality: Bool { get set }
|
|
|
+ var isShareList: Bool { get set } // 是否是分享列表
|
|
|
+ var uplpadBucketKey: String? { get set } // 上传视频地址
|
|
|
+ var uplpadStatus: Int { get set } // 上传视频状态 1-上传中 2-上传完成 3-上传失败 4-发布中 4-发布完成
|
|
|
+// var uplpadRequest: OSSMultipartUploadRequest?
|
|
|
+ var stsToken: [String: Any]? { get set } // 上传信息
|
|
|
+ var localPath: String? { get set } // 地址
|
|
|
+ var progress: Float { get set }
|
|
|
+ var projectId: String? { get set } // 项目ID-发布创作的视频时必传,会在进入创作工具页时生成,以app_no_projectdata为前缀
|
|
|
+ var autoType: autoType? { get set } // autoType 自动动作的类型
|
|
|
+ // 发布视频来源类型
|
|
|
+ var videoFromScene: videoFromScene { get set }
|
|
|
+}
|
|
|
|
|
|
-open class PQVideoListModel: PQBaseModel {
|
|
|
- @objc required public init() {
|
|
|
+open class PQVideoListModel: PQBaseModel, BFVideoItemProtocol {
|
|
|
+ @objc public required init() {
|
|
|
super.init()
|
|
|
}
|
|
|
|
|
|
+ public var id: UInt64 = 0
|
|
|
public var headVideoId: String? // 当前的相关推荐视频是属于哪个视频的相关推荐,值为那个头部视频的videoId
|
|
|
public var auditStatus: Int = 0 // 审核状态 1 审核中,2 不通过 3 待修改,4 自己可见 5 通过 ,
|
|
|
public var barrageCount: Int = 0 // 弹幕数量
|
|
@@ -104,15 +212,15 @@ open class PQVideoListModel: PQBaseModel {
|
|
|
public var watchInfoH: CGFloat = 0 // add by ak watch info 高度
|
|
|
public var watchInfoY: CGFloat = 0 // add by ak watch info Y 值
|
|
|
public var relationData: [PQVideoListModel]?
|
|
|
- public var playProgress: CGFloat = 0 // 已播放时长
|
|
|
- public var duration: CGFloat = 0 // 视频总时长
|
|
|
+ public var playProgress: Float64 = 0 // 已播放时长
|
|
|
+ public var duration: Float64 = 0 // 视频总时长
|
|
|
public var tab_pageType: TAB_PAGETYPE = .TAB_PAGETYPE_NORMAL // 0-推荐 1-关注
|
|
|
public var pageSource: PAGESOURCE = .sp_category
|
|
|
public var isVerticality: Bool = false
|
|
|
public var isShareList: Bool = false // 是否是分享列表
|
|
|
|
|
|
public var funcH: CGFloat = cDefaultMargin * 33
|
|
|
- public let funcW: CGFloat = cDefaultMargin * 5
|
|
|
+ public var funcW: CGFloat = cDefaultMargin * 5
|
|
|
public var uplpadImage: UIImage? // 上传的图片封面
|
|
|
public var uplpadBucketKey: String? // 上传视频地址
|
|
|
public var uplpadStatus: Int = 0 // 上传视频状态 1-上传中 2-上传完成 3-上传失败 4-发布中 4-发布完成
|
|
@@ -127,12 +235,12 @@ open class PQVideoListModel: PQBaseModel {
|
|
|
public var autoType: autoType? // autoType 自动动作的类型
|
|
|
// add by ak 发布视频来源类型
|
|
|
public var videoFromScene: videoFromScene = .UploadNormal
|
|
|
-
|
|
|
+
|
|
|
// 视频分类
|
|
|
- public var categoryName:String = ""
|
|
|
+ public var categoryName: String = ""
|
|
|
// 视频分类图
|
|
|
- public var categoryImage:String?
|
|
|
-
|
|
|
+ public var categoryImage: String?
|
|
|
+
|
|
|
override public init(jsonDict: [String: Any]) {
|
|
|
super.init(jsonDict: jsonDict)
|
|
|
|
|
@@ -272,9 +380,7 @@ open class PQVideoListModel: PQBaseModel {
|
|
|
itemHeight = (cScreenWidth - cDefaultMargin * 3) / 2 * originImageH / originImageW + tempTitleH + cDefaultMargin * 4.5
|
|
|
|
|
|
if title != nil, (title?.count ?? 0) > 0 {
|
|
|
-
|
|
|
titleH = sizeWithText(text: title ?? "", font: UIFont.systemFont(ofSize: 26, weight: .medium), size: CGSize(width: cScreenWidth - cDefaultMargin * 2, height: CGFloat.greatestFiniteMagnitude)).height + cDefaultMargin
|
|
|
-
|
|
|
}
|
|
|
if titleH > 70 {
|
|
|
titleH = 70
|