支持NSFWPY进行敏感内容过滤

This commit is contained in:
梦凌汐 2025-06-05 01:59:16 +08:00
parent 257653d397
commit 7d79e4a3c9
5 changed files with 41 additions and 10 deletions

View File

@ -23,9 +23,15 @@ CatismImage 是一个基于Web的图片存储和管理系统提供用户友
pip install -r requirements.txt pip install -r requirements.txt
``` ```
4. 配置环境变量: 4. [可选] 配置NSFWPY
在.env或系统添加以下必需环境变量 如果您希望启用NSFW过滤功能您需要配置NSFWPY。
请参考[HG-ha/nsfwpy](https://github.com/HG-ha/nsfwpy),通过您喜欢的方式完成配置。
5. 配置环境变量:
在.env/系统/Docker添加以下必需环境变量
```plaintext ```plaintext
# S3存储配置 # S3存储配置
@ -37,15 +43,19 @@ CatismImage 是一个基于Web的图片存储和管理系统提供用户友
# MongoDB配置 # MongoDB配置
MONGO_URI=mongodb://your_mongo_uri MONGO_URI=mongodb://your_mongo_uri
MONGO_DB=your_database_name MONGO_DB=your_database_name
# NSFW过滤配置(目前支持NSFWPY)
ENABLE_NSFW_FILTER=true/false
NSFWPY_ENDPOINT=your_nsfwpy_endpoint
``` ```
5. 运行后端服务: 6. 运行后端服务:
```bsh ```bsh
python app.py python app.py
``` ```
6. 访问前端页面: 7. 访问前端页面:
```bash ```bash
http://localhost:5000 http://localhost:5000
@ -56,7 +66,7 @@ CatismImage 是一个基于Web的图片存储和管理系统提供用户友
1. 注册/登录后获取用户Key 1. 注册/登录后获取用户Key
2. 使用上传功能添加图片 2. 使用上传功能添加图片
3. 在仪表板查看存储使用情况和流量统计 3. 在仪表板查看存储使用情况和流量统计
4. 通过充值功能获取喵币 4. 通过爱发电回调充值功能获取喵币
5. 在设置中自定义主题颜色和模式 5. 在设置中自定义主题颜色和模式
## 技术栈 ## 技术栈
@ -66,10 +76,6 @@ CatismImage 是一个基于Web的图片存储和管理系统提供用户友
- 数据库MongoDB - 数据库MongoDB
- 实时通信WebSocket - 实时通信WebSocket
## TODO List
完善爱发电支付部分
## 贡献指南 ## 贡献指南
欢迎提交Pull Request或报告Issue。请确保代码风格一致并通过所有测试 欢迎提交Pull Request或报告Issue。请确保代码风格一致并通过所有测试

View File

@ -16,6 +16,9 @@ class Config:
MONGO_URI = os.getenv('MONGO_URI') MONGO_URI = os.getenv('MONGO_URI')
MONGO_DB = os.getenv('MONGO_DB') MONGO_DB = os.getenv('MONGO_DB')
ENABLE_NSFW_FILTER = os.getenv('ENABLE_NSFW_FILTER')
NSFWPY_ENDPOINT = os.getenv('NSFWPY_ENDPOINT')
if(S3_ACCESS_KEY == None or S3_SECRET_KEY == None or S3_BUCKET == None or S3_ENDPOINT == None): if(S3_ACCESS_KEY == None or S3_SECRET_KEY == None or S3_BUCKET == None or S3_ENDPOINT == None):
print("错误缺少必需的S3环境变量") print("错误缺少必需的S3环境变量")
sys.exit(1) sys.exit(1)

View File

@ -50,6 +50,7 @@ def upload_image():
try: try:
from PIL import Image from PIL import Image
import io import io
import requests
# 直接使用PIL验证图片内容 # 直接使用PIL验证图片内容
try: try:
@ -59,6 +60,27 @@ def upload_image():
file.seek(0) file.seek(0)
except Exception: except Exception:
return jsonify({'error': '无效的图片文件'}), 400 return jsonify({'error': '无效的图片文件'}), 400
# 如果启用了NSFW检查
if AppConfig.ENABLE_NSFW_FILTER:
print("NSFW检查已启用")
file.seek(0)
try:
response = requests.post(
f"{AppConfig.NSFWPY_ENDPOINT}/classify",
files={'image': file},
headers={'accept': 'application/json'}
)
response.raise_for_status()
nsfw_data = response.json()
# 检查NSFW评分
if nsfw_data.get('neutral', 0) + nsfw_data.get('drawing', 0) < 0.5:
return jsonify({'error': '图片内容不符合安全标准'}), 403
file.seek(0)
except Exception as e:
return jsonify({'error': f'NSFW检查失败: {str(e)}'}), 500
except Exception: except Exception:
return jsonify({'error': '无效的图片文件'}), 400 return jsonify({'error': '无效的图片文件'}), 400