// 测试 Seedance 图生视频是否接受 base64 data: URL 作为 image_url。
// 只看 create 返回（200=接受 / 4xx=拒绝），不等完整生成，省额度。
import fs from 'fs'
import path from 'path'

const CONFIG = path.join(process.env.APPDATA, 'Bailongma', 'config.json')
const seed = JSON.parse(fs.readFileSync(CONFIG, 'utf-8')).seedance || {}
const apiKey = String(seed.apiKey || '').trim()
const model = String(seed.model || '').trim() || 'doubao-seedance-2-0-260128'
const baseURL = String(seed.baseURL || '').trim() || 'https://ark.cn-beijing.volces.com/api/v3'

const imgPath = process.argv[2] || 'src/ui/brain-ui/vendor/earth/earth_atmos_2048.jpg'
const abs = path.resolve('D:/claude/BaiLongma', imgPath)
const bytes = fs.readFileSync(abs)
const ext = path.extname(abs).slice(1).toLowerCase().replace('jpg', 'jpeg')
const dataUrl = `data:image/${ext};base64,${bytes.toString('base64')}`
console.log('image    :', imgPath, `(${(bytes.length/1024).toFixed(0)} KB → dataURL ${(dataUrl.length/1024).toFixed(0)} KB)`)

const body = {
  model,
  content: [
    { type: 'text', text: '镜头缓慢拉远，云层流动，电影感' },
    { type: 'image_url', image_url: { url: dataUrl } },
  ],
  ratio: '16:9', resolution: '720p', duration: 5,
}

const res = await fetch(`${baseURL}/contents/generations/tasks`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(60000),
})
const data = await res.json().catch(() => ({}))
console.log('create   : HTTP', res.status)
console.log(JSON.stringify(data, null, 2))
if (res.ok && (data.id || data.task_id)) {
  console.log('\n>>> base64 data: URL 被接受 ✓（task', data.id || data.task_id, '已创建，不等生成）')
} else {
  console.log('\n>>> base64 被拒绝或出错 ✗ —— 看上面 error.message')
}
