# 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支持