const BASE_URL = "https://pico.5884.cn";
const API_KEY = "sk-你的API密钥";
async function generateImage(prompt, model = "GEM-3.0", size = "1024x1024") {
const resp = await fetch(`${BASE_URL}/v1/images/generations`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ model, prompt, size }),
});
const data = await resp.json();
if (!resp.ok) throw new Error(data.error?.message || "请求失败");
console.log(`任务已提交: ${data.task_id}`);
return data.task_id;
}
async function pollResult(taskId, timeout = 120000, interval = 3000) {
const start = Date.now();
while (Date.now() - start < timeout) {
const resp = await fetch(
`${BASE_URL}/v1/videos/generations/${taskId}`,
{ headers: { Authorization: `Bearer ${API_KEY}` } }
);
const data = await resp.json();
if (data.status === "success") {
console.log(`✅ 生成完成: ${data.data[0].url}`);
return data.data[0].url;
} else if (data.status === "failed") {
console.error(`❌ 生成失败: ${data.error?.message}`);
return null;
}
console.log(`⏳ ${data.status} ${data.progress || ""}`);
await new Promise((r) => setTimeout(r, interval));
}
console.log("⏰ 超时");
return null;
}
async function main() {
const taskId = await generateImage("赛博朋克城市夜景,霓虹灯倒映在雨后的街道");
const url = await pollResult(taskId);
if (url) {
const resp = await fetch(url);
const fs = await import("fs");
const buffer = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync("output.png", buffer);
console.log("图片已保存到 output.png");
}
}
main().catch(console.error);