├── .gitignore
├── README.md
├── example
├── pic.jpeg
└── source.json
├── html
├── help.html
├── help.md
├── index.html
├── panNav.html
├── policy.html
└── store
│ ├── config.js
│ ├── index.html
│ ├── main.js
│ └── styles.css
├── js
├── panTools.json
└── recommendHome.json
├── update.json
├── video_sources_default.json
└── video_sources_sese.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS-specific files
2 | .DS_Store
3 | .DS_Store?
4 | ._*
5 | .Spotlight-V100
6 | .Trashes
7 | ehthumbs.db
8 | Thumbs.db
9 | .DS_Store
10 | /js/node_modules
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # uz 影视
2 |
3 | **追剧、直播、无广、投屏、免费**
4 |
5 | **iOS & Android & Win & Mac**
6 |
7 | - 频道 [t.me/uzvideoplay](https://t.me/uzvideoplay)
8 | - 群组 [t.me/uzVideoApp](https://t.me/uzVideoApp)
9 |
10 | ### 扩展仓库,编写扩展
11 |
12 | https://github.com/YYDS678/uzVideo-extensions
13 |
14 | ### 将资源内置包内
15 |
16 | 1. 将 `.ipa` `.apk` `.msix` 后缀改为 `.zip` 使用加压软件解压
17 | 2. 找到 `uzAio.zip`
18 |
19 | 1. iOS `/Payload/Runner.app/Frameworks/App.framework/flutter_assets/uzAio/uzAio.zip`
20 | 2. Android `/assets/flutter_assets/uzAio/uzAio.zip`
21 | 3. Win `/data/flutter_assets/uzAio/uzAio.zip`
22 |
23 | 3. 准备自己的源文件可在 `env.json` 直接将环境变量填写完整
24 | 4. 将自己的源文件命名为 `uzAio.zip` 替换第二部找到的 `uzAio.zip`
25 | 5. 将 第一步 解压后的文件重新压缩,并改为之前的后缀
26 | 6. 安装后,打开 app 设置 -> 数据管理 -> + -> 读取应用内文件
27 |
28 |
29 | ### 如有任何相关问题联系:[机器人](https://t.me/uzVideoAppbot)
30 |
--------------------------------------------------------------------------------
/example/pic.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YYDS678/uzVideo/68faffd0c08a78eb54c4b9bd94b3fe3d32c81593/example/pic.jpeg
--------------------------------------------------------------------------------
/example/source.json:
--------------------------------------------------------------------------------
1 | {
2 | "code": 1,
3 | "msg": "数据列表",
4 | "page": 1,
5 | "pagecount": 1,
6 | "limit": "20",
7 | "total": 1,
8 | "list": [
9 | {
10 | "vod_id": 1,
11 | "type_id": 1,
12 | "vod_name": "演示视频",
13 | "vod_pic": "https://github.moeyy.xyz/https://raw.githubusercontent.com/YYDS678/uzVideo/main/example/pic.jpeg",
14 | "vod_actor": "暂无",
15 | "vod_director": "暂无",
16 | "vod_blurb": "暂无",
17 | "vod_remarks": "演示",
18 | "vod_year": "2024",
19 | "vod_play_url": "演示$http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_16x9/gear2/prog_index.m3u8#"
20 | }
21 | ],
22 | "class": [{ "type_id": 1, "type_pid": 0, "type_name": "演示分类" }]
23 | }
24 |
--------------------------------------------------------------------------------
/html/help.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | uz影视 不完全使用指南
7 |
8 |
28 |
29 |
30 |
31 |
uz影视 不完全使用指南
32 |
33 |
34 |
35 |
36 |
37 |
38 |
44 |
45 |
46 |
47 |
63 |
uz 影视 -> 设置 -> 数据管理 -> 订阅 -> 添加 -> 分别输入上面链接 -> 确定(添加过程较慢)
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
uz 影视 -> 设置 -> 数据管理 -> 推荐扩展 -> 点击扩展 -> 启用推荐主页 -> 重启 app
74 |
75 |
76 |
77 |
78 |
uz 影视 -> 设置 -> 数据管理 -> 网盘工具扩展 -> 点击扩展 -> 重启 app
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 uc 或 夸克 -> 登录 -> 点击右上角 -> 点击登录的类型 -> 确定绑定
90 |
91 |
92 |
93 |
94 |
95 |
96 | -
97 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 阿里 32 -> 扫码登录 -> 复制一串 数字与字母的混合文本 ->
98 | 返回 -> 点击 阿里 32 的那个笔 -> 粘贴 -> 确定
99 |
100 | -
101 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 阿里 280 -> 扫码登录 -> 复制一串 数字与字母的混合文本 ->
102 | 返回 -> 点击 阿里 280 的那个笔 -> 粘贴 -> 确定
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 | - `6666` y 佬开发
116 | - `1111` 采集站(添加两个即可)
117 | - `2222` 采集站(18+ 自己看着加)
118 | - 添加过 all in one 无需再添加 `6666`
119 | - uz 影视 -> 设置 -> 数据管理 -> 视频源 -> 小齿轮 -> 添加源列表 -> 输入 `6666` 或 `1111` 或 `2222` > 确定
120 |
121 |
122 |
123 |
124 |
125 |
126 | - 点击查看注册教程
127 | - 应用信息任意填写,应用简介使用 英文 填写
128 | - 注册成功后
129 | - uz 影视 -> 设置 -> 数据管理 -> The Movie Database -> 点击 Get TMDB Api Key 登录后 复制 key -> 返回 -> 粘贴 -> 返回 完成
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
uz 影视 -> 设置 -> 数据管理 -> 订阅 -> 点击右上角刷新按钮
141 |
142 |
143 |
144 |
uz 影视 -> 设置 -> 数据管理 -> 订阅 -> 点击要更新的链接
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 | - 点击进入 YanG-1989 大佬 分享页面
153 | - 点击 想要添加的直播类型 自动复制
154 | - uz 影视 -> 设置 -> 数据管理 -> 直播源 -> + -> 输入任意名称 -> 输入刚刚复制的链接 -> 确定
155 | - uz 影视 -> 点击底部小电视 -> 点击顶部小电视 -> 选择添加的直播源 -> 点击右上角切换展示分类
156 |
157 |
158 |
159 |
160 |
161 |
162 | - iOS15 以下不能看网盘
163 | - 安卓黑屏 播放设置 尝试 开启或关闭 安卓兼容模式
164 | - 安卓电视盒子 能不能用,请自己安装尝试。
165 | - 夸克画质糊,需要 VIP
166 |
167 |
168 |
169 |
170 |
173 |
174 |
175 |
176 |
--------------------------------------------------------------------------------
/html/help.md:
--------------------------------------------------------------------------------
1 | uz 影视 不完全使用指南
2 |
3 | - [添加数据](#添加数据)
4 | - [网页添加](#网页添加)
5 | - [输入链接添加](#输入链接添加)
6 | - [选择推荐扩展](#选择推荐扩展)
7 | - [选择网盘工具扩展](#选择网盘工具扩展)
8 | - [cookie](#cookie)
9 | - [UC |夸克|天翼](#uc-夸克天翼)
10 | - [阿里(两个都要填!需要手动复制)](#阿里两个都要填需要手动复制)
11 | - [分享码](#分享码)
12 | - [TMDB](#tmdb)
13 | - [数据更新](#数据更新)
14 | - [全部更新](#全部更新)
15 | - [部分更新](#部分更新)
16 | - [直播](#直播)
17 | - [问题](#问题)
18 |
19 | # 添加数据
20 |
21 | ## 网页添加
22 |
23 | [点击跳转网页,打不开需要挂梯](https://uz-video-five.vercel.app/install.html)
24 |
25 | ## 输入链接添加
26 |
27 | [阿里|夸克|UC| VOD 源](https://github.moeyy.xyz/https://raw.githubusercontent.com/YYDS678/uzVideo-extensions/refs/heads/main/uzAio.json)
28 |
29 | [阿里|夸克|UC|天翼|网盘源](https://ghproxy.cn/https://raw.githubusercontent.com/proversion2024/uz-extensions/refs/heads/master/uzAio.json)
30 |
31 | uz 影视 -> 设置 -> 数据管理 -> 订阅 -> 添加 -> 分别输入上面链接 -> 确定(添加过程较慢)
32 |
33 | ### 选择推荐扩展
34 |
35 | uz 影视 -> 设置 -> 数据管理 -> 推荐扩展 -> 点击扩展 -> 启用推荐主页 -> 重启 app
36 |
37 | ### 选择网盘工具扩展
38 |
39 | uz 影视 -> 设置 -> 数据管理 -> 网盘工具扩展 -> 点击扩展 -> 重启 app
40 |
41 | ### cookie
42 |
43 | 网页打不开 尝试 挂梯 或 不挂梯
44 |
45 | #### UC |夸克|天翼
46 |
47 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 uc 或 夸克 -> 登录 -> 点击右上角 -> 点击登录的类型 -> 确定绑定
48 |
49 | #### 阿里(两个都要填!需要手动复制)
50 |
51 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 阿里 32 -> 扫码登录 -> 复制一串 数字与字母的混合文本 -> 返回 -> 点击 阿里 32 的那个笔 -> 粘贴 -> 确定
52 |
53 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 阿里 280 -> 扫码登录 -> 复制一串 数字与字母的混合文本 -> 返回 -> 点击 阿里 280 的那个笔 -> 粘贴 -> 确定
54 |
55 | ## 分享码
56 |
57 | 1. `6666` y 佬开发
58 | 2. `1111` 采集站(添加两个即可)
59 | 3. `2222` 采集站(18+ 自己看着加)
60 | 4. 添加过 all in one 无需再添加 `6666`
61 | 5. uz 影视 -> 设置 -> 数据管理 -> 视频源 -> 小齿轮 -> 添加源列表 -> 输入 `6666` 或 `1111` 或 `2222` > 确定
62 |
63 | ## TMDB
64 |
65 | 使用需要科学上网,不用也行
66 |
67 | 1. [点击查看注册教程](https://www.ugnas.com/tutorial-detail/id-81.html)
68 | 2. 应用信息任意填写,**应用简介使用 英文 填写**
69 | 3. 注册成功后
70 | 4. uz 影视 -> 设置 -> 数据管理 -> The Movie Database -> 点击 Get TMDB Api Key 登录后 复制 key -> 返回 -> 粘贴 -> 返回 完成
71 |
72 | ## 数据更新
73 |
74 | ### 全部更新
75 |
76 | uz 影视 -> 设置 -> 数据管理 -> 订阅 -> 点击右上角刷新按钮
77 |
78 | ### 部分更新
79 |
80 | uz 影视 -> 设置 -> 数据管理 -> 订阅 -> 点击要更新的链接
81 |
82 | ## 直播
83 |
84 | 1. 点击进入 [YanG-1989 大佬](https://yang-1989.eu.org) 分享页面
85 | 2. 点击 想要添加的直播类型 自动复制
86 | 3. uz 影视 -> 设置 -> 数据管理 -> 直播源 -> + -> 输入任意名称 -> 输入刚刚复制的链接 -> 确定
87 | 4. uz 影视 -> 点击底部小电视 -> 点击顶部小电视 -> 选择添加的直播源 -> 点击右上角切换展示分类
88 |
89 | # 问题
90 |
91 | 1. iOS15 以下不能看网盘
92 | 2. 安卓黑屏 播放设置 尝试 开启或关闭 安卓兼容模式
93 | 3. 安卓电视盒子 能不能用,请自己安装尝试。
94 | 4. 夸克画质糊,需要 VIP
95 |
--------------------------------------------------------------------------------
/html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | uz影视
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/html/panNav.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 网盘站导航
7 |
84 |
85 |
86 |
87 |
88 |
网盘导航
89 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/html/policy.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YYDS678/uzVideo/68faffd0c08a78eb54c4b9bd94b3fe3d32c81593/html/policy.html
--------------------------------------------------------------------------------
/html/store/config.js:
--------------------------------------------------------------------------------
1 | // URL Schemes
2 | export const URL_SCHEMES = {
3 | BASE: 'uzVideo://uzVideo?action=addSub&url=',
4 | INTENT: 'intent://uzVideo?action=addSub&url='
5 | };
6 |
7 | // Messages
8 | export const MESSAGES = {
9 | COPY_SUCCESS: '复制成功',
10 | COPY_FAIL: '复制失败,请手动复制:\n\n',
11 | USAGE_PATH: '使用路径:uz影视 -> 设置 -> 数据管理 -> 订阅 -> +',
12 | EMPTY_URL: '请输入资源链接',
13 | INVALID_URL: '请输入有效的URL'
14 | };
15 |
16 | // Resource Configs
17 | export const RESOURCE_CONFIGS = [
18 | {
19 | title: 'uz影视 all in one',
20 | description: '整合大佬们开发的资源,感谢所有大佬. Yswag wangdepeng100',
21 | resourceUrl: 'https://raw.githubusercontent.com/YYDS678/uzVideo-extensions/refs/heads/main/uzAio.zip'
22 | },
23 | {
24 | title: 'pv大佬 all in one',
25 | description: 'proversion2024 大佬 all in one,感谢大佬',
26 | resourceUrl: 'https://ghproxy.cn/https://raw.githubusercontent.com/proversion2024/uz-extensions/refs/heads/master/uzAio.json'
27 | },
28 | {
29 | title: '采集站',
30 | description: '采集站资源,不需要添加太多两个够用',
31 | resourceUrl: 'https://github.moeyy.xyz/https://raw.githubusercontent.com/YYDS678/uzVideo/main/video_sources_default.json'
32 | }
33 | ];
--------------------------------------------------------------------------------
/html/store/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | uz影视 扩展商店
8 |
9 |
10 |
11 |
12 |
13 |
23 |
24 |
30 | 以下资源收录自网络,请自行甄别。
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/html/store/main.js:
--------------------------------------------------------------------------------
1 | import { URL_SCHEMES, MESSAGES, RESOURCE_CONFIGS } from './config.js';
2 |
3 | // URL验证函数
4 | function validateUrl(url) {
5 | try {
6 | new URL(url);
7 | return true;
8 | } catch (error) {
9 | return false;
10 | }
11 | }
12 |
13 | // 显示错误信息
14 | function showError(message) {
15 | const errorEl = document.getElementById('errorMessage');
16 | errorEl.textContent = message;
17 | setTimeout(() => {
18 | errorEl.textContent = '';
19 | }, 3000);
20 | }
21 |
22 | // 安装资源
23 | function installResource(isSpecial, configUrl = null) {
24 | const urlInput = document.getElementById('customUrl');
25 | let url = configUrl || urlInput.value.trim();
26 |
27 | if (!url) {
28 | showError(MESSAGES.EMPTY_URL);
29 | return;
30 | }
31 |
32 | if (!validateUrl(url)) {
33 | showError(MESSAGES.INVALID_URL);
34 | return;
35 | }
36 |
37 | const encodedUrl = encodeURIComponent(url);
38 | const finalUrl = isSpecial
39 | ? `${URL_SCHEMES.INTENT}${encodedUrl}#Intent;scheme=uzVideo;end`
40 | : `${URL_SCHEMES.BASE}${encodedUrl}`;
41 |
42 | window.location.href = finalUrl;
43 | }
44 |
45 | // 复制到剪贴板
46 | async function copyToClipboard(text) {
47 | try {
48 | if (navigator.clipboard && window.isSecureContext) {
49 | await navigator.clipboard.writeText(text);
50 | } else {
51 | const textArea = document.createElement('textarea');
52 | textArea.value = text;
53 | textArea.style.position = 'fixed';
54 | textArea.style.left = '-9999px';
55 | document.body.appendChild(textArea);
56 | textArea.select();
57 | try {
58 | document.execCommand('copy');
59 | } catch (err) {
60 | console.error('复制失败:', err);
61 | throw err;
62 | } finally {
63 | document.body.removeChild(textArea);
64 | }
65 | }
66 |
67 | alert(MESSAGES.COPY_SUCCESS + '\n' + MESSAGES.USAGE_PATH);
68 | } catch (err) {
69 | console.error('复制操作失败:', err);
70 | alert(MESSAGES.COPY_FAIL + text);
71 | }
72 | }
73 |
74 | // 创建资源卡片
75 | function createResourceCard(config) {
76 | const resourceGroup = document.createElement('div');
77 | resourceGroup.className = 'resource-group';
78 | resourceGroup.innerHTML = `
79 |
83 |
94 | `;
95 | return resourceGroup;
96 | }
97 |
98 | // 初始化页面
99 | window.onload = function () {
100 | const container = document.getElementById('resourcesContainer');
101 | container.style.marginTop = '20px';
102 |
103 | RESOURCE_CONFIGS.forEach(config => {
104 | const resourceCard = createResourceCard(config);
105 | container.appendChild(resourceCard);
106 | });
107 | };
108 |
109 | // 初始化事件监听器
110 | function initializeEventListeners() {
111 | document.addEventListener('click', (event) => {
112 | const link = event.target.closest('a[data-action]');
113 | if (!link) return;
114 |
115 | event.preventDefault();
116 | const action = link.getAttribute('data-action');
117 | const url = link.getAttribute('data-url');
118 |
119 | switch (action) {
120 | case 'copy':
121 | copyToClipboard(url);
122 | break;
123 | case 'install':
124 | installResource(false, url);
125 | break;
126 | case 'help':
127 | window.open('https://uz-video-five.vercel.app/help.html');
128 | break;
129 | case 'special-install':
130 | installResource(true, url);
131 | break;
132 | }
133 | });
134 | }
135 |
136 | // 导出函数供HTML使用
137 | window.installResource = installResource;
138 | window.copyToClipboard = copyToClipboard;
139 |
140 | // 在页面加载完成后初始化事件监听器
141 | window.addEventListener('load', initializeEventListeners);
--------------------------------------------------------------------------------
/html/store/styles.css:
--------------------------------------------------------------------------------
1 | /* 基础变量定义 */
2 | :root {
3 | --bg-primary: #ffffff;
4 | --bg-secondary: #f9f9f9;
5 | --text-primary: #333;
6 | --text-secondary: #666;
7 | --border-color: #ddd;
8 | --link-color: #007bff;
9 | --link-hover: #0056b3;
10 | --btn-primary: #007bff;
11 | --btn-success: #28a745;
12 | --btn-warning: #ffc107;
13 | --btn-secondary: #6c757d;
14 | --shadow-color: rgba(0, 0, 0, 0.1);
15 | }
16 |
17 | /* 暗色主题 */
18 | @media (prefers-color-scheme: dark) {
19 | :root {
20 | --bg-primary: #1a1a1a;
21 | --bg-secondary: #2d2d2d;
22 | --text-primary: #e0e0e0;
23 | --text-secondary: #a0a0a0;
24 | --border-color: #404040;
25 | --link-color: #4da3ff;
26 | --link-hover: #80bdff;
27 | --btn-primary: #4da3ff;
28 | --btn-success: #3dae60;
29 | --btn-warning: #ffd43b;
30 | --btn-secondary: #8c8c8c;
31 | --shadow-color: rgba(0, 0, 0, 0.3);
32 | }
33 | }
34 |
35 | /* 基础样式 */
36 | body {
37 | background-color: var(--bg-primary);
38 | color: var(--text-primary);
39 | font-family: Arial, sans-serif;
40 | max-width: 600px;
41 | margin: 0 auto;
42 | padding: 20px;
43 | }
44 |
45 | a {
46 | color: var(--link-color);
47 | text-decoration: none;
48 | }
49 |
50 | /* 页面头部 */
51 | .page-header {
52 | text-align: center;
53 | margin-bottom: 20px;
54 | }
55 |
56 | .page-title {
57 | font-size: 1.5em;
58 | font-weight: bold;
59 | color: var(--text-primary);
60 | margin-bottom: 10px;
61 | }
62 |
63 | .page-description {
64 | color: var(--text-secondary);
65 | font-size: 0.9em;
66 | line-height: 1.6;
67 | }
68 |
69 | /* 资源卡片 */
70 | .resource-group {
71 | margin-bottom: 15px;
72 | padding: 10px;
73 | border: 1px solid var(--border-color);
74 | border-radius: 5px;
75 | display: flex;
76 | flex-direction: column;
77 | background-color: var(--bg-secondary);
78 | }
79 |
80 | .resource-header {
81 | display: flex;
82 | flex-direction: column;
83 | margin-bottom: 10px;
84 | }
85 |
86 | .resource-title {
87 | font-weight: bold;
88 | margin-bottom: 5px;
89 | }
90 |
91 | .resource-description {
92 | color: var(--text-secondary);
93 | margin-bottom: 10px;
94 | font-size: 0.9em;
95 | }
96 |
97 | /* 按钮样式 */
98 | .button-row {
99 | display: flex;
100 | justify-content: flex-end;
101 | align-items: center;
102 | gap: 10px;
103 | }
104 |
105 | .btn {
106 | padding: 8px 15px;
107 | background-color: var(--btn-primary);
108 | color: white;
109 | text-decoration: none;
110 | border-radius: 4px;
111 | border: none;
112 | cursor: pointer;
113 | flex-shrink: 0;
114 | min-width: 70px;
115 | text-align: center;
116 | }
117 |
118 | .copy-btn {
119 | background-color: var(--btn-success);
120 | }
121 |
122 | .help-btn {
123 | background-color: var(--btn-warning);
124 | }
125 |
126 | /* 响应式布局 */
127 | @media (min-width: 768px) {
128 | body {
129 | max-width: 1200px;
130 | }
131 |
132 | #resourcesContainer {
133 | display: grid;
134 | grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
135 | gap: 20px;
136 | }
137 | }
138 |
139 | @media (max-width: 767px) {
140 | #resourcesContainer {
141 | display: grid;
142 | grid-template-columns: 1fr;
143 | gap: 15px;
144 | }
145 | }
146 |
147 | /* 下拉菜单 */
148 | .dropdown {
149 | position: relative;
150 | display: inline-block;
151 | }
152 |
153 | .dropdown-btn {
154 | padding: 8px 16px;
155 | background-color: var(--btn-primary);
156 | color: white;
157 | border: none;
158 | border-radius: 6px;
159 | cursor: pointer;
160 | font-size: 0.9em;
161 | min-width: 90px;
162 | position: relative;
163 | z-index: 2;
164 | transition: all 0.2s ease;
165 | box-shadow: 0 2px 4px var(--shadow-color);
166 | }
167 |
168 | .dropdown-content {
169 | position: absolute;
170 | right: 100%;
171 | top: 0;
172 | background-color: var(--bg-secondary);
173 | min-width: 160px;
174 | box-shadow: 0 4px 16px var(--shadow-color);
175 | z-index: 1;
176 | border-radius: 8px;
177 | border: 1px solid var(--border-color);
178 | margin-right: 10px;
179 | opacity: 0;
180 | visibility: hidden;
181 | transform: translateX(15px);
182 | transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
183 | display: flex;
184 | flex-direction: row-reverse;
185 | }
186 |
187 | .dropdown-content a {
188 | color: var(--text-primary);
189 | padding: 10px 16px;
190 | text-decoration: none;
191 | display: block;
192 | transition: all 0.2s ease;
193 | white-space: nowrap;
194 | font-size: 0.95em;
195 | border-radius: 4px;
196 | margin: 2px;
197 | }
198 |
199 | .dropdown-content a:hover {
200 | background-color: var(--bg-primary);
201 | transform: translateX(-3px);
202 | color: var(--link-color);
203 | }
204 |
205 | .dropdown:hover .dropdown-content {
206 | opacity: 1;
207 | visibility: visible;
208 | transform: translateX(0);
209 | }
210 |
211 | .dropdown:hover .dropdown-btn {
212 | background-color: var(--link-hover);
213 | transform: scale(1.05);
214 | box-shadow: 0 4px 8px var(--shadow-color);
215 | }
216 |
217 | /* 移动端下拉菜单适配 */
218 | @media (max-width: 767px) {
219 | .dropdown-content {
220 | position: absolute;
221 | right: 0;
222 | top: 100%;
223 | margin-top: 8px;
224 | margin-right: 0;
225 | width: auto;
226 | min-width: 200px;
227 | flex-direction: row;
228 | justify-content: space-around;
229 | padding: 8px;
230 | }
231 |
232 | .dropdown-content a {
233 | padding: 8px 12px;
234 | text-align: center;
235 | flex: 1;
236 | margin: 0 4px;
237 | }
238 |
239 | .dropdown-content a:hover {
240 | transform: translateY(-2px);
241 | }
242 | }
--------------------------------------------------------------------------------
/js/panTools.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "UC、夸克 网盘解析工具",
3 | "url": "https://github.moeyy.xyz/https://raw.githubusercontent.com/YYDS678/uzVideo-extensions/refs/heads/main/panTools/js/panTools.js",
4 | "env": "UCCookie##用于播放UC网盘视频,请在网页获取UC网盘的Cookie&&夸克Cookie##用于播放Quark网盘视频,请在网页获取Quark网盘的Cookie"
5 | }
6 |
--------------------------------------------------------------------------------
/js/recommendHome.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "豆瓣推荐 影视推荐",
3 | "codeID": "f2GRQWVkMifmWtoE",
4 | "url": "https://github.moeyy.xyz/https://raw.githubusercontent.com/YYDS678/uzVideo-extensions/refs/heads/main/recommend/js/douban.txt"
5 | }
6 |
--------------------------------------------------------------------------------
/update.json:
--------------------------------------------------------------------------------
1 | {
2 | "version":"1.5.40",
3 | "apk":"https://t.me/uzvideoplay",
4 | "ipa":"https://t.me/uzvideoplay",
5 | "update":"# 本次更新\n- 优化 TV 焦点控制\n- 修复直播弹窗\n- 修复换集播放进度错误\n- 修复其它部分已知问题\n- 导入可直接控制源属性\n\n# 增加群友反馈部分功能\n- 下载 tab 增加关闭按钮\n- TV 支持左右键换台\n- 支持自定义长按倍速\n- 支持手机分享"
6 | }
7 |
--------------------------------------------------------------------------------
/video_sources_default.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "api": "https://cj.rycjapi.com/api.php/provide/vod",
4 | "name": "🔵如意"
5 | },
6 | {
7 | "api": "https://json.heimuer.xyz/api.php/provide/vod/",
8 | "name": "🔵黑木耳"
9 | },
10 | {
11 | "api": "https://cjhwba.com/api.php/provide/vod/",
12 | "name": "🔵华为吧"
13 | },
14 | {
15 | "api": "https://api.1080zyku.com/inc/apijson.php",
16 | "name": "🔵1080源"
17 | },
18 | {
19 | "api": "https://cj.ffzyapi.com/api.php/provide/vod",
20 | "name": "🔵非凡源"
21 | },
22 | {
23 | "api": "https://ikunzyapi.com/api.php/provide/vod",
24 | "name": "🔵ikun源"
25 | },
26 | {
27 | "api": "http://aliys.cn:90/api.php/provide/vod/",
28 | "name": "🔵阿里源"
29 | },
30 | {
31 | "api": "https://cj.lzcaiji.com/api.php/provide/vod/at/json",
32 | "name": "🔵量子源"
33 | },
34 | {
35 | "api": "https://360zy.com/api.php/provide/vod/",
36 | "name": "🔵360"
37 | },
38 | {
39 | "api": "http://www.feidaozy.com/api.php/provide/vod/",
40 | "name": "🔵飞刀"
41 | },
42 | {
43 | "api": "https://www.mdzyapi.com/api.php/provide/vod/",
44 | "name": "🔵墨斗"
45 | },
46 | {
47 | "api": "https://hw8.live/api.php/provide/vod/",
48 | "name": "🔵华为吧"
49 | },
50 | {
51 | "api": "https://jinyingzy.com/api.php/provide/vod/",
52 | "name": "🔵金鹰"
53 | },
54 | {
55 | "api": "https://leshiapi.com/api.php/provide/vod/",
56 | "name": "🔵乐视"
57 | },
58 | {
59 | "api": "https://okzyw9.com/api.php/provide/vod/",
60 | "name": "🔵OK"
61 | },
62 | {
63 | "api": "https://zpsps.com/api.php/provide/vod/",
64 | "name": "🔵宝片"
65 | },
66 | {
67 | "api": "https://www.inmi.app/api.php/provide/vod/at/xml",
68 | "name": "🔵映迷"
69 | },
70 | {
71 | "api": "https://iqyi.xiaohuangrentv.com/api.php/provide/vod/",
72 | "name": "🔵小黄人"
73 | },
74 | {
75 | "api": "https://api.niuniuzy.me/api.php/provide/vod/",
76 | "name": "🔵牛牛"
77 | },
78 | {
79 | "api": "https://cj.yayazy.net/api.php/provide/vod/",
80 | "name": "🔵丫丫"
81 | },
82 | {
83 | "api": "https://cj.vodimg.top/api.php/provide/vod/",
84 | "name": "🔵影图"
85 | },
86 | {
87 | "api": "http://zy.xiaomaomi.cc/api.php/provide/vod/",
88 | "name": "🔵小猫咪"
89 | },
90 | {
91 | "api": "https://api.ukuapi.com/api.php/provide/vod/",
92 | "name": "🔵U酷"
93 | },
94 | {
95 | "api": "https://hhzyapi.com/api.php/provide/vod",
96 | "name": "🔵豪华"
97 | },
98 | {
99 | "api": "https://jszyapi.com/api.php/provide/vod",
100 | "name": "🔵极速"
101 | },
102 | {
103 | "api": "https://suoniapi.com/api.php/provide/vod/",
104 | "name": "🔵索尼"
105 | },
106 | {
107 | "api": "http://cj.ffzyapi.com/api.php/provide/vod/",
108 | "name": "🔵非凡"
109 | },
110 | {
111 | "api": "https://cj.lziapi.com/api.php/provide/vod/",
112 | "name": "🔵量子"
113 | },
114 | {
115 | "api": "https://bfzyapi.com/api.php/provide/vod/",
116 | "name": "🔵暴风"
117 | },
118 | {
119 | "api": "https://www.hongniuzy2.com/api.php/provide/vod/",
120 | "name": "🔵红牛"
121 | },
122 | {
123 | "api": "https://www.feisuzyapi.com/api.php/provide/vod/",
124 | "name": "🔵飞速"
125 | },
126 | {
127 | "api": "https://caiji.kczyapi.com/api.php/provide/vod/from/kcm3u8/",
128 | "name": "🔵快车"
129 | },
130 | {
131 | "api": "http://sdzyapi.com/api.php/provide/vod/",
132 | "name": "🔵闪电"
133 | },
134 | {
135 | "api": "https://m3u8.apiyhzy.com/api.php/provide/vod/",
136 | "name": "🔵樱花"
137 | },
138 | {
139 | "api": "https://collect.wolongzyw.com/api.php/provide/vod/",
140 | "name": "🔵卧龙"
141 | },
142 | {
143 | "api": "http://www.ahjiuman.com/api.php/provide/vod/at/json",
144 | "name": "🔵飘花"
145 | },
146 | {
147 | "api": "https://www.huyaapi.com/api.php/provide/vod/",
148 | "name": "🔵虎牙"
149 | },
150 | {
151 | "api": "https://api.wujinapi.com/api.php/provide/vod/",
152 | "name": "🔵无尽"
153 | },
154 | {
155 | "api": "https://subocaiji.com/api.php/provide/vod/",
156 | "name": "🔵速博"
157 | },
158 | {
159 | "api": "https://api.xinlangapi.com/xinlangapi.php/provide/vod/",
160 | "name": "🔵新浪"
161 | },
162 | {
163 | "api": "https://cj.lziapi.com/api.php/provide/vod/from/lzm3u8/",
164 | "name": "🔵量子资源(lzm3u8)"
165 | },
166 | {
167 | "api": "https://360zy.com/api.php/seaxml/vod",
168 | "name": "🔵360资源1"
169 | },
170 | {
171 | "api": "https://ikunzyapi.com/api.php/provide/vod/from/ikm3u8/at/json/",
172 | "name": "🔵爱坤资源json"
173 | },
174 | {
175 | "api": "http://fszy1.com/api.php/provide/vod/",
176 | "name": "🔵飞速资源2"
177 | },
178 | {
179 | "api": "https://m3u8.feisuzyapi.com/api.php/provide/vod/",
180 | "name": "🔵飞速资源3"
181 | },
182 | {
183 | "api": "https://api.1080zyku.com/inc/api_mac10.php",
184 | "name": "🔵1080资源"
185 | },
186 | {
187 | "api": "https://api.1080zyku.com/inc/api.php/provide/vod/",
188 | "name": "🔵优质资源库"
189 | },
190 | {
191 | "api": "https://api.tiankongapi.com/api.php/provide/vod",
192 | "name": "🔵天空资源"
193 | },
194 | {
195 | "api": "https://m3u8.tiankongapi.com/api.php/provide/vod/",
196 | "name": "🔵天空资源1"
197 | },
198 | {
199 | "api": "https://m3u8.tiankongapi.com/api.php/provide/vod/from/tkm3u8/",
200 | "name": "🔵天空资源(tkm3u8)"
201 | },
202 | {
203 | "api": "https://api.guangsuapi.com/api.php/provide/vod",
204 | "name": "🔵光速资源"
205 | },
206 | {
207 | "api": "https://api.guangsuapi.com/api.php/provide/vod/from/gsm3u8/",
208 | "name": "🔵光速资源(gsm3u8)"
209 | },
210 | {
211 | "api": "https://caiji.kczyapi.com/api.php/provide/vod/",
212 | "name": "🔵快车资源"
213 | },
214 | {
215 | "api": "http://cj.bajiecaiji.com/inc/apijson_vod.php",
216 | "name": "🔵八戒资源(php)"
217 | },
218 | {
219 | "api": "https://api.apibdzy.com/api.php/provide/vod/",
220 | "name": "🔵百度资源"
221 | },
222 | {
223 | "api": "https://img.smdyw.top/api.php/provide/vod",
224 | "name": "🔵神马资源"
225 | },
226 | {
227 | "api": "https://www.hongniuzy2.com/api.php/provide/vod/from/hnm3u8/",
228 | "name": "🔵红牛资源(hnm3u8)"
229 | },
230 | {
231 | "api": "https://kuaikan-api.com/api.php/provide/vod",
232 | "name": "🔵快看资源"
233 | },
234 | {
235 | "api": "https://api.wujinapi.me/api.php/provide/vod",
236 | "name": "🔵无尽资源资源me"
237 | },
238 | {
239 | "api": "https://api.wujinapi.net/api.php/provide/vod/",
240 | "name": "🔵无尽资源资源net"
241 | },
242 | {
243 | "api": "https://www.911ysw.top/tianyi.php/provide/vod/",
244 | "name": "🔵天翼资源"
245 | },
246 | {
247 | "api": "https://www.911ysw.top/tianyi.php/provide/vod/at/json",
248 | "name": "🔵天翼资源(json)"
249 | },
250 | {
251 | "api": "https://www.39kan.com/api.php/provide/vod/",
252 | "name": "🔵39影视"
253 | },
254 | {
255 | "api": "https://www.39kan.com/api.php/provide/vod/at/json/",
256 | "name": "🔵39影视(json)"
257 | },
258 | {
259 | "api": "http://cj.baozi66.top:66/api.php/provide/vod/",
260 | "name": "🔵雨哥哥影视"
261 | },
262 | {
263 | "api": "https://api.yparse.com/api/json",
264 | "name": "🔵步步高资源(json)"
265 | },
266 | {
267 | "api": "https://api.zuidapi.com/api.php/provide/vod/",
268 | "name": "🔵最大资源"
269 | },
270 | {
271 | "api": "https://caiji.qhzyapi.com/api.php/provide/vod",
272 | "name": "🔵奇虎资源"
273 | },
274 | {
275 | "api": "https://simiyy.com/api.php/provide/vod/",
276 | "name": "🔵私密影院"
277 | },
278 | {
279 | "api": "http://zyz.yxys.top/api.php/provide/vod/",
280 | "name": "🔵耀协资源"
281 | },
282 | {
283 | "api": "https://www.inmi.app/api.php/provide/vod/",
284 | "name": "🔵映迷资源"
285 | },
286 | {
287 | "api": "https://jyzyapi.com/api.php/provide/vod/",
288 | "name": "🔵金鹰资源1"
289 | },
290 | {
291 | "api": "https://jyzyapi.com/provide/vod/from/jinyingm3u8/",
292 | "name": "🔵金鹰资源(jinyingm3u8)"
293 | },
294 | {
295 | "api": "https://sdzyapi.com/api.php/provide/vod/from/sdm3u8/",
296 | "name": "🔵闪电资源(sdm3u8)"
297 | },
298 | {
299 | "api": "https://49zyw.com/api.php/provide/vod",
300 | "name": "🔵四九资源"
301 | }
302 | ]
303 |
--------------------------------------------------------------------------------
/video_sources_sese.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "api": "https://api.apilyzy.com/api.php/provide/vod/",
4 | "name": "🔞老鸭资源",
5 | "noHistory": true,
6 | "isLock": true
7 | },
8 | {
9 | "api": "https://www.xrbsp.com/api/json.php",
10 | "name": "🔞淫水机资源",
11 | "noHistory": true,
12 | "isLock": true
13 | },
14 | {
15 | "api": "http://fhapi9.com/api.php/provide/vod/",
16 | "name": "🔞番号资源",
17 | "noHistory": true,
18 | "isLock": true
19 | },
20 | {
21 | "api": "https://155api.com/api.php/provide/vod/",
22 | "name": "🔞155资源",
23 | "noHistory": true,
24 | "isLock": true
25 | },
26 | {
27 | "api": "https://155api.com/api.php/provide/vod/at/json",
28 | "name": "🔞155资源",
29 | "noHistory": true,
30 | "isLock": true
31 | },
32 | {
33 | "api": "https://jkunzyapi.com/api.php/provide/vod/",
34 | "name": "🔞鸡坤资源",
35 | "noHistory": true,
36 | "isLock": true
37 | },
38 | {
39 | "api": "https://www.pgxdy.com/api/json.php",
40 | "name": "🔞黄AV资源",
41 | "noHistory": true,
42 | "isLock": true
43 | },
44 | {
45 | "api": "https://www.gdlsp.com/api/json.php",
46 | "name": "🔞香奶儿资源",
47 | "noHistory": true,
48 | "isLock": true
49 | },
50 | {
51 | "api": "https://www.msnii.com/api/json.php",
52 | "name": "🔞美少女资源",
53 | "noHistory": true,
54 | "isLock": true
55 | },
56 | {
57 | "api": "https://www.kxgav.com/api/json.php",
58 | "name": "🔞白嫖资源",
59 | "noHistory": true,
60 | "isLock": true
61 | },
62 | {
63 | "api": "https://lbapi9.com/api.php/provide/vod/",
64 | "name": "🔞乐播资源",
65 | "noHistory": true,
66 | "isLock": true
67 | },
68 | {
69 | "api": "https://lbapi9.com/api.php/provide/vod/at/json",
70 | "name": "🔞乐播资源",
71 | "noHistory": true,
72 | "isLock": true
73 | },
74 | {
75 | "api": "https://api.ddapi.cc/api.php/provide/vod/",
76 | "name": "🔞滴滴资源",
77 | "noHistory": true,
78 | "isLock": true
79 | },
80 | {
81 | "api": "https://api.ddapi.cc/api.php/provide/vod/at/json",
82 | "name": "🔞滴滴资源",
83 | "noHistory": true,
84 | "isLock": true
85 | },
86 | {
87 | "api": "https://www.jingpinx.com/api.php/provide/vod/",
88 | "name": "🔞精品资源",
89 | "noHistory": true,
90 | "isLock": true
91 | }
92 | ]
93 |
--------------------------------------------------------------------------------