[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73923":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},73923,"DecoTV","Decohererk\u002FDecoTV","Decohererk","基于最新版LunaTV二次开发的一个开箱即用的、跨平台的影视聚合播放站。【原KatelyaTV】",null,"TypeScript",2154,1040,12,10,0,3,16,53,9,80.35,"Other",false,"main",true,[],"2026-06-12 04:01:12","\u003C!-- markdownlint-disable MD033 MD026 MD034 -->\n\n\u003Ch1 align=\"center\">\n  \u003Cimg src=\"public\u002Flogo.png\" alt=\"DecoTV Logo\" width=\"160\" style=\"margin-bottom: 12px;\" \u002F>\n  \u003Cbr \u002F>\n  DecoTV\n\u003C\u002Fh1>\n\n> 🎬 **DecoTV** 是一个开箱即用的、跨平台的影视聚合播放器。它基于 **Next.js 16** + **Tailwind&nbsp;CSS 4** + **TypeScript 5** 构建，支持多资源搜索、在线播放、收藏同步、播放记录、云端存储，让你可以随时随地畅享海量免费影视内容。**支持本地无数据库模式、CMS 全量代理、隐私纵深防御等企业级特性。**\n\n\u003Cdiv align=\"center\">\n\n![Next.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNext.js-16-000?logo=nextdotjs)\n![TailwindCSS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTailwindCSS-4-38bdf8?logo=tailwindcss)\n![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.x-3178c6?logo=typescript)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green)\n![Docker Ready](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-ready-blue?logo=docker)\n\n\u003C\u002Fdiv>\n\n---\n\n## 🎬 项目展示\n\n\u003Cdiv align=\"center\">\n  \u003Ctable>\n    \u003Ctr>\n      \u003Ctd align=\"center\">\n        \u003Cimg src=\"public\u002Fscreenshot1.png\" alt=\"明亮模式\" width=\"400\">\n        \u003Cbr>\n        \u003Csub>\u003Cb>明亮模式\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\">\n        \u003Cimg src=\"public\u002Fscreenshot2.png\" alt=\"暗夜模式\" width=\"400\">\n        \u003Cbr>\n        \u003Csub>\u003Cb>暗夜模式\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n---\n\n### ⚠️ 重要提醒\n\n> **注意**：部署后项目为空壳项目，无内置播放源和直播源，需要自行收集配置。  \n> **免责声明**：请不要在 B 站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目，不授权任何\"科技周刊\u002F月刊\"类项目或站点收录本项目。\n\n## ✨ 功能特性\n\n- 🔍 **多源聚合搜索**：一次搜索立刻返回全源结果。\n- 📄 **丰富详情页**：支持剧集列表、演员、年份、简介等完整信息展示。\n- ▶️ **流畅在线播放**：集成 HLS.js & ArtPlayer。\n- 🔊 **多音轨切换**：当视频存在 2 条及以上音轨时，播放器控制栏会显示“音轨”按钮，可在中文配音 \u002F English 等音轨间切换；单音轨会自动隐藏按钮，界面保持简洁。\n- 🖥️ **网页投屏（Google Cast）**：支持在网页端直接发起投屏，并提供 iOS 设备兼容提示。\n- ❤️ **收藏 + 继续观看**：支持 Kvrocks\u002FRedis\u002FUpstash 存储，多端同步进度。\n- 👤 **用户注册系统**：支持用户自助注册（可选），带图形验证码防机器人。\n- 📱 **PWA**：离线缓存、安装到桌面\u002F主屏，移动端原生体验。\n- 🌗 **响应式布局**：桌面侧边栏 + 移动底部导航，自适应各种屏幕尺寸。\n- 📺 **弹幕功能**：集成弹弹play弹幕库，官方镜像开箱即用，支持模糊匹配优化、手动匹配与多节点自定义配置。\n- ☁️ **PanSou 网盘搜索**：支持对接远程 PanSou 节点，提供聚合网盘搜索能力，并可在后台灵活配置节点与鉴权。\n- ⬇️ **视频资源下载能力**：支持浏览器分片下载与服务端 FFmpeg 转存下载，增强任务管理、重试与超时处理。\n- 📡 **灵活直播体验**：支持多直播源配置、分页切换优化与 m3u8\u002Fflv\u002Fmp4 自动识别处理。\n- 🧠 **豆瓣信息增强**：支持标题反查豆瓣 ID、并行抓取与图片代理，详情页信息更完整。\n- 🎞️ **TMDB 元数据增强**：支持与豆瓣互补的 TMDB 元数据查询，中文优先、英文回退，可为详情页和私人影库补充更稳定的海报、背景图与简介。\n- 🗂️ **私人影库**：支持接入 OpenList \u002F 小雅 Alist \u002F Emby \u002F Jellyfin，在“我的影库”中浏览和播放自有媒体资源，并通过服务端代理保护流地址与鉴权信息。\n- 👿 **智能去广告**：自动跳过视频中的切片广告（实验性）。\n- 🏠 **本地无数据库模式**：无需 Redis，自动降级为浏览器 localStorage 存储。\n- 🌐 **CMS 全量代理**：根绝 Mixed Content 和 CORS 问题，支持任意第三方源。\n- 🛡️ **隐私纵深防御**：双重熔断机制，从配置到代理层隔离成人内容。\n\n### 注意：部署后项目为空壳项目，无内置播放源和直播源，需要自行收集\n\n\u003Cdetails>\n  \u003Csummary>点击查看项目截图\u003C\u002Fsummary>\n  \u003Cimg src=\"public\u002Fscreenshot1.png\" alt=\"项目截图\" style=\"max-width:600px\">\n  \u003Cimg src=\"public\u002Fscreenshot2.png\" alt=\"项目截图\" style=\"max-width:600px\">\n\u003C\u002Fdetails>\n\n### 请不要在 B 站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目，不授权任何“科技周刊\u002F月刊”类项目或站点收录本项目。\n\n## 🗺 目录\n\n- [🎬 项目展示](#-项目展示)\n- [✨ 功能特性](#-功能特性)\n- [🛠 技术栈](#-技术栈)\n- [🚀 部署](#-部署)\n- [⚙️ 配置文件](#️-配置文件)\n- [🔄 自动更新](#-自动更新)\n- [🌍 环境变量](#-环境变量)\n- [⬇️ 下载功能使用指南](#️-下载功能使用指南)\n- [Roadmap](#roadmap)\n- [📺 AndroidTV 使用](#-androidtv-使用)\n- [🔒 安全与隐私提醒](#-安全与隐私提醒)\n- [📄 License](#-license)\n- [🙏 致谢](#-致谢)\n- [📈 Star History](#-star-history)\n- [💝 赞赏支持](#-赞赏支持)\n\n## 🛠 技术栈\n\n| 分类      | 主要依赖                                                                                              |\n| --------- | ----------------------------------------------------------------------------------------------------- |\n| 前端框架  | [Next.js 16](https:\u002F\u002Fnextjs.org\u002F) · App Router · Turbopack                                            |\n| UI & 样式 | [Tailwind&nbsp;CSS 4](https:\u002F\u002Ftailwindcss.com\u002F)                                                       |\n| 语言      | TypeScript 5                                                                                          |\n| 播放器    | [ArtPlayer](https:\u002F\u002Fgithub.com\u002Fzhw2590582\u002FArtPlayer) · [HLS.js](https:\u002F\u002Fgithub.com\u002Fvideo-dev\u002Fhls.js\u002F) |\n| 代码质量  | ESLint 9 · Prettier 3 · Jest 29                                                                       |\n| 部署      | Docker                                                                                                |\n\n## 🚀 部署\n\n本项目**仅支持 Docker 或其他基于 Docker 的平台** 部署。\n\n### 🧩 OpenWrt 部署\n\n如果你计划运行在 OpenWrt（软路由 \u002F ARM 盒子 \u002F 树莓派等）设备上，参阅完整指南：\n\n👉 [OpenWrt 部署指南](.\u002Fdocs\u002FOpenWrt部署指南.md)\n\n快速拉取预构建镜像：\n\n```bash\ndocker pull ghcr.io\u002Fdecohererk\u002Fdecotv:latest\n```\n\n若需在外部主机自行构建后再导入至 OpenWrt，请参考指南中的 “获取或构建镜像” 与 “导出并传输” 步骤。\n\n### 📦 Docker 镜像标签\n\nDecoTV 提供以下 Docker 镜像标签：\n\n| 标签     | 说明         | 使用场景                         |\n| -------- | ------------ | -------------------------------- |\n| `latest` | 最新构建版本 | 总是使用最新代码，包含所有小更新 |\n| `v1.0.0` | 特定版本号   | 固定版本部署，便于版本管理和回滚 |\n\n**推荐使用方式**：\n\n```bash\n# 方式1：使用 latest 标签（自动获取最新更新）\ndocker pull ghcr.io\u002Fdecohererk\u002Fdecotv:latest\n\n# 方式2：使用特定版本号（生产环境推荐）\ndocker pull ghcr.io\u002Fdecohererk\u002Fdecotv:v1.0.0\n\n# 方式3：回滚到旧版本\ndocker pull ghcr.io\u002Fdecohererk\u002Fdecotv:v0.9.0\n```\n\n**版本号标签优势**：\n\n- ✅ 清楚知道运行的版本，方便对比 GitHub 最新版\n- ✅ 可以固定版本号，避免意外更新影响生产环境\n- ✅ 支持版本回滚，遇到问题可快速恢复到旧版本\n- ✅ 便于团队协作时统一环境版本\n\n> **注意**：使用 `latest` 标签时，重启容器不会自动拉取新镜像，需要手动执行 `docker pull` 才能获取更新。使用版本号标签可以明确控制何时更新。\n\n### Kvrocks 存储（推荐）\n\n```yml\nservices:\n  decotv-core:\n    image: ghcr.io\u002Fdecohererk\u002Fdecotv:latest # 或使用 :v1.0.0 固定版本\n    container_name: decotv-core\n    restart: on-failure\n    ports:\n      - '3000:3000'\n    environment:\n      - USERNAME=admin\n      - PASSWORD=admin_password\n      - NEXT_PUBLIC_STORAGE_TYPE=kvrocks\n      - KVROCKS_URL=redis:\u002F\u002Fdecotv-kvrocks:6666\n    networks:\n      - decotv-network\n    depends_on:\n      - decotv-kvrocks\n  decotv-kvrocks:\n    image: apache\u002Fkvrocks\n    container_name: decotv-kvrocks\n    restart: unless-stopped\n    volumes:\n      - kvrocks-data:\u002Fvar\u002Flib\u002Fkvrocks\n    networks:\n      - decotv-network\nnetworks:\n  decotv-network:\n    driver: bridge\nvolumes:\n  kvrocks-data:\n```\n\n### Redis 存储（有一定的丢数据风险）\n\n```yml\nservices:\n  decotv-core:\n    image: ghcr.io\u002Fdecohererk\u002Fdecotv:latest # 或使用 :v1.0.0 固定版本\n    container_name: decotv-core\n    restart: on-failure\n    ports:\n      - '3000:3000'\n    environment:\n      - USERNAME=admin\n      - PASSWORD=admin_password\n      - NEXT_PUBLIC_STORAGE_TYPE=redis\n      - REDIS_URL=redis:\u002F\u002Fdecotv-redis:6379\n    networks:\n      - decotv-network\n    depends_on:\n      - decotv-redis\n  decotv-redis:\n    image: redis:alpine\n    container_name: decotv-redis\n    restart: unless-stopped\n    networks:\n      - decotv-network\n    # 请开启持久化，否则升级\u002F重启后数据丢失\n    volumes:\n      - .\u002Fdata:\u002Fdata\nnetworks:\n  decotv-network:\n    driver: bridge\n```\n\n### Upstash 存储\n\n1. 在 [upstash](https:\u002F\u002Fupstash.com\u002F) 注册账号并新建一个 Redis 实例，名称任意。\n2. 复制新数据库的 **HTTPS ENDPOINT 和 TOKEN**\n3. 使用如下 docker compose\n\n```yml\nservices:\n  decotv-core:\n    image: ghcr.io\u002Fdecohererk\u002Fdecotv:latest # 或使用 :v1.0.0 固定版本\n    container_name: decotv-core\n    restart: on-failure\n    ports:\n      - '3000:3000'\n    environment:\n      - USERNAME=admin\n      - PASSWORD=admin_password\n      - NEXT_PUBLIC_STORAGE_TYPE=upstash\n      - UPSTASH_URL=上面 https 开头的 HTTPS ENDPOINT\n      - UPSTASH_TOKEN=上面的 TOKEN\n```\n\n### 🏠 本地无数据库模式（最简部署）\n\n如果你只是想**快速体验**或**单机使用**，不需要多端同步功能，可以使用本地存储模式。此模式下数据保存在浏览器的 localStorage 中，无需任何外部数据库。\n\n#### Docker Run（最简单）\n\n```bash\ndocker run -d \\\n  --name decotv \\\n  -p 3000:3000 \\\n  -v decotv-downloads:\u002Fapp\u002F.cache\u002Fffmpeg-downloads \\\n  -e PASSWORD=你的管理密码 \\\n  ghcr.io\u002Fdecohererk\u002Fdecotv:latest\n```\n\n#### Docker Compose\n\n```yml\nservices:\n  decotv:\n    image: ghcr.io\u002Fdecohererk\u002Fdecotv:latest\n    container_name: decotv\n    restart: unless-stopped\n    ports:\n      - '3000:3000'\n    environment:\n      - PASSWORD=你的管理密码\n    volumes:\n      - decotv-downloads:\u002Fapp\u002F.cache\u002Fffmpeg-downloads\nvolumes:\n  decotv-downloads:\n```\n\n#### 重要说明\n\n| 项目        | 说明                                                                  |\n| ----------- | --------------------------------------------------------------------- |\n| ✅ 必需配置 | `PASSWORD` - 管理员登录密码                                           |\n| ❌ 不需要   | `USERNAME`、`NEXT_PUBLIC_STORAGE_TYPE`、任何数据库连接变量            |\n| ❌ 不需要   | `AUTH_SECRET`、`AUTH_URL`（这些是其他认证框架的配置，DecoTV 不使用）  |\n| ⚠️ 数据存储 | 所有配置保存在浏览器 localStorage，清除浏览器数据会丢失配置           |\n| ⚠️ 多端同步 | 不支持，每个浏览器独立存储                                            |\n| ⬇️ 下载缓存 | 建议挂载 `\u002Fapp\u002F.cache\u002Fffmpeg-downloads`，避免容器重建时丢失已转存文件 |\n\n#### 常见问题\n\n**Q: 登录成功后操作仍提示 401 Unauthorized？**\n\n这可能是以下原因：\n\n1. **浏览器 Cookie 问题**：尝试清除浏览器 Cookie 后重新登录\n2. **残留数据库配置**：确保没有设置 `REDIS_URL`、`KV_REST_API_URL` 等数据库变量\n3. **使用了 HTTPS 代理**：如果你通过 Nginx 等反向代理使用 HTTPS，确保正确配置了 `X-Forwarded-Proto` 头\n\n**Q: 如何从本地模式迁移到数据库模式？**\n\n由于本地模式数据存储在浏览器中，无法直接迁移。建议：\n\n1. 手动导出配置（复制配置文件内容）\n2. 部署新的数据库模式实例\n3. 在新实例中导入配置\n\n## ⚙️ 配置文件\n\n完成部署后为空壳应用，无播放源，需要站长在管理后台的配置文件设置中填写配置文件（后续会支持订阅）\n\n配置文件示例如下：\n\n```json\n{\n  \"cache_time\": 7200,\n  \"api_site\": {\n    \"dyttzy\": {\n      \"api\": \"http:\u002F\u002Fxxx.com\u002Fapi.php\u002Fprovide\u002Fvod\",\n      \"name\": \"示例资源\",\n      \"detail\": \"http:\u002F\u002Fxxx.com\"\n    }\n    \u002F\u002F ...更多站点\n  },\n  \"custom_category\": [\n    {\n      \"name\": \"华语\",\n      \"type\": \"movie\",\n      \"query\": \"华语\"\n    }\n  ]\n}\n```\n\n- `cache_time`：接口缓存时间（秒）。\n- `api_site`：你可以增删或替换任何资源站，字段说明：\n  - `key`：唯一标识，保持小写字母\u002F数字。\n  - `api`：资源站提供的 `vod` JSON API 根地址。\n  - `name`：在人机界面中展示的名称。\n  - `detail`：（可选）部分无法通过 API 获取剧集详情的站点，需要提供网页详情根 URL，用于爬取。\n- `custom_category`：自定义分类配置，用于在导航中添加个性化的影视分类。以 type + query 作为唯一标识。支持以下字段：\n  - `name`：分类显示名称（可选，如不提供则使用 query 作为显示名）\n  - `type`：分类类型，支持 `movie`（电影）或 `tv`（电视剧）\n  - `query`：搜索关键词，用于在豆瓣 API 中搜索相关内容\n\ncustom_category 支持的自定义分类已知如下：\n\n- movie：热门、最新、经典、豆瓣高分、冷门佳片、华语、欧美、韩国、日本、动作、喜剧、爱情、科幻、悬疑、恐怖、治愈\n- tv：热门、美剧、英剧、韩剧、日剧、国产剧、港剧、日本动画、综艺、纪录片\n\n也可输入如 \"哈利波特\" 效果等同于豆瓣搜索\n\nDecoTV 支持标准的苹果 CMS V10 API 格式。\n\n## 🔄 自动更新\n\n可借助 [watchtower](https:\u002F\u002Fgithub.com\u002Fcontainrrr\u002Fwatchtower) 自动更新镜像容器\n\ndockge\u002Fkomodo 等 docker compose UI 也有自动更新功能\n\n## 🌍 环境变量\n\n### 基础配置\n\n| 变量                  | 说明       | 可选值                   | 默认值                                                                                                                     |\n| --------------------- | ---------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------- |\n| USERNAME              | 管理员账号 | 任意字符串               | 无默认，数据库模式**必填**，本地模式可省略                                                                                 |\n| PASSWORD              | 管理员密码 | 任意字符串               | 无默认，**必填**                                                                                                           |\n| SITE_BASE             | 站点 URL   | 形如 https:\u002F\u002Fexample.com | 空                                                                                                                         |\n| NEXT_PUBLIC_SITE_NAME | 站点名称   | 任意字符串               | DecoTV                                                                                                                     |\n| ANNOUNCEMENT          | 站点公告   | 任意字符串               | 本网站仅提供影视信息搜索服务，所有内容均来自第三方网站。本站不存储任何视频资源，不对任何内容的准确性、合法性、完整性负责。 |\n\n### 存储配置\n\n| 变量                     | 说明                    | 可选值                                | 默认值       | 备注                               |\n| ------------------------ | ----------------------- | ------------------------------------- | ------------ | ---------------------------------- |\n| NEXT_PUBLIC_STORAGE_TYPE | 存储类型                | localstorage、redis、kvrocks、upstash | localstorage | 不填则默认本地模式，数据存浏览器中 |\n| KVROCKS_URL              | Kvrocks 数据库连接地址  | redis:\u002F\u002Fhost:port                     | 空           | 当 STORAGE_TYPE=kvrocks 时必填     |\n| REDIS_URL                | Redis 数据库连接地址    | redis:\u002F\u002Fhost:port                     | 空           | 当 STORAGE_TYPE=redis 时必填       |\n| UPSTASH_URL              | Upstash Redis REST URL  | https:\u002F\u002Fxxx.upstash.io                | 空           | 当 STORAGE_TYPE=upstash 时必填     |\n| UPSTASH_TOKEN            | Upstash Redis REST 令牌 | AUxxxx...                             | 空           | 当 STORAGE_TYPE=upstash 时必填     |\n\n> **注意**：Upstash 使用 REST API 连接，需要填写 `UPSTASH_URL`（HTTPS ENDPOINT）和 `UPSTASH_TOKEN`，不是传统的 Redis 连接字符串。\n\n### 用户注册配置\n\n| 变量                            | 说明                     | 可选值     | 默认值 | 备注                                             |\n| ------------------------------- | ------------------------ | ---------- | ------ | ------------------------------------------------ |\n| NEXT_PUBLIC_ENABLE_REGISTRATION | 是否开启用户注册         | true\u002Ffalse | false  | 开启后用户可以自助注册，建议用完即关             |\n| DEFAULT_REGISTRATION_GROUP      | 注册用户默认分配的用户组 | 用户组名称 | 空     | 需先在管理面板创建对应用户组，为空则不分配用户组 |\n\n> **安全提示**：注册功能默认关闭，仅在需要时临时开启。建议注册完成后立即设置为 `false` 或删除该变量。详见 [用户注册功能说明](.\u002Fdocs\u002F用户注册功能说明.md)\n\n### 高级配置\n\n| 变量                                | 说明                     | 可选值     | 默认值 | 备注            |\n| ----------------------------------- | ------------------------ | ---------- | ------ | --------------- |\n| NEXT_PUBLIC_SEARCH_MAX_PAGE         | 搜索接口可拉取的最大页数 | 1-50       | 5      | 数值越大越慢    |\n| NEXT_PUBLIC_DOUBAN_PROXY_TYPE       | 豆瓣数据源请求方式       | 见下方说明 | direct | -               |\n| NEXT_PUBLIC_DOUBAN_PROXY            | 自定义豆瓣数据代理 URL   | URL prefix | 空     | custom 模式使用 |\n| NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE | 豆瓣图片代理类型         | 见下方说明 | direct | -               |\n| NEXT_PUBLIC_DOUBAN_IMAGE_PROXY      | 自定义豆瓣图片代理 URL   | URL prefix | 空     | custom 模式使用 |\n| NEXT_PUBLIC_DISABLE_YELLOW_FILTER   | 关闭色情内容过滤         | true\u002Ffalse | false  | 不建议开启      |\n| NEXT_PUBLIC_FLUID_SEARCH            | 是否开启搜索接口流式输出 | true\u002Ffalse | true   | -               |\n\n#### NEXT_PUBLIC_DOUBAN_PROXY_TYPE 可选值\n\n| 值                    | 说明                                                                               |\n| --------------------- | ---------------------------------------------------------------------------------- |\n| direct                | 服务器直接请求豆瓣源站（默认）                                                     |\n| cors-proxy-zwei       | 浏览器通过 [Zwei](https:\u002F\u002Fgithub.com\u002Fbestzwei) 提供的 CORS Proxy 请求豆瓣数据      |\n| cmliussss-cdn-tencent | 浏览器通过 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 提供的腾讯云 CDN 加速请求豆瓣数据 |\n| cmliussss-cdn-ali     | 浏览器通过 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 提供的阿里云 CDN 加速请求豆瓣数据 |\n| custom                | 使用自定义代理（需配置 NEXT_PUBLIC_DOUBAN_PROXY）                                  |\n\n#### NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 可选值\n\n| 值                    | 说明                                                        |\n| --------------------- | ----------------------------------------------------------- |\n| direct                | 浏览器直接请求豆瓣图片域名（默认）                          |\n| server                | 服务器代理请求豆瓣图片                                      |\n| img3                  | 使用豆瓣官方精品 CDN（阿里云）                              |\n| cmliussss-cdn-tencent | 使用 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 提供的腾讯云 CDN |\n| cmliussss-cdn-ali     | 使用 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 提供的阿里云 CDN |\n| custom                | 使用自定义代理（需配置 NEXT_PUBLIC_DOUBAN_IMAGE_PROXY）     |\n\n### 弹幕功能配置\n\nDecoTV 集成了 [弹弹play开放平台](https:\u002F\u002Fwww.dandanplay.com\u002F) 提供的弹幕库，让您在观看视频时享受弹幕互动体验。\n\n**🎉 开箱即用**：官方 Docker 镜像已内置弹幕服务凭证，无需任何配置即可使用弹幕功能。\n\n> 感谢 [弹弹play](https:\u002F\u002Fwww.dandanplay.com\u002F) 为 DecoTV 提供弹幕服务支持！\n\n### 网盘搜索（PanSou）配置\n\nDecoTV 的网盘搜索采用远程 PanSou 节点转发模式。推荐先部署 [fish2018\u002Fpansou](https:\u002F\u002Fgithub.com\u002Ffish2018\u002Fpansou)，确认服务可访问后，在后台 `PanSou 配置` 中填入服务地址（可选填写 Token）。\n\n快速示例：\n\n1. 部署 PanSou 服务并确保 `https:\u002F\u002Fyour-pansou-domain\u002Fapi\u002Fhealth` 可访问。\n2. 进入 DecoTV 后台 `PanSou 配置` 页面。\n3. 填写服务地址（例如 `https:\u002F\u002Fyour-pansou-domain`），按需填写 `API Token \u002F 鉴权密钥`。\n4. 先执行连通性测试，再保存配置即可生效。\n\n### TMDB 元数据增强配置\n\nDecoTV 支持把 TMDB 作为与豆瓣互补的第二元数据来源，尤其适合欧美 \u002F 日韩内容和私人影库场景。\n\n快速使用：\n\n1. 到 TMDB 后台申请 API Key。\n2. 在环境变量或后台 `TMDB 配置` 中填写 `TMDB_API_KEY`。\n3. 如果部署环境无法直连 TMDB，可额外配置 `TMDB_PROXY` 或 `TMDB_REVERSE_PROXY`。\n4. 进入后台执行 `TMDB 连通性测试`，保存后即可生效。\n\n使用建议：\n\n- 华语内容可以继续以豆瓣为主，TMDB 负责补充海报、背景图和缺失简介。\n- 私人影库建议同时开启 TMDB，这样 OpenList 文件名中的 `{tmdb-xxxx}` 或 Emby \u002F Jellyfin 的 `ProviderIds.Tmdb` 可以直接命中精准元数据。\n- 如果未配置 `TMDB_API_KEY`，项目会自动降级，不影响原有豆瓣链路和公共资源站播放。\n\n### 私人影库配置（OpenList \u002F 小雅 Alist \u002F Emby \u002F Jellyfin）\n\nDecoTV 支持在后台接入 OpenList、小雅 Alist、Emby、Jellyfin 等私有媒体服务，配置成功后前台会自动显示“我的影库”入口。\n\nOpenList 快速使用：\n\n1. 准备 OpenList 服务地址、Token 和挂载根路径。\n2. 推荐按以下格式整理目录，方便精准匹配 TMDB 元数据：\n\n```text\n电影：流浪地球2 (2023) {tmdb-835547}\u002F流浪地球2.mkv\n剧集：三体 (2023) {tmdb-1428232}\u002FSeason 01\u002FS01E01.mkv\n```\n\n1. 进入后台 `私人影库` 配置区块，添加连接并选择 `OpenList`。\n2. 填写服务地址、Token、根路径，先测试连接，再执行扫描。\n\n小雅 Alist 快速使用：\n\n1. 准备小雅服务地址、访问密码（若实例开启了访问控制）和扫描根目录，默认根目录为 `\u002F`。\n2. 进入后台 `私人影库` 配置区块，添加连接并选择 `小雅 Alist`。\n3. 填写服务地址、访问密码和根目录；如实例未开启访问密码可留空，根目录可按需填写如 `\u002F电影`。\n4. 先测试连接，再执行扫描；播放 `.strm` 文件时，服务端会实时刷新阿里云盘直链。\n\nEmby \u002F Jellyfin 快速使用：\n\n1. 在 Emby \u002F Jellyfin 管理后台创建 API Key，按需准备用户 ID。\n2. 在 DecoTV 后台添加 `Emby` 或 `Jellyfin` 连接，填写服务地址、API Key，可选填写用户 ID 和媒体库过滤。\n3. 先测试连接，再保存配置，最后执行扫描或刷新。\n4. 播放时 DecoTV 会通过服务端代理获取流地址，并尝试同步播放进度。\n\n补充说明：\n\n- 私人影库的视频流和鉴权信息不会直接暴露给浏览器端。\n- 小雅 Alist 兼容 Alist API；如果测试连接提示鉴权失败，请检查是否需要填写访问密码。\n- OpenList 默认根目录为 `\u002FMedia`，小雅 Alist 默认根目录为 `\u002F`。\n- 部分小雅资源暂不支持站内在线播放，遇到此类资源时请在小雅网页端打开。\n- Emby \u002F Jellyfin 私人影库支持音轨切换：播放器会基于 `AudioStreamIndex` 重新加载流并恢复切换前进度；HLS 资源支持无中断音轨切换。\n- OpenList 即使没有 TMDB ID 也能扫描，但推荐使用规范命名以获得更好的元数据匹配效果。\n- 如果某一个连接失效，只会影响该连接，不会影响其他连接和公共资源站功能。\n- 更完整的部署变量说明可参考 [TMDB 与私人影库部署说明](.\u002Fdocs\u002Ftmdb-private-library-deployment.md)。\n\n## ⬇️ 下载功能使用指南\n\n### 1) 下载当前集（浏览器分片下载）\n\n- 在播放页点击 `下载当前集`。\n- m3u8 资源会自动解析分片并下载，完成后在浏览器本地合并导出。\n- 该模式不依赖 FFmpeg，适合大部分 Web 部署场景。\n\n### 2) FFmpeg 转存下载（服务端）\n\n- 在播放页点击 `FFmpeg 转存下载`。\n- 官方 Docker 镜像已内置 `ffmpeg`\u002F`ffprobe`，VPS Docker 部署可直接使用。\n- 自行构建镜像时请使用本仓库 Dockerfile；非 Docker 手动部署需自行安装 `ffmpeg` 和 `ffprobe`。\n- Vercel 等 Serverless 环境无法稳定运行长时间 FFmpeg 进程，会自动降级为浏览器分片下载。\n\n### 3) 推荐环境与可选变量\n\n- 推荐：Docker \u002F VPS（稳定支持浏览器下载 + FFmpeg 转存）。\n- 推荐挂载：`\u002Fapp\u002F.cache\u002Fffmpeg-downloads`，用于保存服务端转存的临时成品文件。\n- 可选变量：\n- `FFMPEG_PATH`：自定义 ffmpeg 可执行路径。\n- `FFPROBE_PATH`：自定义 ffprobe 可执行路径。\n- `FFMPEG_DOWNLOAD_DIR`：服务端转存文件目录。\n- `FFMPEG_ALLOW_SERVERLESS=true`：仅在你明确具备可执行二进制能力时使用。\n\nVPS Docker 持久化示例：\n\n```yml\nservices:\n  decotv:\n    image: ghcr.io\u002Fdecohererk\u002Fdecotv:latest\n    ports:\n      - '3000:3000'\n    environment:\n      - PASSWORD=你的管理密码\n      - FFMPEG_MAX_CONCURRENT_JOBS=2\n    volumes:\n      - decotv-downloads:\u002Fapp\u002F.cache\u002Fffmpeg-downloads\nvolumes:\n  decotv-downloads:\n```\n\n如果使用宿主机目录绑定，例如 `.\u002Fdownloads:\u002Fapp\u002F.cache\u002Fffmpeg-downloads`，请确保目录允许容器内 UID `1001` 写入：\n\n```bash\nmkdir -p .\u002Fdownloads\nsudo chown -R 1001:1001 .\u002Fdownloads\n```\n\n### 4) 常见错误排查\n\n- `拉取播放列表失败 (502)`：通常是上游 m3u8 源需要特定 `Referer\u002FOrigin`，请确认源可访问，或切换其他源重试。\n- `FFmpeg API request failed (500\u002F501)`：检查部署环境是否安装 FFmpeg；官方 Docker 镜像应开箱可用，自建镜像请确认 Dockerfile 包含 FFmpeg。\n- `EACCES` \u002F `permission denied`：转存目录不可写；使用上方 named volume，或修正宿主机目录权限。\n- 转存大文件失败：检查 VPS 磁盘空间、反向代理超时和 `FFMPEG_JOB_RETENTION_MS`，必要时降低 `FFMPEG_MAX_CONCURRENT_JOBS`。\n\n## Roadmap\n\n- [ ] 多语言国际化支持\n- [ ] 更多数据库存储选择\n- [ ] 手机端 APP 开发\n- [ ] 智能推荐算法\n- [ ] 用户评分系统\n- [x] 弹幕功能（集成弹弹play弹幕库）\n- [x] 下载管理（浏览器分片下载 + FFmpeg 转存）\n\n## 📺 AndroidTV 使用\n\n目前该项目可以配合 [OrionTV](https:\u002F\u002Fgithub.com\u002Fzimplexing\u002FOrionTV) 在 Android TV 上使用，可以直接作为 OrionTV 后端\n\n已实现播放记录和网页端同步\n\n**详细配置指南**：\n\n- 📖 [OrionTV 使用指南](.\u002Fdocs\u002FOrionTV使用指南.md)\n- 🔒 [成人内容过滤使用指南](.\u002Fdocs\u002F成人内容过滤使用指南.md) - **支持通过 URL 参数灵活控制成人内容过滤**\n\n**OrionTV 成人内容过滤快速配置**：\n\n\u003Cdetails>\n\u003Csummary>点击查看 OrionTV 过滤配置示例\u003C\u002Fsummary>\n\n### 🎯 推荐方式：使用路径前缀\n\n#### 家庭安全模式（推荐家庭使用）\n\n```text\nAPI 地址: https:\u002F\u002Fyour-domain.com\u002F\n```\n\n✅ 自动过滤成人资源源和敏感关键词\n\n#### 完整内容模式（成人用户）\n\n```text\nAPI 地址: https:\u002F\u002Fyour-domain.com\u002Fadult\u002F\n```\n\n✅ 显示所有内容（包括成人资源）\n\n> 💡 **工作原理**:\n>\n> - 路径前缀 `\u002Fadult\u002F` 会被自动识别并重写\n> - 例如: `\u002Fadult\u002Fapi\u002Fsearch` → `\u002Fapi\u002Fsearch?adult=1`\n> - OrionTV 无需额外配置，开箱即用\n\n### 备用方式：使用 URL 参数\n\n**注意**: 此方式仅适用于 Web 端，OrionTV 可能不支持\n\n#### 家庭安全模式\n\n```text\nAPI 地址: https:\u002F\u002Fyour-domain.com\n```\n\n#### 完整内容模式\n\n```text\nAPI 地址: https:\u002F\u002Fyour-domain.com?adult=1\n```\n\n详细说明请参阅 [成人内容过滤使用指南](.\u002Fdocs\u002F成人内容过滤使用指南.md)\n\n\u003C\u002Fdetails>\n\n## 🎥 TVbox 配置\n\n具体可见 [TVBox 配置优化说明](https:\u002F\u002Fgithub.com\u002FDecohererk\u002FDecoTV\u002Fblob\u002Fmain\u002FTVBox%E9%85%8D%E7%BD%AE%E4%BC%98%E5%8C%96%E8%AF%B4%E6%98%8E.md) ,详细功能见\u002Fadmin 管理页面 **TVbox 配置**\n\n## 🧑‍💻 用户注册功能\n\nDecoTV 支持用户自助注册功能（可选），适合需要允许用户自行创建账号的场景。\n\n**功能特性**：\n\n- ✅ 图形验证码防机器人注册\n- ✅ 严格的用户名和密码验证\n- ✅ 环境变量一键开关（默认关闭）\n- ✅ 仅支持 Redis\u002FUpstash\u002FKvrocks 存储模式\n\n**详细使用指南**：[用户注册功能说明](.\u002Fdocs\u002F用户注册功能说明.md)\n\n**快速启用**：\n\n```bash\n# 在环境变量中设置\nNEXT_PUBLIC_ENABLE_REGISTRATION=true\nNEXT_PUBLIC_STORAGE_TYPE=redis  # 或 upstash、kvrocks\n```\n\n> ⚠️ **安全提示**：建议默认关闭注册，仅在需要时临时开启，注册完成后立即关闭。\n\n## 🔒 安全与隐私提醒\n\n### 请设置密码保护并关闭公网注册\n\n为了您的安全和避免潜在的法律风险，我们要求在部署时**强烈建议关闭公网注册**：\n\n### 部署要求\n\n1. **设置环境变量 `PASSWORD`**：为您的实例设置一个强密码\n2. **仅供个人使用**：请勿将您的实例链接公开分享或传播\n3. **遵守当地法律**：请确保您的使用行为符合当地法律法规\n\n### 重要声明\n\n- 本项目仅供学习和个人使用\n- 请勿将部署的实例用于商业用途或公开服务\n- 如因公开分享导致的任何法律问题，用户需自行承担责任\n- 项目开发者不对用户的使用行为承担任何法律责任\n- 本项目不在中国大陆地区提供服务。如有该项目在向中国大陆地区提供服务，属个人行为。在该地区使用所产生的法律风险及责任，属于用户个人行为，与本项目无关，须自行承担全部责任。特此声明\n\n## 📄 License\n\n[MIT](LICENSE) © 2025 DecoTV & Contributors\n\n## 🙏 致谢\n\n- [ts-nextjs-tailwind-starter](https:\u002F\u002Fgithub.com\u002Ftheodorusclarence\u002Fts-nextjs-tailwind-starter) — 项目最初基于该脚手架。\n- [LibreTV](https:\u002F\u002Fgithub.com\u002FLibreSpark\u002FLibreTV) — 由此启发，站在巨人的肩膀上。\n- [ArtPlayer](https:\u002F\u002Fgithub.com\u002Fzhw2590582\u002FArtPlayer) — 提供强大的网页视频播放器。\n- [HLS.js](https:\u002F\u002Fgithub.com\u002Fvideo-dev\u002Fhls.js) — 实现 HLS 流媒体在浏览器中的播放支持。\n- [Zwei](https:\u002F\u002Fgithub.com\u002Fbestzwei) — 提供获取豆瓣数据的 cors proxy\n- [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) — 提供豆瓣 CDN 服务\n- 感谢所有提供免费影视接口的站点。\n\n## 📈 Star History\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#Decohererk\u002FDecoTV&Date\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Decohererk\u002FDecoTV&type=Date&theme=dark\" \u002F>\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Decohererk\u002FDecoTV&type=Date\" \u002F>\n      \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Decohererk\u002FDecoTV&type=Date\" \u002F>\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## 💝 赞赏支持\n\n如果这个项目对你有所帮助，欢迎 Star ⭐ 本项目或请作者喝杯咖啡 ☕\n\n\u003Cdiv align=\"center\">\n  \u003Ctable>\n    \u003Ctr>\n      \u003Ctd align=\"center\">\n        \u003Cimg src=\"public\u002Fwechat.jpg\" alt=\"微信赞赏\" width=\"200\">\n        \u003Cbr>\n        \u003Csub>\u003Cb>🎨 微信赞赏\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n---\n\n\u003Cdiv align=\"center\">\n  \u003Cp>\n    \u003Cstrong>🌟 如果觉得项目有用，请点个 Star 支持一下！🌟\u003C\u002Fstrong>\n  \u003C\u002Fp>\n  \u003Cp>\n    \u003Csub>Made with ❤️ by \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDecohererk\">Decohererk\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDecohererk\u002FDecoTV\u002Fgraphs\u002Fcontributors\">Contributors\u003C\u002Fa>\u003C\u002Fsub>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n","DecoTV 是一个基于最新版 LunaTV 二次开发的跨平台影视聚合播放站。该项目采用 Next.js 16、Tailwind CSS 4 和 TypeScript 5 构建，具备多资源搜索、在线播放、收藏同步、播放记录等功能，并支持云端存储和 PWA 离线缓存。此外，DecoTV 还提供用户注册系统、弹幕功能、视频下载能力以及智能去广告等特性，适用于需要搭建个人或企业级影视播放平台的场景。项目部署后需自行配置播放源和直播源。",2,"2026-06-11 03:47:56","high_star"]