Shell-Scripts/felo/create-case-types.js

116 lines
3.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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();