From 25c699a819dad594900e81e915e03c97f561f4a3 Mon Sep 17 00:00:00 2001
From: shinya
Date: Fri, 1 Aug 2025 13:17:19 +0800
Subject: [PATCH] feat: add yellow filter
---
README.md | 29 ++++++++---------
VERSION.txt | 2 +-
src/app/admin/page.tsx | 56 +++++++++++++++++++++++++++++++++
src/app/api/admin/site/route.ts | 6 +++-
src/app/api/search/one/route.ts | 14 +++++++--
src/app/api/search/route.ts | 14 +++++++--
src/app/layout.tsx | 4 +++
src/app/search/page.tsx | 15 +++++++--
src/lib/admin.types.ts | 1 +
src/lib/config.ts | 8 +++++
src/lib/version.ts | 2 +-
src/lib/yellow.ts | 22 +++++++++++++
12 files changed, 148 insertions(+), 25 deletions(-)
create mode 100644 src/lib/yellow.ts
diff --git a/README.md b/README.md
index 96167db..b95da60 100644
--- a/README.md
+++ b/README.md
@@ -207,20 +207,21 @@ networks:
## 环境变量
-| 变量 | 说明 | 可选值 | 默认值 |
-| --------------------------- | -------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
-| USERNAME | 非 localstorage 部署时的管理员账号 | 任意字符串 | (空) |
-| PASSWORD | 非 localstorage 部署时为管理员密码 | 任意字符串 | (空) |
-| SITE_NAME | 站点名称 | 任意字符串 | MoonTV |
-| ANNOUNCEMENT | 站点公告 | 任意字符串 | 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。 |
-| NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | localstorage、redis、d1、upstash | localstorage |
-| REDIS_URL | redis 连接 url | 连接 url | 空 |
-| UPSTASH_URL | upstash redis 连接 url | 连接 url | 空 |
-| UPSTASH_TOKEN | upstash redis 连接 token | 连接 token | 空 |
-| NEXT_PUBLIC_ENABLE_REGISTER | 是否开放注册,仅在非 localstorage 部署时生效 | true / false | false |
-| NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 |
-| NEXT_PUBLIC_IMAGE_PROXY | 默认的浏览器端图片代理 | url prefix | (空) |
-| NEXT_PUBLIC_DOUBAN_PROXY | 默认的浏览器端豆瓣数据代理 | url prefix | (空) |
+| 变量 | 说明 | 可选值 | 默认值 |
+| --------------------------------- | -------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
+| USERNAME | 非 localstorage 部署时的管理员账号 | 任意字符串 | (空) |
+| PASSWORD | 非 localstorage 部署时为管理员密码 | 任意字符串 | (空) |
+| SITE_NAME | 站点名称 | 任意字符串 | MoonTV |
+| ANNOUNCEMENT | 站点公告 | 任意字符串 | 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。 |
+| NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | localstorage、redis、d1、upstash | localstorage |
+| REDIS_URL | redis 连接 url | 连接 url | 空 |
+| UPSTASH_URL | upstash redis 连接 url | 连接 url | 空 |
+| UPSTASH_TOKEN | upstash redis 连接 token | 连接 token | 空 |
+| NEXT_PUBLIC_ENABLE_REGISTER | 是否开放注册,仅在非 localstorage 部署时生效 | true / false | false |
+| NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 |
+| NEXT_PUBLIC_IMAGE_PROXY | 默认的浏览器端图片代理 | url prefix | (空) |
+| NEXT_PUBLIC_DOUBAN_PROXY | 默认的浏览器端豆瓣数据代理 | url prefix | (空) |
+| NEXT_PUBLIC_DISABLE_YELLOW_FILTER | 关闭色情内容过滤 | true/false | false |
## 配置说明
diff --git a/VERSION.txt b/VERSION.txt
index c215e19..c36b4de 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-20250801003950
\ No newline at end of file
+20250801131720
\ No newline at end of file
diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx
index 83d7467..064303e 100644
--- a/src/app/admin/page.tsx
+++ b/src/app/admin/page.tsx
@@ -59,6 +59,7 @@ interface SiteConfig {
SiteInterfaceCacheTime: number;
ImageProxy: string;
DoubanProxy: string;
+ DisableYellowFilter: boolean;
}
// 视频源数据类型
@@ -1356,6 +1357,7 @@ const SiteConfigComponent = ({ config }: { config: AdminConfig | null }) => {
SiteInterfaceCacheTime: 7200,
ImageProxy: '',
DoubanProxy: '',
+ DisableYellowFilter: false,
});
// 保存状态
const [saving, setSaving] = useState(false);
@@ -1374,6 +1376,7 @@ const SiteConfigComponent = ({ config }: { config: AdminConfig | null }) => {
...config.SiteConfig,
ImageProxy: config.SiteConfig.ImageProxy || '',
DoubanProxy: config.SiteConfig.DoubanProxy || '',
+ DisableYellowFilter: config.SiteConfig.DisableYellowFilter || false,
});
}
}, [config]);
@@ -1610,6 +1613,59 @@ const SiteConfigComponent = ({ config }: { config: AdminConfig | null }) => {
+ {/* 禁用黄色过滤器 */}
+
+
+
+
+ !isD1Storage &&
+ !isUpstashStorage &&
+ setSiteSettings((prev) => ({
+ ...prev,
+ DisableYellowFilter: e.target.checked,
+ }))
+ }
+ disabled={isD1Storage || isUpstashStorage}
+ className={`w-4 h-4 text-green-600 bg-gray-100 border-gray-300 rounded focus:ring-green-500 dark:focus:ring-green-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 ${
+ isD1Storage || isUpstashStorage
+ ? 'opacity-50 cursor-not-allowed'
+ : ''
+ }`}
+ />
+
+
+
+ 启用此选项将禁用黄色内容的过滤功能,允许显示所有内容。
+
+
+
{/* 操作按钮 */}