const crypto = require('crypto');
const API_KEY = 'mk_your_api_key';
const API_SECRET = 'your_api_secret';
const BASE_URL = 'https://aifroi.com/api/v1';
// 生成签名
function generateSignature(method, path) {
const timestamp = Date.now().toString();
const signString = `${method}\n${path}\n${timestamp}\n${API_KEY}`;
const signature = crypto
.createHmac('sha256', API_SECRET)
.update(signString)
.digest('hex');
return { timestamp, signature };
}
// 创建视频任务
async function createVideoTask(data) {
const path = '/api/v1/videos';
const { timestamp, signature } = generateSignature('POST', path);
const response = await fetch(BASE_URL + '/videos', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY,
'X-Timestamp': timestamp,
'X-Signature': signature,
},
body: JSON.stringify(data),
});
return response.json();
}
// 查询任务状态
async function getVideoTask(taskId) {
const path = `/api/v1/videos/${taskId}`;
const { timestamp, signature } = generateSignature('GET', path);
const response = await fetch(BASE_URL + `/videos/${taskId}`, {
headers: {
'X-API-Key': API_KEY,
'X-Timestamp': timestamp,
'X-Signature': signature,
},
});
return response.json();
}
// 使用示例
async function main() {
// 创建任务
const result = await createVideoTask({
title: '产品宣传视频',
imageUrl: 'https://example.com/product.jpg',
duration: 15,
aspectRatio: '9:16',
});
console.log('任务创建成功:', result.data.id);
// 轮询查询状态
let status = 'pending';
while (status === 'pending' || status === 'processing') {
await new Promise(resolve => setTimeout(resolve, 5000));
const task = await getVideoTask(result.data.id);
status = task.data.status;
console.log('当前状态:', status);
}
}
main();