Files
uzVideo/js/core/uzCode.js

311 lines
6.0 KiB
JavaScript
Raw Normal View History

2024-07-16 21:31:36 +08:00
/**
* 筛选标签
*/
class FilterLabel {
constructor() {
// 筛选名称
this.name = "";
// 标识参数
this.id;
}
}
/**
* 筛选标题
*/
class FilterTitle {
constructor() {
// 筛选标题
this.name = "";
/**
* 筛选标签列表
* @type {FilterLabel[]}
*/
this.list = [];
}
}
2024-06-15 19:04:15 +08:00
/**
* 视频分类
*/
class VideoClass {
constructor() {
// 当前分类的链接
this.type_id = "";
// 分类名称
this.type_name = "";
2024-07-16 21:31:36 +08:00
/**
* 是否存在 筛选列表子分类 存在会调用 getSubclassList
*/
this.hasSubclass = false;
}
}
/**
* 视频二级分类二级分类可以是 分类也可以是筛选都有值优先取筛选
*/
class VideoSubclass {
constructor() {
/**
* 子分类
* @type {VideoClass[]}
*/
this.class = [];
/**
* 筛选列表
* 请求二级分类列表 getSubclassList 时返回该数据或者 data
* @type {FilterTitle[]}
*/
this.filter = [];
2024-06-15 19:04:15 +08:00
}
}
/**
* 视频详情
*/
class VideoDetail {
constructor() {
// 当前视频详情链接
this.vod_id = "";
// 视频名称
this.vod_name = "";
/**
2024-06-27 17:59:35 +08:00
* 线路列表 (没什么特殊区别可为空) 线路1$$$线路2$$$
*/
this.vod_play_from = "";
/**
* 所有剧集 使用 $$$ 分割线路# 分割剧集$ 分割剧集名称和剧集链接
* 第一集$第一集的视频详情链接#第二集$第二集的视频详情链接$$$第一集$第一集的视频详情链接#第二集$第二集的视频详情链接
2024-06-15 19:04:15 +08:00
*/
this.vod_play_url = "";
// 封面
this.vod_pic = "";
// 视频分类
this.type_name = "";
// 更新到
this.vod_remarks = "";
// 豆瓣
this.vod_douban_score = "";
// 语言
this.vod_lang = "";
// 年份
this.vod_year = "";
// 演员
this.vod_actor = "";
// 导演
this.vod_director = "";
// 描述
this.vod_content = "";
// 地区
this.vod_area = "";
2024-07-11 17:45:07 +08:00
// 夸克网盘链接
this.quarkUrl = "";
2024-06-15 19:04:15 +08:00
}
}
/**
* 返回分类列表
*/
class RepVideoClassList {
constructor() {
/**
* @type {VideoClass[]}
*/
this.data = [];
this.error = "";
}
}
2024-07-16 21:31:36 +08:00
/**
* 返回二级分类列表(包括筛选列表)
*/
class RepVideoSubclassList {
constructor() {
/**
* 二级分类数据
* @type {VideoSubclass}
*/
this.data = new VideoSubclass();
this.error = "";
}
}
2024-06-15 19:04:15 +08:00
/**
* 返回视频列表
*/
class RepVideoList {
constructor() {
/**
2024-07-11 17:45:07 +08:00
* @type {VideoDetail[]}
2024-06-15 19:04:15 +08:00
*/
2024-07-16 21:31:36 +08:00
this.data = [];
2024-06-15 19:04:15 +08:00
this.error = "";
2024-07-11 17:45:07 +08:00
this.total = 0;
2024-06-15 19:04:15 +08:00
}
}
/**
* 返回视频详情
*/
class RepVideoDetail {
constructor() {
/**
* @type {VideoDetail}
*/
this.data = null;
this.error = "";
}
}
/**
* 返回播放地址
*/
class RepVideoPlayUrl {
constructor() {
this.data = "";
2024-07-12 10:47:12 +08:00
/**
* 播放视频的请求header
**/
this.headers;
2024-06-15 19:04:15 +08:00
this.error = "";
}
}
/**
* UZArgs 封装一组参数用于构建请求URL或进行数据查询
*/
class UZArgs {
constructor() {
// 请求的URL
this.url = "";
// 当前页码
this.page = 1;
//搜索关键词
this.searchWord = "";
}
}
2024-07-16 21:31:36 +08:00
/**
* getSubclassVideoList 方法传入的参数
*/
class UZSubclassVideoListArgs extends UZArgs {
constructor() {
/**
2024-08-30 16:35:47 +08:00
* 主分类ID 即扩展返回的 @type {RepVideoClassList}.data[0].type_id
2024-07-16 21:31:36 +08:00
*/
this.mainClassId = "";
/**
2024-08-30 16:35:47 +08:00
* 二级分类ID 即扩展返回的 @type {RepVideoSubclassList}.data.class.type_id
2024-07-16 21:31:36 +08:00
*/
this.subclassId = "";
/**
2024-08-30 16:35:47 +08:00
* 筛选标签按返回的顺序传入 即扩展返回的 @type {RepVideoSubclassList}.data.filter.
2024-07-16 21:31:36 +08:00
* @type {FilterLabel[]}
*/
this.filter = [];
}
}
2024-06-22 14:25:29 +08:00
/**
2024-08-30 16:35:47 +08:00
* 扩展基类
2024-06-22 14:25:29 +08:00
*/
2024-06-15 19:04:15 +08:00
class WebApiBase {
2024-07-16 21:31:36 +08:00
// 网站主页
webSite = "";
2024-06-15 19:04:15 +08:00
/**
* 异步获取分类列表的方法
* @param {UZArgs} args
2024-06-16 10:06:17 +08:00
* @returns {@Promise<JSON.stringify(new RepVideoClassList())>}
2024-06-15 19:04:15 +08:00
*/
async getClassList(args) {
2024-06-16 10:06:17 +08:00
return JSON.stringify(new RepVideoClassList());
2024-06-15 19:04:15 +08:00
}
2024-07-16 21:31:36 +08:00
/**
* 获取二级分类列表筛选列表的方法
* @param {UZArgs} args
* @returns {@Promise<JSON.stringify(new RepVideoSubclassList())>}
*/
async getSubclassList(args) {
return JSON.stringify(new RepVideoSubclassList());
}
2024-06-15 19:04:15 +08:00
/**
* 获取分类视频列表
* @param {UZArgs} args
2024-06-16 10:06:17 +08:00
* @returns {@Promise<JSON.stringify(new RepVideoList())>}
2024-06-15 19:04:15 +08:00
*/
async getVideoList(args) {
2024-06-16 10:06:17 +08:00
return JSON.stringify(new RepVideoList());
2024-06-15 19:04:15 +08:00
}
2024-07-16 21:31:36 +08:00
/**
* 获取二级分类视频列表 筛选视频列表
* @param {UZSubclassVideoListArgs} args
* @returns {@Promise<JSON.stringify(new RepVideoList())>}
*/
async getSubclassVideoList(args) {
return JSON.stringify(new RepVideoList());
}
2024-06-15 19:04:15 +08:00
/**
* 获取视频详情
* @param {UZArgs} args
2024-06-16 10:06:17 +08:00
* @returns {@Promise<JSON.stringify(new RepVideoDetail())>}
2024-06-15 19:04:15 +08:00
*/
async getVideoDetail(args) {
2024-06-16 10:06:17 +08:00
return JSON.stringify(new RepVideoDetail());
2024-06-15 19:04:15 +08:00
}
/**
* 获取视频的播放地址
* @param {UZArgs} args
2024-06-16 10:06:17 +08:00
* @returns {@Promise<JSON.stringify(new RepVideoPlayUrl())>}
2024-06-15 19:04:15 +08:00
*/
async getVideoPlayUrl(args) {
2024-06-16 10:06:17 +08:00
return JSON.stringify(new RepVideoPlayUrl());
2024-06-15 19:04:15 +08:00
}
/**
* 搜索视频
* @param {UZArgs} args
2024-06-16 10:06:17 +08:00
* @returns {@Promise<JSON.stringify(new RepVideoList())>}
2024-06-15 19:04:15 +08:00
*/
async searchVideo(args) {
2024-06-16 10:06:17 +08:00
return JSON.stringify(new RepVideoList());
2024-06-15 19:04:15 +08:00
}
}
/**
2024-06-22 14:25:29 +08:00
* req 返回的数据
2024-06-15 19:04:15 +08:00
*/
class ProData {
constructor() {
this.error = "";
this.data;
2024-07-11 17:45:07 +08:00
/**
* @type {object} 响应头
*/
this.headers;
/**
* @type {number} 状态码
*/
this.code;
2024-06-15 19:04:15 +08:00
}
}
/**
2024-06-22 14:25:29 +08:00
* 网络请求也可以使用 fetch
2024-06-27 17:59:35 +08:00
* @param {string} url 请求的URL
* @param {object} options 请求参数 {headers:{},method:"POST",data:{}}
2024-06-15 19:04:15 +08:00
* @returns {Promise<ProData>}
*/
async function req(url, options) {
let pro = await sendMessage(
"req",
JSON.stringify({ url: url, options: options })
);
return pro;
}