116 lines
3.5 KiB
JavaScript
116 lines
3.5 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
const https = require('https');
|
||
const url = require('url');
|
||
|
||
const AUTHORIZATION = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyMiJ9.2XLrkX3Fryw4c1Mn3Peqsp8JOMMOu25GP7yxl0gsIG4w9JjfUzlsharGdm8PDusK1fvwMRs5rc1p6LJe0cSg4w';
|
||
const API_URL = 'https://bops.felo.ai/api/home/case/type/add';
|
||
|
||
const data = [
|
||
{
|
||
name: 'Logo 设计',
|
||
skill_id: 'logo-and-branding',
|
||
case_prompt: '请设计一个Logo,品牌名称是:[输入您的品牌名],所属行业是:[如:科技/餐饮/服装]。',
|
||
case_type: 'logo_design',
|
||
},
|
||
{
|
||
name: '品牌周边',
|
||
skill_id: 'logo-and-branding',
|
||
case_prompt: '基于我们的 Logo 设计一套品牌周边,用在[办公/生活/服饰]上',
|
||
case_type: 'brand_merchandise',
|
||
},
|
||
{
|
||
name: '亚马逊套图',
|
||
skill_id: 'ecommerce-product-image',
|
||
case_prompt: '用 [$name$] 的视觉风格,生成亚马逊 7 张套图(白底主图 + 信息图 + 生活场景图 + 细节图 + 多角度图),我的产品卖点是:[输入产品卖点]',
|
||
case_type: 'amazon_product_images',
|
||
},
|
||
{
|
||
name: '电商 Banner',
|
||
skill_id: 'ecommerce-product-image',
|
||
case_prompt: '生成宽幅 Banner 背景图。商品放在[左侧/右侧],卖点是:[输入产品卖点]',
|
||
case_type: 'ecommerce_banner',
|
||
},
|
||
{
|
||
name: '名片',
|
||
skill_id: 'marketing-materials',
|
||
case_prompt: '设计一套名片,我的要求是:[输入所属行业/职位/风格偏好]',
|
||
case_type: 'business_card',
|
||
},
|
||
{
|
||
name: '海报',
|
||
skill_id: 'marketing-materials',
|
||
case_prompt: '设计一张海报,我的要求是:[输入活动主题/核心卖点]',
|
||
case_type: 'poster',
|
||
},
|
||
{
|
||
name: '折页',
|
||
skill_id: 'marketing-materials',
|
||
case_prompt: '设计成一份[三折页宣传册/高级画册],用作活动宣传,活动基础信息为:[输入活动基础信息]',
|
||
case_type: 'brochure',
|
||
},
|
||
];
|
||
|
||
function post(payload, index) {
|
||
return new Promise((resolve, reject) => {
|
||
const body = JSON.stringify({
|
||
case_prompt: payload.case_prompt,
|
||
case_type: payload.case_type,
|
||
name: payload.name,
|
||
skill_id: payload.skill_id,
|
||
sort: 0,
|
||
});
|
||
|
||
const parsed = new url.URL(API_URL);
|
||
const options = {
|
||
hostname: parsed.hostname,
|
||
path: parsed.pathname,
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'Content-Length': Buffer.byteLength(body),
|
||
'Authorization': AUTHORIZATION,
|
||
},
|
||
};
|
||
|
||
const req = https.request(options, (res) => {
|
||
let data = '';
|
||
res.on('data', (chunk) => (data += chunk));
|
||
res.on('end', () => {
|
||
try {
|
||
resolve({ status: res.statusCode, body: JSON.parse(data) });
|
||
} catch {
|
||
resolve({ status: res.statusCode, body: data });
|
||
}
|
||
});
|
||
});
|
||
|
||
req.on('error', reject);
|
||
req.write(body);
|
||
req.end();
|
||
});
|
||
}
|
||
|
||
async function main() {
|
||
console.log(`开始提交 ${data.length} 条分类数据...\n`);
|
||
|
||
for (let i = 0; i < data.length; i++) {
|
||
const item = data[i];
|
||
process.stdout.write(`[${i + 1}/${data.length}] ${item.name} (${item.case_type}) ... `);
|
||
try {
|
||
const result = await post(item, i + 1);
|
||
if (result.status >= 200 && result.status < 300) {
|
||
console.log(`✓ ${result.status}`);
|
||
} else {
|
||
console.log(`✗ ${result.status}: ${JSON.stringify(result.body)}`);
|
||
}
|
||
} catch (err) {
|
||
console.log(`✗ 请求失败: ${err.message}`);
|
||
}
|
||
}
|
||
|
||
console.log('\n完成。');
|
||
}
|
||
|
||
main();
|