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' + : '' + }`} + /> + +
+

+ 启用此选项将禁用黄色内容的过滤功能,允许显示所有内容。 +

+
+ {/* 操作按钮 */}