first commit

This commit is contained in:
2026-03-03 10:37:14 +08:00
commit e904d7af1d

141
README.md Normal file
View File

@@ -0,0 +1,141 @@
# NanoBanana2 本地调用脚本
本项目提供一个简单的 Python/Node 脚本,帮助你通过速创 API 的 **NanoBanana2** 接口,根据提示词和本地参考图或参考图 URL 生成图片,并将结果图片保存到本地目录。
## 环境准备Python 或 Node 二选一)
1. 安装 Python 3.9+Windows 可在 `python.org` 下载并安装)。
2. 在项目目录下安装 **Python 依赖**(如果使用 Python 脚本):
```bash
pip install -r requirements.txt
```
3. 在项目目录下安装 **Node 依赖**(如果使用 Node + `npm run dev`
```bash
npm install
```
4. 在速创 API 控制台获取你的接口密钥key
5.`config_nano_banana.json` 中直接填写密钥、默认提示词,以及可选的参考图 URL推荐文件已在项目根目录创建
```json
{
"api_key": "在这里填写你的速创API密钥",
"prompt": "在这里填写默认提示词(可留空,留空则运行时输入或用命令行参数覆盖)",
"size": "1K 或 2K 或 4K可选",
"reference_urls": [
"https://你的参考图1.png",
"https://你的参考图2.jpg"
]
}
```
6. 或将密钥配置到环境变量:
```bash
setx WUYIN_API_KEY "你的密钥"
```
重新打开终端后生效。
也可以在运行 Python 脚本时通过 `--api-key` 参数传入,或用 `-p/--prompt` 临时覆盖配置文件中的提示词。
### Cloudflare R2 图床(可选,仅 Node 版本)
若希望将 `01` 目录的参考图先上传到 **Cloudflare R2**,用公网 URL 作为生图参考(并在每次生图结束后自动删除当次上传的图片),可在 `config_nano_banana.json` 中增加 R2 配置:
```json
{
"api_key": "你的速创API密钥",
"prompt": "默认提示词",
"r2_account_id": "你的 Cloudflare 账户 ID",
"r2_access_key_id": "R2 API 的 Access Key ID",
"r2_secret_access_key": "R2 API 的 Secret Access Key",
"r2_bucket": "桶名称",
"r2_public_url": "https://pub-xxxx.r2.dev"
}
```
- **r2_account_id**Cloudflare 账户 IDDashboard 右侧或 R2 概览页)。
- **r2_access_key_id / r2_secret_access_key**:在 [Cloudflare Dashboard → R2 → Manage R2 API Tokens](https://dash.cloudflare.com/?to=/:account/r2/api-tokens) 创建。
- **r2_bucket**R2 桶名称。
- **r2_public_url**:桶的公开访问地址。需在 R2 桶设置中开启 **Public access** 并绑定 R2.dev 子域或自定义域名,例如 `https://pub-xxxx.r2.dev`(不要以 `/` 结尾)。
配置完成后,运行 `npm run dev` 时会自动把 `01` 中的图片上传到 R2、用返回的 URL 作为参考图请求生图,并在生图流程结束后删除本次上传的 R2 对象。**不配置 R2 时**,脚本仍使用原有逻辑:将 `01` 中的图片转为 base64 直接提交。
## 目录说明
- `01`:参考图目录(可自行创建)。把你希望作为参考的图片放到这里(支持 `.jpg/.jpeg/.png/.webp/.bmp/.gif`)。若配置了 **Cloudflare R2 图床**,脚本会将本目录图片上传到 R2 并以其 URL 作为生图参考,生图结束后自动删除本次上传的文件。
- `save`:生成图片保存目录(脚本会自动创建)。
- `nano_banana_client.py`Python 主脚本。
- `nano_banana_client.js`Node 主脚本,配合 `npm run dev` 使用。
- `package.json`Node 项目配置(内置 `dev` 脚本)。
## 使用方式Python
在项目根目录(`nano_banana_client.py` 所在目录)打开终端,执行:
```bash
python nano_banana_client.py -p "你的提示词"
```
常用参数示例:
- 指定提示词:
```bash
python nano_banana_client.py -p "一只坐在阳台上的橘猫写实风格4k 高清"
```
- 指定尺寸与比例:
```bash
python nano_banana_client.py -p "科幻城市夜景" --size 4K --aspect-ratio 16:9
```
- 指定参考图目录与保存目录:
```bash
python nano_banana_client.py -p "保持人物外观一致,换一套商务正装" --input-dir 01 --output-dir save
```
运行后脚本会:
1.`input-dir`(默认 `01`)中读取参考图并转为 base64
2. 调用 `https://api.wuyinkeji.com/api/async/image_nanoBanana2` 创建任务;
3. 根据任务 `id` 调用结果详情接口轮询任务状态;
4. 将返回的图片 URL 下载到 `output-dir`(默认 `save`)。
> 说明Python 脚本里的结果查询接口使用的是通用「结果详情」接口地址,如官方文档有更新,请根据最新文档调整 `RESULT_DETAIL_URL` 常量的值。
## 使用方式Node + npm run dev
1. 确保已经在 `config_nano_banana.json` 中填好:
```json
{
"api_key": "你的速创API密钥",
"prompt": "默认提示词例如一只坐在阳台上的橘猫写实风格4k 高清",
"size": "1K 或 2K 或 4K可选",
"reference_urls": [
"https://你的参考图1.png",
"https://你的参考图2.jpg"
]
}
```
2. 在项目根目录执行:
```bash
npm run dev
```
3. Node 版本脚本的行为:
1.`config_nano_banana.json` 中读取 `api_key``prompt`
2. **若已配置 R2**:将 `01` 目录中的参考图上传到 R2得到公网 URL作为生图参考**未配置 R2**:将 `01` 目录图片转为 base64。再合并配置中的 `reference_urls`
3. 调用 `https://api.wuyinkeji.com/api/async/image_nanoBanana2` 创建任务。
4. 使用 `https://api.wuyinkeji.com/api/async/detail` 和返回的 `id` 轮询任务状态。
5. 将生成图片下载到 `save` 目录;若使用了 R2随后删除本次上传的 R2 参考图。