[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73929":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},73929,"MoonTVPlus","mtvpls\u002FMoonTVPlus","mtvpls","MoonTVPlus 是基于 MoonTV v100 二次开发的增强版影视聚合播放器。它在原版基础上新增了外部播放器支持、视频超分、弹幕系统、评论抓取等实用功能，提供更强大的观影体验。","",null,"TypeScript",2424,2175,6,74,0,38,105,338,114,112,"Other",false,"main",true,[],"2026-06-12 04:01:12","# MoonTVPlus\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"public\u002Flogo.png\" alt=\"MoonTVPlus Logo\" width=\"120\">\n\u003C\u002Fdiv>\n\n## ⚠️ 请某些人停止你的抄袭行为，不要我上什么功能你就抄什么，借鉴≠抄袭\n\n> 🎬 **MoonTVPlus** 是基于 [MoonTV v100](https:\u002F\u002Fgithub.com\u002FMoonTechLab\u002FLunaTV) 二次开发的增强版影视聚合播放器。它在原版基础上新增了外部播放器支持、视频超分、弹幕系统、评论抓取等实用功能，提供更强大的观影体验。\n\n\u003Cdiv align=\"center\">\n\n![Next.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNext.js-14-000?logo=nextdotjs)\n![TailwindCSS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTailwindCSS-3-38bdf8?logo=tailwindcss)\n![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-4.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\n- 🎮 **外部播放器跳转**：支持 PotPlayer、VLC、MPV、MX Player、nPlayer、IINA 等多种外部播放器\n- ✨ **视频超分 (Anime4K)**：使用 WebGPU 技术实现实时视频画质增强（支持 1.5x\u002F2x\u002F3x\u002F4x 超分）\n- 💬 **弹幕系统**：完整的弹幕搜索、匹配、加载功能，支持弹幕设置持久化、弹幕屏蔽\n- 📝 **豆瓣评论抓取**：自动抓取并展示豆瓣电影短评，支持分页加载\n- 🧩 **视频源脚本**：支持通过脚本自定义视频源、搜索、详情与播放解析逻辑（实验性）\n- 🪒**自定义去广告**：你可以自定义你的去广告代码，实现更强力的去广告功能\n- 🚀 **更快更顺滑**：相较原版项目整体速度更快，交互体验更好\n- 🎭 **观影室**：支持多人同步观影、实时聊天、语音通话等功能（实验性）。\n- 📥 **M3U8完整下载**：支持浏览器内合并 m3u8 片段下载，也支持下载到本地文件夹并无感播放本地视频。\n- 💾 **服务器离线下载**：支持在服务器端下载视频文件，支持断点续传，提前下载到家秒加载 。\n- 📚 **私人影库**：接入 OpenList、Emby 或小雅，可打造专属私人影库，亦可观看网盘资源。\n\n## ✨ 功能特性\n\n- 🔍 **多源聚合搜索**：一次搜索立刻返回全源结果。\n- 📄 **丰富详情页**：支持剧集列表、演员、年份、简介等完整信息展示。\n- ▶️ **流畅在线播放**：集成 HLS.js & ArtPlayer。\n- ❤️ **收藏 + 继续观看**：支持 Kvrocks\u002FRedis\u002FUpstash 存储，多端同步进度。\n- 📱 **PWA**：离线缓存、安装到桌面\u002F主屏，移动端原生体验。\n- 🌗 **响应式布局**：桌面侧边栏 + 移动底部导航，自适应各种屏幕尺寸。\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  \u003Cimg src=\"public\u002Fscreenshot3.png\" alt=\"项目截图\" style=\"max-width:600px\">\n\u003C\u002Fdetails>\n\n\n### 请不要在 B站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目，不授权任何“科技周刊\u002F月刊”类项目或站点收录本项目。\n\n## 🗺 目录\n\n- [技术栈](#技术栈)\n- [部署](#部署)\n- [配置文件](#配置文件)\n- [自动更新](#自动更新)\n- [环境变量](#环境变量)\n- [外部观影室服务器部署](#外部观影室服务器部署)\n- [弹幕后端部署](#弹幕后端部署)\n- [超分功能说明](#超分功能说明)\n- [AndroidTV 使用](#androidtv-使用)\n- [TVBOX 订阅功能](#tvbox-订阅功能)\n- [安全与隐私提醒](#安全与隐私提醒)\n- [License](#license)\n- [致谢](#致谢)\n\n\n\n## 技术栈\n\n| 分类      | 主要依赖                                                     |\n| --------- | ------------------------------------------------------------ |\n| 前端框架  | [Next.js 14](https:\u002F\u002Fnextjs.org\u002F) · App Router               |\n| UI & 样式 | [Tailwind&nbsp;CSS 3](https:\u002F\u002Ftailwindcss.com\u002F)              |\n| 语言      | TypeScript 4                                                 |\n| 播放器    | [ArtPlayer](https:\u002F\u002Fgithub.com\u002Fzhw2590582\u002FArtPlayer) · [HLS.js](https:\u002F\u002Fgithub.com\u002Fvideo-dev\u002Fhls.js\u002F) |\n| 代码质量  | ESLint · Prettier · Jest                                     |\n| 部署      | Docker                                                       |\n\n## 部署\n\n本项目**支持 Docker、Vercel、Netlify 和 Cloudflare Workers 平台** 部署。\n\n[![Deploy with Vercel](https:\u002F\u002Fvercel.com\u002Fbutton)](https:\u002F\u002Fvercel.com\u002Fnew\u002Fclone?repository-url=https:\u002F\u002Fgithub.com\u002Fmtvpls\u002FMoonTVPlus)\n\n[![Deploy to Netlify](https:\u002F\u002Fwww.netlify.com\u002Fimg\u002Fdeploy\u002Fbutton.svg)](https:\u002F\u002Fapp.netlify.com\u002Fstart\u002Fdeploy?repository=https:\u002F\u002Fgithub.com\u002Fmtvpls\u002FMoonTVPlus)\n\n**一键部署到 Zeabur**\n\n[![Deploy on Zeabur](https:\u002F\u002Fzeabur.com\u002Fbutton.svg)](https:\u002F\u002Fzeabur.com\u002Ftemplates\u002FSCHCAY\u002Fdeploy)\n\n**一键部署到 Render**\n\n[![Deploy to Render](https:\u002F\u002Frender.com\u002Fimages\u002Fdeploy-to-render-button.svg)](https:\u002F\u002Frender.com\u002Fdeploy?repo=https:\u002F\u002Fgithub.com\u002Fmtvpls\u002FMoonTVPlus)\n\n\n\n### Cloudflare Workers 部署（通过 GitHub Actions）\n\nCloudflare Workers 提供免费的边缘计算服务，通过 GitHub Actions 可以实现自动化部署。\n\n#### 前置要求\n\n1. 一个 Cloudflare 账号\n2. Fork 本项目到你的 GitHub 账号\n3. 准备一个 Upstash Redis 实例（推荐）\n\n#### 配置步骤\n\n**1. 获取 Cloudflare API Token 和 Account ID**\n\n- 访问 [Cloudflare Dashboard](https:\u002F\u002Fdash.cloudflare.com\u002F)\n- 点击右上角头像 > My Profile > API Tokens\n- 点击 \"Create Token\"，选择 \"Edit Cloudflare Workers\" 模板\n- 或使用自定义 Token，需要以下权限：\n  - Account - Cloudflare Workers Scripts - Edit\n  - Account - D1 - Edit（仅在使用 D1 数据库时需要）\n- 创建后复制生成的 API Token\n- 在 Dashboard 首页右侧可以看到你的 Account ID\n\n**2. 配置 GitHub Secrets**\n\n进入你 Fork 的仓库，点击 Settings > Secrets and variables > Actions > New repository secret，添加以下必需的 Secrets：\n\n**必需配置：**\n\n| Secret 名称                | 说明                  | 示例值                   |\n| -------------------------- | --------------------- | ------------------------ |\n| `CLOUDFLARE_API_TOKEN`     | Cloudflare API Token  | `your_api_token_here`    |\n| `CLOUDFLARE_ACCOUNT_ID`    | Cloudflare Account ID | `abc123def456`           |\n| `USERNAME`                 | 站长账号              | `admin`                  |\n| `PASSWORD`                 | 站长密码              | `your_secure_password`   |\n| `NEXT_PUBLIC_STORAGE_TYPE` | 存储类型              | `upstash`                |\n| `UPSTASH_URL`              | Upstash Redis URL     | `https:\u002F\u002Fxxx.upstash.io` |\n| `UPSTASH_TOKEN`            | Upstash Redis Token   | `your_upstash_token`     |\n\n**3. 触发部署**\n\n配置完成后，有两种方式触发部署：\n\n**方式一：手动触发**\n\n- 进入仓库的 Actions 页面\n- 选择 \"Deploy to Cloudflare\" workflow\n- 点击 \"Run workflow\" 按钮\n- 选择分支（通常是 main 或 dev）\n- 点击 \"Run workflow\" 开始部署\n\n**方式二：自动触发（可选）**\n\n如果想要在推送代码时自动部署，可以修改 `.github\u002Fworkflows\u002Fcloudflare-deploy.yml` 文件：\n\n```yaml\non:\n  push:\n    branches:\n      - main  # 或你的主分支名称\n  workflow_dispatch:\n```\n\n**4. 查看部署状态**\n\n- 在 Actions 页面可以看到部署进度\n- 部署成功后，访问 `https:\u002F\u002Fyour-project-name.your-account.workers.dev`\n- 也可以在 Cloudflare Dashboard 的 Workers & Pages 中查看部署的应用\n\n**5. 绑定自定义域名（可选）**\n\n- 在 Cloudflare Dashboard 中进入你的 Worker\n- 点击 Settings > Triggers > Custom Domains\n- 添加你的自定义域名\n\n**6. 使用 D1 数据库（可选）**\n\n如果想使用 Cloudflare D1 数据库代替 Upstash Redis，需要进行以下配置：\n\n1. 在 Cloudflare Dashboard 中创建一个 D1 数据库\n2. 复制数据库 ID\n3. 在 GitHub Secrets 中配置：\n   - 将 `NEXT_PUBLIC_STORAGE_TYPE` 设置为 `d1`\n   - 添加 `D1_DATABASE_ID` 并填入你的数据库 ID\n   - 无需配置 `UPSTASH_URL` 和 `UPSTASH_TOKEN`\n\n**7. 配置外部定时任务（可选）**\n\n可使用外部定时请求\u002Fapi\u002Fcron\u002Fmtvpls端点以触发定时任务，或新建一个workers请求触发，推荐每小时请求一次。\n\n---\n\n### Docker 部署\n\n#### Kvrocks 存储（推荐）\n\n```yml\nservices:\n  moontv-core:\n    image: ghcr.io\u002Fmtvpls\u002Fmoontvplus:latest\n    container_name: moontv-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\u002Fmoontv-kvrocks:6666\n    networks:\n      - moontv-network\n    depends_on:\n      - moontv-kvrocks\n  moontv-kvrocks:\n    image: apache\u002Fkvrocks\n    container_name: moontv-kvrocks\n    restart: unless-stopped\n    volumes:\n      - kvrocks-data:\u002Fvar\u002Flib\u002Fkvrocks\u002Fdata\n    networks:\n      - moontv-network\nnetworks:\n  moontv-network:\n    driver: bridge\nvolumes:\n  kvrocks-data:\n```\n\n### SQLite 存储\n\n```yml\nservices:\n  moontv-core:\n    image: ghcr.io\u002Fmtvpls\u002Fmoontvplus:latest\n    container_name: moontv-core\n    restart: on-failure\n    ports:\n      - '3000:3000'\n    environment:\n      - USERNAME=admin\n      - PASSWORD=admin_password\n      - NEXT_PUBLIC_STORAGE_TYPE=d1\n      - SQLITE_DB_PATH=\u002Fapp\u002F.data\u002Fmoontv.db\n    volumes:\n      - .\u002Fdata:\u002Fapp\u002F.data\n```\n\n\n### Redis 存储（有一定的丢数据风险）\n\n```yml\nservices:\n  moontv-core:\n    image: ghcr.io\u002Fmtvpls\u002Fmoontvplus:latest\n    container_name: moontv-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\u002Fmoontv-redis:6379\n    networks:\n      - moontv-network\n    depends_on:\n      - moontv-redis\n  moontv-redis:\n    image: redis:alpine\n    container_name: moontv-redis\n    restart: unless-stopped\n    networks:\n      - moontv-network\n    # 请开启持久化，否则升级\u002F重启后数据丢失\n    volumes:\n      - .\u002Fdata:\u002Fdata\nnetworks:\n  moontv-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  moontv-core:\n    image: ghcr.io\u002Fmtvpls\u002Fmoontvplus:latest\n    container_name: moontv-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#### Lite 镜像说明\n\n`ghcr.io\u002Fmtvpls\u002Fmoontvplus-lite:latest` 为更小的镜像，但不支持启动内置观影室服务，也不支持 SQLite（`NEXT_PUBLIC_STORAGE_TYPE=d1`）自动初始化方案。\n\n示例：\n\n```yml\nservices:\n  moontv-core:\n    image: ghcr.io\u002Fmtvpls\u002Fmoontvplus-lite:latest\n    container_name: moontv-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\u002Fmoontv-kvrocks:6666\n    networks:\n      - moontv-network\n    depends_on:\n      - moontv-kvrocks\n  moontv-kvrocks:\n    image: apache\u002Fkvrocks\n    container_name: moontv-kvrocks\n    restart: unless-stopped\n    volumes:\n      - kvrocks-data:\u002Fvar\u002Flib\u002Fkvrocks\u002Fdata\n    networks:\n      - moontv-network\nnetworks:\n  moontv-network:\n    driver: bridge\nvolumes:\n  kvrocks-data:\n```\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\nMoonTV 支持标准的苹果 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| USERNAME                                 | 站长账号                                                     | 任意字符串                  | 无默认，必填字段                                             |\n| PASSWORD                                 | 站长密码                                                     | 任意字符串                  | 无默认，必填字段                                             |\n| CRON_PASSWORD                            | 定时任务 API 访问密码（用于保护 \u002Fapi\u002Fcron 端点）             | 任意字符串                  | mtvpls                                                       |\n| CRON_WAIT_FOR_COMPLETION                 | 定时任务接口是否等待任务完全结束后再返回响应（true 时返回 200，false 时立即返回 202）。部署在 serverless 平台（如 Vercel）时建议设置为 true，否则响应返回后异步执行可能会被平台杀后台导致任务中断 | true\u002Ffalse                  | false                                                        |\n| CRON_USER_BATCH_SIZE                     | 定时任务用户批处理大小（控制并发处理的用户数量，影响播放记录和收藏更新任务的并发性能） | 正整数                      | 3                                                            |\n| SITE_BASE                                | 站点 url                                                     | 形如 https:\u002F\u002Fexample.com    | 空                                                           |\n| NEXT_PUBLIC_SITE_NAME                    | 站点名称                                                     | 任意字符串                  | MoonTV                                                       |\n| ANNOUNCEMENT                             | 站点公告                                                     | 任意字符串                  | 本网站仅提供影视信息搜索服务，所有内容均来自第三方网站。本站不存储任何视频资源，不对任何内容的准确性、合法性、完整性负责。 |\n| NEXT_PUBLIC_STORAGE_TYPE                 | 播放记录\u002F收藏的存储方式                                      | redis、kvrocks、upstash、d1 | 无默认，必填字段                                             |\n| KVROCKS_URL                              | kvrocks 连接 url                                             | 连接 url                    | 空                                                           |\n| REDIS_URL                                | redis 连接 url                                               | 连接 url                    | 空                                                           |\n| UPSTASH_URL                              | upstash redis 连接 url                                       | 连接 url                    | 空                                                           |\n| UPSTASH_TOKEN                            | upstash redis 连接 token                                     | 连接 token                  | 空                                                           |\n| NEXT_PUBLIC_SEARCH_MAX_PAGE              | 搜索接口可拉取的最大页数                                     | 1-50                        | 5                                                            |\n| NEXT_PUBLIC_DOUBAN_PROXY_TYPE            | 豆瓣数据源请求方式                                           | 见下方                      | direct                                                       |\n| NEXT_PUBLIC_DOUBAN_PROXY                 | 自定义豆瓣数据代理 URL                                       | url prefix                  | (空)                                                         |\n| NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE      | 豆瓣图片代理类型                                             | 见下方                      | direct                                                       |\n| NEXT_PUBLIC_DOUBAN_IMAGE_PROXY           | 自定义豆瓣图片代理 URL                                       | url prefix                  | (空)                                                         |\n| NEXT_PUBLIC_DISABLE_YELLOW_FILTER        | 关闭色情内容过滤                                             | true\u002Ffalse                  | false                                                        |\n| NEXT_PUBLIC_FLUID_SEARCH                 | 是否开启搜索接口流式输出                                     | true\u002F false                 | true                                                         |\n| NEXT_PUBLIC_PROXY_M3U8_TOKEN             | M3U8 代理 API 鉴权 Token（外部播放器跳转时的鉴权token，不填为无鉴权） | 任意字符串                  | (空)                                                         |\n| NEXT_PUBLIC_DANMAKU_CACHE_EXPIRE_MINUTES | 弹幕缓存失效时间（分钟数，设为 0 时不缓存）                  | 0 或正整数                  | 4320（3天）                                                  |\n| ENABLE_TVBOX_SUBSCRIBE                   | 是否启用 TVBOX 订阅功能                                      | true\u002Ffalse                  | false                                                        |\n| TVBOX_SUBSCRIBE_TOKEN                    | TVBOX 订阅 API 访问 Token，如启用TVBOX功能必须设置该项       | 任意字符串                  | (空)                                                         |\n| TVBOX_BLOCKED_SOURCES                    | TVBOX 订阅屏蔽源列表（多个源用逗号分隔，匹配视频源的 key）   | 逗号分隔的源 key            | (空)                                                         |\n| WATCH_ROOM_ENABLED                       | 是否启用观影室功能（vercel部署不支持该功能，可使用外部服务器） | true\u002Ffalse                  | false                                                        |\n| WATCH_ROOM_SERVER_TYPE                   | 观影室服务器类型                                             | internal\u002Fexternal           | internal                                                     |\n| WATCH_ROOM_EXTERNAL_SERVER_URL           | 外部观影室服务器地址（当 SERVER_TYPE 为 external 时必填）    | WebSocket URL               | (空)                                                         |\n| WATCH_ROOM_EXTERNAL_SERVER_AUTH          | 外部观影室服务器认证令牌（当 SERVER_TYPE 为 external 时必填） | 任意字符串                  | (空)                                                         |\n| NEXT_PUBLIC_VOICE_CHAT_STRATEGY          | 观影室语音聊天策略                                           | webrtc-fallback\u002Fserver-only | webrtc-fallback                                              |\n| NEXT_PUBLIC_ENABLE_OFFLINE_DOWNLOAD      | 是否启用服务器离线下载功能（开启后也仅管理员和站长可用）     | true\u002Ffalse                  | false                                                        |\n| OFFLINE_DOWNLOAD_DIR                     | 离线下载文件存储目录                                         | 任意有效路径                | \u002Fdata                                                        |\n| VIDEOINFO_CACHE_MINUTES                  | 私人影库视频信息在内存中的缓存时长（分钟）                   | 正整数                      | 1440（1天）                                                  |\n| NEXT_PUBLIC_ENABLE_SOURCE_SEARCH         | 是否开启源站寻片功能                                         | true\u002Ffalse                  | true                                                         |\n| MAX_PLAY_RECORDS_PER_USER                | 单个用户播放记录清理阈值（超过此数量将自动清理旧记录）       | 正整数                      | 100                                                          |\n| MAX_MANGA_HISTORY_PER_USER              | 单个用户漫画阅读历史保留上限 | 正整数                      | 100                                                          |\n| INIT_CONFIG                              | 初始配置（JSON 格式，包含 api_site、custom_category、lives 等） | JSON 字符串                 | (空)                                                         |\n| CONFIG_SUBSCRIPTION_URL                  | 配置订阅 URL（Base58 编码的配置文件地址，优先级高于 INIT_CONFIG） | URL                         | (空)                                                         |\n| TMDB_API_KEY                             | TMDB API 密钥                                                | 任意字符串                  | (空)                                                         |\n| TMDB_PROXY                               | TMDB 代理地址                                                | URL                         | (空)                                                         |\n| TMDB_REVERSE_PROXY                       | TMDB 反向代理地址                                            | URL                         | (空)                                                         |\n| DANMAKU_API_BASE                         | 弹幕 API 地址                                                | URL                         | http:\u002F\u002Flocalhost:9321                                        |\n| DANMAKU_API_TOKEN                        | 弹幕 API Token                                               | 任意字符串                  | 87654321                                                     |\n| DATA_MIGRATION_CHUNK_SIZE                | 数据迁移批处理大小（控制导入导出时每批处理的用户数量和数据条数） | 正整数                      | 10                                                           |\n\nNEXT_PUBLIC_DOUBAN_PROXY_TYPE 选项解释：\n\n- direct: 由服务器直接请求豆瓣源站\n- cors-proxy-zwei: 浏览器向 cors proxy 请求豆瓣数据，该 cors proxy 由 [Zwei](https:\u002F\u002Fgithub.com\u002Fbestzwei) 搭建\n- cmliussss-cdn-tencent: 浏览器向豆瓣 CDN 请求数据，该 CDN 由 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 搭建，并由腾讯云 cdn 提供加速\n- cmliussss-cdn-ali: 浏览器向豆瓣 CDN 请求数据，该 CDN 由 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 搭建，并由阿里云 cdn 提供加速\n- custom: 用户自定义 proxy，由 NEXT_PUBLIC_DOUBAN_PROXY 定义\n\nNEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 选项解释：\n\n- direct：由浏览器直接请求豆瓣分配的默认图片域名\n- server：由服务器代理请求豆瓣分配的默认图片域名\n- img3：由浏览器请求豆瓣官方的精品 cdn（阿里云）\n- cmliussss-cdn-tencent：由浏览器请求豆瓣 CDN，该 CDN 由 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 搭建，并由腾讯云 cdn 提供加速\n- cmliussss-cdn-ali：由浏览器请求豆瓣 CDN，该 CDN 由 [CMLiussss](https:\u002F\u002Fgithub.com\u002Fcmliu) 搭建，并由阿里云 cdn 提供加速\n- custom: 用户自定义 proxy，由 NEXT_PUBLIC_DOUBAN_IMAGE_PROXY 定义\n\nNEXT_PUBLIC_VOICE_CHAT_STRATEGY 选项解释：\n\n- webrtc-fallback：使用 WebRTC P2P 连接，失败时自动回退到服务器中转（推荐）\n- server-only：仅使用服务器中转（适用于无法建立 P2P 连接的网络环境）\n\n### 外部观影室服务器部署\n\n如果您在 Vercel 等无法运行 WebSocket 服务器的平台部署，或希望将观影室服务器独立部署，可以使用外部观影室服务器。\n\n推荐使用由 [tgs9915](https:\u002F\u002Fgithub.com\u002Ftgs9915) 开发的 [watch-room-server](https:\u002F\u002Fgithub.com\u002Ftgs9915\u002Fwatch-room-server) 项目进行部署。\n\n**配置步骤：**\n\n1. 按照 [watch-room-server](https:\u002F\u002Fgithub.com\u002Ftgs9915\u002Fwatch-room-server) 的文档部署外部服务器\n\n2. 在 MoonTVPlus 中设置以下环境变量：\n\n   ```env\n   WATCH_ROOM_ENABLED=true\n   WATCH_ROOM_SERVER_TYPE=external\n   WATCH_ROOM_EXTERNAL_SERVER_URL=wss:\u002F\u002Fyour-watch-room-server.com\n   WATCH_ROOM_EXTERNAL_SERVER_AUTH=your_secure_token\n   ```\n\n3. 重启应用即可使用外部观影室服务器\n\n\n\n## 弹幕后端部署\n\n要使用弹幕功能，需要额外部署弹幕 API 后端服务。\n\n### 部署步骤\n\n1. 按照[danmu_api](https:\u002F\u002Fgithub.com\u002Fhuangxd-\u002Fdanmu_api.git)教程部署后端\n2. 建议配置SOURCE_ORDER或PLATFORM_ORDER环境变量，默认弹幕源很少\n3. 在管理面板设置后端地址\n\n\n\n\n##  超分功能说明\n\n超分功能需要浏览器支持webgpu并且你的浏览器环境不能是http（如非要在http中使用，需要在浏览器端设置允许不安全的内容）\n\n\n\n\n## AndroidTV 使用\n\n目前该项目可以配合 [OrionTV](https:\u002F\u002Fgithub.com\u002Fzimplexing\u002FOrionTV) 在 Android TV 上使用，可以直接作为 OrionTV 后端\n\n已实现播放记录和网页端同步\n\n## TVBOX 订阅功能\n\n本项目支持生成 TVBOX 格式的订阅链接，方便在 TVBOX 应用中使用。\n\n### 配置步骤\n\n1. 在环境变量中设置以下配置：\n\n   ```env\n   # 启用 TVBOX 订阅功能\n   ENABLE_TVBOX_SUBSCRIBE=true\n   # 设置订阅访问 Token（请使用强密码）\n   TVBOX_SUBSCRIBE_TOKEN=your_secure_random_token\n   # 可选：屏蔽特定视频源（多个源用逗号分隔，填写视频源的 key）\n   TVBOX_BLOCKED_SOURCES=source1,source2\n   ```\n\n2. 重启应用后，登录网站，点击用户菜单中的\"订阅\"按钮\n\n3. 复制生成的订阅链接到 TVBOX 应用中使用\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 MoonTV & Contributors\n\n## 致谢\n\n- [ts-nextjs-tailwind-starter](https:\u002F\u002Fgithub.com\u002Ftheodorusclarence\u002Fts-nextjs-tailwind-starter) — 项目最初基于该脚手架。\n- [MoonTV](https:\u002F\u002Fgithub.com\u002FMoonTechLab\u002FLunaTV)— 由此启发，再次站在巨人的肩膀上。\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[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=mtvpls\u002Fmoontvplus&type=Date)](https:\u002F\u002Fwww.star-history.com\u002F#mtvpls\u002Fmoontvplus&Date)\n","MoonTVPlus 是一个基于 MoonTV v100 二次开发的增强版影视聚合播放器。它新增了外部播放器支持、视频超分、弹幕系统、评论抓取等功能，显著提升了观影体验。项目使用 TypeScript 编写，基于 Next.js 和 Tailwind CSS 构建，支持 Docker 部署，具有多源聚合搜索、流畅在线播放和智能去广告等核心功能。此外，还提供了视频源脚本自定义、私人影库接入以及多人同步观影等高级特性。适用于个人用户或小型团队希望构建个性化、无广告且功能丰富的观影平台的场景。",2,"2026-06-11 03:47:56","high_star"]