【开源分享】番茄小说搜索解析与下载-多平台支持(手机可用)
番茄小说下载器
简洁高效的小说下载与导出工具,采用 HTML5 现代化界面,支持 TXT/EPUB 多格式导出。
我这里主要面向手机用户,其他系统用户也有,但需要自己去github下载所需文件,在最下面有链接。
核心功能
- ✅ 获取书籍信息 - 封面、作者、简介等完整信息
- ✅ 灵活下载 - 支持整本或范围下载
- ✅ 多格式导出 - TXT/EPUB 格式,EPUB 自动添加封面
- ✅ 实时进度 - 动态日志显示和进度条更新
- ✅ 跨平台支持 - Windows/Mac/Linux 无缝运行
- ✅ 现代化界面 - HTML5 + CSS3,响应式设计
快速开始
前置要求
- Python 3.7+ (下载)
- Windows/Mac/Linux 任意操作系统
Windows 用户(推荐)
直接双击 run.bat 文件,应用会自动启动
Mac/Linux 用户
chmod +x run.sh
./run.sh安卓用户
先下载termux 第一步,先更新环境
pkg update && pkg upgrade -y然后就可以安装Python
pkg install python -y接着输入
RAW_URL="https://raw.githubusercontent.com/zhongbai2333/Tomato-Novel-Downloader/main/installer.sh"; API="https://api.cenguigui.cn/api/github/?type=json&url=$RAW_URL"; DL_URL="$(curl -fsSL "$API" | sed -n 's/.*"downUrl":"\([^"]*\)".*/\1/p')"; DL_URL="${DL_URL//\\//}"; [ -z "$DL_URL" ] && DL_URL="$RAW_URL"; bash <(curl -fsSL "$DL_URL")路径默认就行,反正一切都默认嘛~ 如果报错可以问AI,最后要运行时输入
./run.sh就可以了,第一次使用可以进行配置
手动启动
pip install -r requirements.txt
python main.py或启动 Web 服务器,在浏览器访问 http://127.0.0.1:5000:
python web_app.py使用步骤
1. 获取书籍 ID 或 URL
方式 A - 从 URL 获取
- 在番茄小说网页版搜索喜欢的小说
- 打开小说详情页
- 复制浏览器地址栏的完整 URL,如:
https://fanqienovel.com/page/7199473033239596087
方式 B - 直接使用书籍 ID
- 从 URL 中提取数字 ID,如:
7199473033239596087 - 在”书籍 ID/URL”输入框中输入
2. 选择保存路径
- 点击 ”📁 浏览” 按钮
- 输入保存目录的完整路径(Windows:
C:\Users\YourName\Downloads\novels或 Mac/Linux:/home/username/Downloads/novels) - 点击 “开始下载” 按钮确认
提示:第一次设置的路径会被保存,下次自动填充
3. 选择文件格式
- TXT (默认) - 纯文本格式,兼容性最好
- EPUB - 电子书格式,支持各类阅读器
4. 开始下载
- 输入书籍信息(ID/URL)
- 选择保存路径
- 选择文件格式
- 点击 ”🚀 开始下载” 按钮
下载过程中会看到:
- 📊 进度条 - 实时显示完成百分比
- 📝 日志窗口 - 显示详细的下载信息
- 📚 书籍名称 - 当前下载的小说标题
5. 取消下载(可选)
- 点击 ”⏹ 取消下载” 按钮可中止当前任务
- 已下载的内容会保留(不会删除)
常见问题
Q: 如何获取书籍 ID?
A: 有两种方法:
- 从 URL 提取 - 输入完整 URL 或仅输入 ID
- 从 App 获取 - 打开番茄小说 App,搜索小说,打开详情页,右上角分享选择”复制链接”,粘贴到应用中
Q: 下载速度很慢怎么办?
A: 这是正常现象,原因包括网络连接速度受限、服务器限流保护、章节内容较多等。改善方法:
- 确保网络连接稳定
- 尝试在网络高峰期后下载
- 检查是否有代理或 VPN 干扰
Q: 下载失败显示”获取书籍信息失败”
A: 可能的原因:
- 书籍 ID 错误 - 检查 ID 是否复制完整
- 书籍已下架 - 小说被作者或平台删除
- 网络问题 - 检查网络连接,尝试代理
- API 限制 - 依赖的接口暂时不可用,稍后重试
Q: EPUB 格式和 TXT 格式有什么区别?
A:
| 特性 | TXT | EPUB |
|---|---|---|
| 文件大小 | 较小 | 较大(含封面) |
| 兼容性 | 最好(任何阅读器) | 需要 EPUB 阅读器 |
| 排版 | 无格式 | 带自动排版 |
| 封面 | 无 | 自动添加 |
| 推荐用途 | 备份、长期存储 | Kindle、平板阅读 |
Q: 应用占用的资源多吗?
A: 非常轻量级:
- 启动时内存占用:<100MB
- 下载时内存占用:<200MB
- 磁盘空间:仅应用本身 <50MB
Q: 支持断点续传吗?
A: 暂不支持,但有两个替代方案:
- 保存进度 - 已下载的章节会保留,可以手动编辑文件继续
- 重新下载 - 重新下载会覆盖之前的文件
Q: 可以同时下载多个小说吗?
A: 目前只支持单一下载队列,可以下载完一个后再下载另一个。后续版本可能支持队列功能。
高级用法
设置自定义下载路径
编辑 config.json 文件:
{
"save_path": "/path/to/your/novels",
"file_format": "txt"
}修改应用样式
编辑 static/css/style.css 文件,自定义颜色和布局:
:root {
--primary: #1976D2; /* 修改主色 */
--success: #4CAF50; /* 修改成功提示色 */
/* 更多颜色... */
}故障排除
错误:Address already in use
原因:端口 5000 被占用
解决:
- 关闭其他使用该端口的应用
- 或修改
main.py中的端口号(默认 5000)
错误:ModuleNotFoundError: No module named ‘flask’
原因:依赖包未安装
解决:
pip install flask flask-cors应用无法打开窗口
原因:PyWebView 未安装或无法初始化
解决:
pip install pywebview如果仍未解决,应用会自动使用系统浏览器(自动回退)
下载中途断开怎么办?
方案 1:重新开始下载(覆盖之前的文件)
方案 2:手动合并下载的部分内容
方案 3:联系开发者反馈 bug
项目结构
├── main.py 启动脚本(推荐使用)
├── web_app.py Flask 后端应用
├── novel_downloader.py 核心下载逻辑
├── templates/
│ └── index.html HTML 前端页面
├── static/
│ ├── css/style.css 样式表
│ └── js/app.js 前端逻辑
└── requirements.txt 依赖管理技术栈
- 前端 - Vanilla JavaScript + CSS3 响应式设计
- 后端 - Flask REST API
- 窗口 - PyWebView 原生窗口框架
- 核心 - 原有 novel_downloader.py 逻辑保留
法律声明
本工具仅供个人学习和研究使用,用户需自行承担使用本工具所造成的一切后果。
禁止用于:
- ❌ 商业用途
- ❌ 侵犯著作权
- ❌ 大规模爬取和传播
- ❌ 任何违法活动
责任免责:
- 因依赖 API 变更导致的功能失效
- 因用户操作不当导致的数据丢失
- 任何法律纠纷或版权问题
反馈与贡献
如有问题或建议,欢迎:
- 提交 Issue 报告 bug
- 发送 Pull Request 贡献代码
- GitHub: https://github.com/POf-L/Fanqie-novel-Downloader
许可证
MIT License
