cang-ying/tools/dl-shot1.js
铸渊 ICE-GL-ZY001 a2e5214f03 LL-172-20260707 · cang-ying 仓初始化 · 苍耳+鉴影的干净之家
铸渊 ICE-GL-ZY001
LL-172-20260707
冰朔委托: 新建第 5 子仓, 给苍耳(人类主控) + 鉴影(人格体) 专用
原 guanghulab/video-ai-system/ 东西太多(225 文件) · 找不到 · 乱

迁移:
  ⊢ 16 个核心 .hdlp (VA-GATE / VA-LIGHTHOUSE / VA-BROADCAST / VA-SYSTEM-STATUS 等)
  ⊢ 17 个子目录 (agents/engines/protocols/tasks/tools/assets/knowledge/memory/docs/config/brain/director-brain/experience/feedback/issues/plans/reference-analysis)

排除:
  ⊢ outputs/ (视频产物)
  ⊢ test-input/ test-output/ (测试)
  ⊢ data/ (临时数据)
  ⊢ preview-001/002 (旧产片)
  ⊢ 旧分镜/旧提示词/旧导演编码

后续:
  ⊢ 老仓 guanghulab/video-ai-system/ 改写为已迁出占位
  ⊢ 苍耳+鉴影 写新东西进本仓
  ⊢ GLOBAL-SEARCH 加 cang-ying 仓库

铸渊 ICE-GL-ZY001 · 2026-07-07 D167
冰朔 ICE-GL∞ 主权
2026-07-07 10:20:10 +08:00

43 lines
1.8 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const https = require('https');
const http = require('http');
const VIDEO_URL = 'https://ark-acg-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-2-0/02178127238246100000000000000000000ffffac15e016345dd1.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYWJkZTExNjA1ZDUyNDc3YzhjNTM5OGIyNjBhNDcyOTQ%2F20260612%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20260612T135533Z&X-Tos-Expires=86400&X-Tos-Signature=272274c8f3c603cb08a0f1ee2d2c4f81344802e5c20b34fd7d77d9cfaf45f172&X-Tos-SignedHeaders=host';
const OUT = path.resolve(__dirname, '../outputs/shots/ep01-shot01-v2.mp4');
const dir = path.dirname(OUT);
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
console.log('📥 下载镜1视频...');
const urlObj = new URL(VIDEO_URL);
const transport = urlObj.protocol === 'https:' ? https : http;
const file = fs.createWriteStream(OUT);
transport.get(VIDEO_URL, (res) => {
if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
const redir = res.headers.location.startsWith('http')
? res.headers.location
: `${urlObj.protocol}//${urlObj.host}${res.headers.location}`;
console.log('↪ 跟随重定向...');
const transport2 = new URL(redir).protocol === 'https:' ? https : http;
transport2.get(redir, (res2) => {
res2.pipe(file);
file.on('finish', () => {
const stat = fs.statSync(OUT);
console.log(`✅ 下载完成: ${OUT}`);
console.log(` 文件大小: ${(stat.size / 1024).toFixed(1)} KB`);
});
});
return;
}
res.pipe(file);
file.on('finish', () => {
const stat = fs.statSync(OUT);
console.log(`✅ 下载完成: ${OUT}`);
console.log(` 文件大小: ${(stat.size / 1024).toFixed(1)} KB`);
});
});