diff --git a/README.md b/README.md index 54b36fa..8a3c46f 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,13 @@ > 🎬 **MoonTVPlus** 是基于 [MoonTV v100](https://github.com/MoonTechLab/LunaTV) 二次开发的增强版影视聚合播放器。它在原版基础上新增了外部播放器支持、视频超分、弹幕系统、评论抓取等实用功能,提供更强大的观影体验。
+ ![Next.js](https://img.shields.io/badge/Next.js-14-000?logo=nextdotjs) ![TailwindCSS](https://img.shields.io/badge/TailwindCSS-3-38bdf8?logo=tailwindcss) ![TypeScript](https://img.shields.io/badge/TypeScript-4.x-3178c6?logo=typescript) ![License](https://img.shields.io/badge/License-MIT-green) ![Docker Ready](https://img.shields.io/badge/Docker-ready-blue?logo=docker) -
@@ -346,6 +346,7 @@ dockge/komodo 等 docker compose UI 也有自动更新功能 | NEXT_PUBLIC_DANMAKU_CACHE_EXPIRE_MINUTES | 弹幕缓存失效时间(分钟数,设为 0 时不缓存) | 0 或正整数 | 4320(3天) | | ENABLE_TVBOX_SUBSCRIBE | 是否启用 TVBOX 订阅功能 | true/false | false | | TVBOX_SUBSCRIBE_TOKEN | TVBOX 订阅 API 访问 Token,如启用TVBOX功能必须设置该项 | 任意字符串 | (空) | +| TVBOX_BLOCKED_SOURCES | TVBOX 订阅屏蔽源列表(多个源用逗号分隔,匹配视频源的 key) | 逗号分隔的源 key | (空) | | WATCH_ROOM_ENABLED | 是否启用观影室功能(vercel部署不支持该功能,可使用外部服务器) | true/false | false | | WATCH_ROOM_SERVER_TYPE | 观影室服务器类型 | internal/external | internal | | WATCH_ROOM_EXTERNAL_SERVER_URL | 外部观影室服务器地址(当 SERVER_TYPE 为 external 时必填) | WebSocket URL | (空) | @@ -448,6 +449,8 @@ NEXT_PUBLIC_VOICE_CHAT_STRATEGY 选项解释: ENABLE_TVBOX_SUBSCRIBE=true # 设置订阅访问 Token(请使用强密码) TVBOX_SUBSCRIBE_TOKEN=your_secure_random_token + # 可选:屏蔽特定视频源(多个源用逗号分隔,填写视频源的 key) + TVBOX_BLOCKED_SOURCES=source1,source2 ``` 2. 重启应用后,登录网站,点击用户菜单中的"订阅"按钮 diff --git a/src/app/api/tvbox/subscribe/route.ts b/src/app/api/tvbox/subscribe/route.ts index a7c5d29..8207524 100644 --- a/src/app/api/tvbox/subscribe/route.ts +++ b/src/app/api/tvbox/subscribe/route.ts @@ -2,7 +2,6 @@ import { NextRequest, NextResponse } from 'next/server'; -import { getAuthInfoFromCookie } from '@/lib/auth'; import { getAvailableApiSites, getConfig } from '@/lib/config'; import { getCachedLiveChannels } from '@/lib/live'; @@ -36,15 +35,11 @@ export async function GET(request: NextRequest) { } try { - // 获取用户信息 - const authInfo = getAuthInfoFromCookie(request); - const username = authInfo?.username; - // 获取配置 const config = await getConfig(); - // 获取视频源 - const apiSites = await getAvailableApiSites(username); + // 获取视频源(TVBox客户端不会发送Cookie,直接获取所有启用的源) + const apiSites = await getAvailableApiSites(); // 获取直播源 const liveConfig = config.LiveConfig?.filter(live => !live.disabled) || []; @@ -160,6 +155,18 @@ export async function GET(request: NextRequest) { ads: [], }; + // 获取屏蔽源列表并过滤 + const blockedSources = process.env.TVBOX_BLOCKED_SOURCES + ? process.env.TVBOX_BLOCKED_SOURCES.split(',').map(s => s.trim()).filter(Boolean) + : []; + + if (blockedSources.length > 0) { + tvboxSubscription.sites = tvboxSubscription.sites.filter( + site => !blockedSources.includes(site.key) + ); + console.log('TVBOX 订阅已屏蔽源:', blockedSources); + } + return NextResponse.json(tvboxSubscription, { headers: { 'Content-Type': 'application/json; charset=utf-8',