├── .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 |
39 |

网页添加

40 |

41 | 点击跳转网页,打不开需要挂梯 42 |

43 |
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 |

Cookie 设置

85 |
86 |
87 |

UC | 夸克 | 天翼

88 |

89 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 uc 或 夸克 -> 登录 -> 点击右上角 -> 点击登录的类型 -> 确定绑定 90 |

91 |
92 | 93 |
94 |

阿里 (两个都要填!需要手动复制)

95 |
    96 |
  1. 97 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 阿里 32 -> 扫码登录 -> 复制一串 数字与字母的混合文本 -> 98 | 返回 -> 点击 阿里 32 的那个笔 -> 粘贴 -> 确定 99 |
  2. 100 |
  3. 101 | uz 影视 -> 设置 -> 数据管理 -> 环境变量 -> 点击右上角按钮 -> 点击 cookie 按钮 -> 选择 阿里 280 -> 扫码登录 -> 复制一串 数字与字母的混合文本 -> 102 | 返回 -> 点击 阿里 280 的那个笔 -> 粘贴 -> 确定 103 |
  4. 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 |

TMDB

125 |
    126 |
  1. 点击查看注册教程
  2. 127 |
  3. 应用信息任意填写,应用简介使用 英文 填写
  4. 128 |
  5. 注册成功后
  6. 129 |
  7. uz 影视 -> 设置 -> 数据管理 -> The Movie Database -> 点击 Get TMDB Api Key 登录后 复制 key -> 返回 -> 粘贴 -> 返回 完成
  8. 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 |
  1. 点击进入 YanG-1989 大佬 分享页面
  2. 153 |
  3. 点击 想要添加的直播类型 自动复制
  4. 154 |
  5. uz 影视 -> 设置 -> 数据管理 -> 直播源 -> + -> 输入任意名称 -> 输入刚刚复制的链接 -> 确定
  6. 155 |
  7. uz 影视 -> 点击底部小电视 -> 点击顶部小电视 -> 选择添加的直播源 -> 点击右上角切换展示分类
  8. 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 | 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 |
80 |
${config.title}
81 | ${config.description ? `
${config.description}
` : ''} 82 |
83 |
84 | 93 |
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 | --------------------------------------------------------------------------------