# ZLibrary 电子书下载器

从 [zlib.li](https://zlib.li) 搜索和下载电子书的命令行工具。

## 特性

- ✅ **自动绕过反爬保护**：自动解决网站的 SHA1 工作量证明（PoW）挑战
- ✅ **智能搜索匹配**：支持书名、作者、ISBN 等多维度匹配
- ✅ **格式优先级**：自动选择 epub + pdf 版本下载
- ✅ **代理轮询**：支持 Shadowsocks（Surge 格式）代理列表，每 IP 5 本后自动切换
- ✅ **AI 友好**：JSON 输出，结构化搜索结果，适合 AI Agent 调用

## 安装

```bash
cd /path/to/zlib-dl
python3 -m venv .venv
source .venv/bin/activate
pip install curl_cffi beautifulsoup4 lxml
```

### 代理依赖（全自动）

脚本内置自动代理引擎配置。如果使用 Shadowsocks 代理列表（如 Surge 格式），脚本**会在首次运行时自动将对应平台架构的 `mihomo` 引擎打包进执行环境中**，完全脱离 Host 依赖，无需手动通过 brew 安装任何插件。

## 使用方法

### 搜索图书

```bash
# 按标题和作者搜索
python3 zlib_dl.py search --title "Project Hail Mary" --author "Andy Weir"

# 自由搜索
python3 zlib_dl.py search --query "我从达尔文那里学到的投资知识 普拉克·普拉萨德"

# JSON 输出（AI Agent 推荐）
python3 zlib_dl.py --json search --title "Project Hail Mary" --author "Andy Weir"

# 按 ISBN 搜索
python3 zlib_dl.py search --isbn "9780593355275"
```

### 下载图书

```bash
# 自动搜索 + 下载最佳 epub 和 pdf
python3 zlib_dl.py download --title "Project Hail Mary" --author "Andy Weir"

# 指定下载路径（从搜索结果中获取）
python3 zlib_dl.py download --dl-path "/dl/O2pPQwkq2l" --title "Project Hail Mary" --format epub

# 指定输出目录
python3 zlib_dl.py download --title "Project Hail Mary" --author "Andy Weir" -o ./books

# 使用代理列表
python3 zlib_dl.py download --title "Project Hail Mary" --author "Andy Weir" --proxy-file proxies.txt
```

### 详细模式

```bash
python3 zlib_dl.py --verbose search --title "..."
python3 zlib_dl.py --verbose --json download --title "..."
```

## 代理配置

### Surge Shadowsocks 格式

创建 `proxies.txt`，每行一个代理：

```
🇭🇰 香港 01= ss, server.example.com, 18300, encrypt-method=aes-128-gcm, password=your_password, obfs=http, obfs-host=example.microsoft.com, tfo=true, udp-relay=true
🇭🇰 香港 02= ss, server.example.com, 18305, encrypt-method=aes-128-gcm, password=your_password, obfs=http, obfs-host=example.microsoft.com, tfo=true, udp-relay=true
```

### SOCKS5/HTTP 代理格式

也支持直接的代理 URL 格式：

```
socks5://127.0.0.1:1080
socks5://127.0.0.1:1081
http://127.0.0.1:8080
```

### 代理轮询机制

- 每个代理最多下载 **5 本**（zlib.li 的匿名限制）
- 达到上限后自动停止当前代理进程，启动下一个
- SS 代理会自动启动 `mihomo` 进程创建本地隧道，无需宿主机环境准备

## AI Agent 集成

### JSON 搜索结果结构

```json
{
  "status": "success",
  "query": { "title": "...", "author": "...", "combined_query": "..." },
  "total_results": 50,
  "results": [
    {
      "id": "17576434",
      "title": "Project Hail Mary",
      "author": "Andy Weir",
      "format": "epub",
      "filesize": "1.21 MB",
      "language": "English",
      "year": "2021",
      "publisher": "Ballantine Books",
      "isbn": "9780593355275",
      "quality": "5.0",
      "rating": "5.0",
      "download_path": "/dl/O2pPQwkq2l",
      "page_url": "/book/ZOE1baGkOP/project-hail-mary.html"
    }
  ],
  "recommended": {
    "epub": { "...best epub..." },
    "pdf": { "...best pdf..." },
    "mobi": { "...best mobi..." }
  },
  "message": "找到 50 个结果。推荐: epub (1.21 MB, Q:5.0, English), pdf (7.44 MB, Q:5.0, English)"
}
```

### 典型 Agent 工作流

1. 搜索：`zlib_dl.py --json search --title "书名" --author "作者"`
2. 从 `recommended` 中选择合适的版本
3. 下载：`zlib_dl.py --json download --dl-path "/dl/xxx" --title "书名" --format epub`
4. 检查下载结果的 `status` 字段

## 限制

- 匿名用户每 IP 每天只能下载 5 本
- 需要代理才能批量下载
- 网站随时可能更新反爬机制
