# 编写 uz 可执行的扩展 1. 感谢您的关注,由于作者对 js 了解甚少,所以内置的代码不够全面。**如果您要编写 uz 可执行的扩展需要添加代码或其他问题,可以联系[机器人](https://t.me/uzVideoAppbot)** 2. uzCode.js 内部定义了一些类和方法,您需要在扩展中实现 WebApiBase 的所有方法 3. uz 内部仅有一个运行时,所有 js 代码(包括扩展)都在一起加载执行。所以您的扩展内类名一定要特殊,实例名称也要特殊 4. 不支持 import export 5. 集成库可在 `uz3lib.js` 查看,如需添加其他库通用库请联系[机器人](https://t.me/uzVideoAppbot) 6. 成对使用 `// ignore` uz 内部会忽略包裹的内容 7. 为您的扩展编写以下 json 配置文件 ``` { "name": "名称", "api": "扩展链接", "instance": "实例名称", "webSite": "视频站地址。当加载代码时会赋值给对象的 webSite 属性,用户可自行在 app 内修改", "remark": "备注", "noHistory": false, // *不开启*历史记录 默认false(即开启历史记录),用户可自行在 app 内修改 "userAgent": "", // 设置播放ua 优先级低于 getVideoPlayUrl 返回ua,用户可自行在 app 内修改 "isLock": false, // 是否上锁 默认false(即不上锁),用户可自行在 app 内修改 "blockClassList": ["短剧"] // 屏蔽分类,用户可自行在 app 内修改 } ``` # 扩展运行说明 1. 执行每个方法都会为 `webSite` 进行赋值 2. 流程图 ```mermaid graph TD A[开始] --> A1[uz 调用 getClassList 获取一级分类] -->|返回数据 rep: RepVideoClassList| B[判断 rep.data 列表内 VideoClass 的 hasSubclass 是否为 true] B -->|是,存在二级分类或者筛选列表| C[调用 getSubclassList 获取二级分类或筛选列表] B -->|否,不存在二级分类| D[调用 getVideoList 获取视频列表] C --> C1[调用 getSubclassVideoList 获取二级分类视频列表或者筛选视频列表] -->|点击单个视频| E E[调用 getVideoDetail 获取视频详情] D -->|点击单个视频| E E -->|点击某一集| F[调用 getVideoPlayUrl 获取播放链接] F --> G[结束] S[搜索] -->S1[调用 searchVideo 返回视频列表] -->|点击单个视频| E ``` # 修改记录 ### v1.5.40 1. `req` 支持设置 `responseType` 值为字符串 `json、arraybuffer、bytes、plain、stream` 2. `vod_pic` 支持 data url 格式 3. `RepVideoPlayUrl.data` 支持 data url 格式 ### v1.4.00 1. 增加二级分类和筛选列表功能 ### v1.3.00 1. 去掉 `cat.js`, 更改为 `cheerio` `Crypto` `Encrypt` `parse(后期可能会移除,推荐优先使用 cheerio)` 2. `VideoDetail` 新增 `quarkUrl` 支持夸克网盘 3. `RepVideoPlayUrl` 新增 `headers` 支持设置播放 `header`