一个用于可视化爬取、管理和阅读番茄小说的 Web 应用。它允许用户搜索番茄网的小说,将其加入下载队列,跟踪下载进度,在线阅读,并查看一些基本的统计信息。
本系统采用前后端分离、基于容器化部署的分布式架构,主要由以下服务和模块构成:
- 技术栈: Python 3, Flask, Gunicorn, Eventlet, Flask-SQLAlchemy, Flask-JWT-Extended, Flask-SocketIO, Celery API。
- 功能:
- 作为核心 API 服务器 (
app.py),处理前端的所有 HTTP 请求。 - 用户认证: 使用
auth.py蓝图处理用户注册和登录,通过 Flask-JWT-Extended 生成和验证 JWT。 - API 路由: 定义 RESTful API 接口:
/api/search: 搜索小说。/api/novels: 添加小说下载任务 / 获取小说列表。/api/novels/<id>: 获取小说详细信息。/api/novels/<id>/chapters: 获取章节列表。/api/novels/<id>/chapters/<cid>: 获取特定章节内容。/api/novels/<id>/cover: 获取封面。/api/novels/<id>/download: 下载生成的小说文件。/api/tasks/*: 管理下载任务。/api/stats/*: 获取统计数据。
- 数据库交互: 通过 SQLAlchemy 操作 MySQL。
- 任务调度: 使用 Celery 向 Redis 发布任务。
- 实时通信: Flask-SocketIO + WebSocket 实时推送任务进度。
- 异步处理: Gunicorn + eventlet 支持并发。
- 配置管理:
config.py读取.env。 - 错误处理: 全局异常捕获,返回标准化 JSON 错误。
- 作为核心 API 服务器 (
- 技术栈: Python 3, Celery, Redis。
- 功能:
- 独立执行后台任务 (
process_novel_task,analyze_novel_task)。 - 下载章节、生成小说、统计词频、生成词云等。
- 与 Flask-SocketIO 联动,更新任务状态。
- 独立执行后台任务 (
- 技术栈: MySQL 8。
- 数据模型:
User: 用户信息。Novel: 小说元数据。Chapter: 小说章节内容。DownloadTask: 下载任务信息。WordStat: 词频统计数据。
- Celery 的消息中介与结果存储。
- Flask-SocketIO 的消息广播支撑。
- 实现对番茄小说官网或 API 的内容抓取。
- 多线程下载、断点恢复、章节加密解密。
- 使用
ebooklib生成 EPUB,支持纯文本输出。 - 使用
jieba分词 +wordcloud生成词云图。
- 技术栈: Vue 3, Vite, Pinia, Vue Router, Axios, Socket.IO Client, Element Plus。
- 功能:
- 小说搜索 / 阅读 / 管理 / 下载任务可视化。
- 实时进度同步(通过 WebSocket)。
- 登录/注册状态管理。
- 使用 Element Plus 提供 UI。
- 前端: Vue 3, Pinia, Vite, Element Plus
- 后端: Flask, SQLAlchemy, Flask-JWT, Flask-SocketIO, Celery
- 任务调度: Celery + Redis
- 数据库: MySQL 8
- 部署: Docker + Docker Compose
- Docker Engine
- Docker Compose v2+
-
克隆项目代码。
-
配置
.env文件:
# 数据库
DB_NAME=fanqie_db
DB_USER=fanqie_user
DB_PASSWORD=数据库用户密码
DB_ROOT_PASSWORD=数据库root用户密码
# 安全密钥
JWT_SECRET_KEY=随机JWT密钥
FLASK_SECRET_KEY=随机Flask密钥
# Flask 环境
FLASK_ENV=production
FLASK_LOG_LEVEL=INFO
SQLALCHEMY_ECHO=False
TZ=Asia/Shanghai- 启动服务:
docker-compose up -d --build- 访问服务:
- 前端:
http://<服务器IP>:5173 - 后端 API:
http://<服务器IP>:5000(调试时)
- 数据库连接:
- 地址:
localhost:3307
- 查看日志:
docker-compose logs -f backend- 停止服务:
docker-compose down- 重启服务:
docker-compose restart- 更新代码:
git pull
docker-compose up -d --build






