tvbox屏蔽源

This commit is contained in:
mtvpls
2026-01-28 14:50:36 +08:00
parent 6494c80159
commit 7c62e1612c
2 changed files with 18 additions and 8 deletions

View File

@@ -8,13 +8,13 @@
> 🎬 **MoonTVPlus** 是基于 [MoonTV v100](https://github.com/MoonTechLab/LunaTV) 二次开发的增强版影视聚合播放器。它在原版基础上新增了外部播放器支持、视频超分、弹幕系统、评论抓取等实用功能,提供更强大的观影体验。
<div align="center">
![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)
</div>
@@ -346,6 +346,7 @@ dockge/komodo 等 docker compose UI 也有自动更新功能
| NEXT_PUBLIC_DANMAKU_CACHE_EXPIRE_MINUTES | 弹幕缓存失效时间(分钟数,设为 0 时不缓存) | 0 或正整数 | 43203天 |
| 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. 重启应用后,登录网站,点击用户菜单中的"订阅"按钮

View File

@@ -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',