You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
4.3 KiB
194 lines
4.3 KiB
# EH-Downloader
|
|
|
|
一个基于 FastAPI 的 E-Hentai 画廊下载工具,支持异步批量下载画廊图片。
|
|
|
|
## 功能特性
|
|
|
|
- 🚀 **异步下载**: 基于 asyncio 的高性能异步下载
|
|
- 🌐 **Web界面**: 现代化的 Web 用户界面
|
|
- 🔧 **代理支持**: 支持 HTTP 代理配置
|
|
- 📁 **智能管理**: 自动创建目录结构,按画廊分文件夹存储
|
|
- 🔄 **断点续传**: 支持中断后继续下载
|
|
- 📊 **进度监控**: 实时显示下载进度和状态
|
|
- 🧹 **自动清理**: 一键清理临时文件和日志
|
|
|
|
## 快速开始
|
|
|
|
### 环境要求
|
|
|
|
- Python 3.11+
|
|
- 网络代理(可选,用于访问 E-Hentai)
|
|
|
|
### 安装依赖
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 运行应用
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
访问 `http://localhost:8000` 使用 Web 界面。
|
|
|
|
### Docker 部署
|
|
|
|
```bash
|
|
# 构建镜像
|
|
docker build -t eh-downloader .
|
|
|
|
# 运行容器
|
|
docker-compose up -d
|
|
```
|
|
|
|
## 使用说明
|
|
|
|
### 1. 配置代理
|
|
|
|
在项目根目录的 `proxy.txt` 文件中添加代理配置,每行一个:
|
|
|
|
```
|
|
127.0.0.1:7890
|
|
192.168.1.100:8080
|
|
```
|
|
|
|
### 2. 添加目标URL
|
|
|
|
在 `data/targets.txt` 文件中添加要下载的画廊URL,每行一个:
|
|
|
|
```
|
|
https://e-hentai.org/g/1234567/abcdef123456
|
|
https://e-hentai.org/g/2345678/bcdefg234567
|
|
```
|
|
|
|
### 3. 开始下载
|
|
|
|
1. 打开 Web 界面
|
|
2. 选择代理设置
|
|
3. 点击"读取目标URL"加载URL列表
|
|
4. 点击"下载URL"抓取画廊链接
|
|
5. 点击"下载图片"开始下载图片
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
ehentai-fastapi/
|
|
├── main.py # 主应用文件
|
|
├── config.py # 配置管理
|
|
├── logger.py # 日志管理
|
|
├── utils.py # 工具函数
|
|
├── step1.py # 画廊链接抓取
|
|
├── step2.py # 图片下载
|
|
├── downloader.py # 下载器类
|
|
├── templates/ # HTML模板
|
|
├── static/ # 静态资源
|
|
├── data/ # 数据目录
|
|
│ ├── targets.txt # 目标URL列表
|
|
│ ├── downloads/ # 下载文件存储
|
|
│ └── *.log # 日志文件
|
|
├── proxy.txt # 代理配置
|
|
├── requirements.txt # 依赖列表
|
|
├── Dockerfile # Docker配置
|
|
└── docker-compose.yaml # Docker Compose配置
|
|
```
|
|
|
|
## 配置说明
|
|
|
|
### 应用配置 (config.py)
|
|
|
|
- `concurrency`: 并发数,默认20
|
|
- `max_page`: 单专辑最大翻页数,默认100
|
|
- `retry_per_page`: 单页重试次数,默认5
|
|
- `retry_per_image`: 单图重试次数,默认3
|
|
- `timeout`: 请求超时时间,默认10秒
|
|
- `image_timeout`: 图片下载超时时间,默认15秒
|
|
|
|
### 日志配置
|
|
|
|
- 日志级别:INFO
|
|
- 日志文件:`data/app.log`, `data/crawl.log`, `data/download.log`
|
|
- 日志格式:`[时间] [级别] 消息`
|
|
|
|
## API 接口
|
|
|
|
### GET /
|
|
主页面
|
|
|
|
### POST /load_urls
|
|
读取目标URL列表
|
|
|
|
### POST /download_urls
|
|
开始抓取画廊链接
|
|
|
|
### POST /download_images
|
|
开始下载图片
|
|
|
|
### POST /check_incomplete
|
|
检查未完成的下载
|
|
|
|
### POST /clean_files
|
|
清理临时文件
|
|
|
|
### POST /clear
|
|
清除输出
|
|
|
|
## 注意事项
|
|
|
|
1. **网络要求**: 需要稳定的网络连接和合适的代理
|
|
2. **存储空间**: 确保有足够的磁盘空间存储下载的图片
|
|
3. **合规使用**: 请遵守相关法律法规和网站使用条款
|
|
4. **代理配置**: 建议使用稳定的代理服务以确保下载成功率
|
|
|
|
## 故障排除
|
|
|
|
### 常见问题
|
|
|
|
1. **下载失败**: 检查代理配置和网络连接
|
|
2. **文件损坏**: 重新下载或检查存储空间
|
|
3. **权限错误**: 确保应用有读写权限
|
|
4. **内存不足**: 降低并发数或增加系统内存
|
|
|
|
### 日志查看
|
|
|
|
```bash
|
|
# 查看应用日志
|
|
tail -f data/app.log
|
|
|
|
# 查看抓取日志
|
|
tail -f data/crawl.log
|
|
|
|
# 查看下载日志
|
|
tail -f data/download.log
|
|
```
|
|
|
|
## 开发说明
|
|
|
|
### 代码结构
|
|
|
|
- **main.py**: FastAPI 应用主文件
|
|
- **config.py**: 配置管理模块
|
|
- **logger.py**: 日志管理模块
|
|
- **utils.py**: 工具函数模块
|
|
- **step1.py**: 画廊链接抓取逻辑
|
|
- **step2.py**: 图片下载逻辑
|
|
|
|
### 扩展功能
|
|
|
|
1. 添加新的下载源
|
|
2. 支持更多图片格式
|
|
3. 实现下载队列管理
|
|
4. 添加用户认证系统
|
|
|
|
## 许可证
|
|
|
|
本项目仅供学习和研究使用,请遵守相关法律法规。
|
|
|
|
## 更新日志
|
|
|
|
### v1.0.0
|
|
- 初始版本发布
|
|
- 支持基本的画廊下载功能
|
|
- Web界面和API接口
|
|
- Docker支持 |