| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // 列 OSS audio/ 最近 N 个文件,带时间戳和稳定/UUID 标记
- const fs = require('fs');
- const path = require('path');
- const envTxt = fs.readFileSync(path.join(__dirname, '..', '..', 'server', '.env.production'), 'utf8');
- const env = {};
- for (const line of envTxt.split(/\r?\n/)) {
- const m = line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)\s*$/);
- if (m) env[m[1]] = m[2].replace(/^["']|["']$/g, '');
- }
- const OSS = require(path.join(__dirname, '..', '..', 'server', 'node_modules', 'ali-oss'));
- const c = new OSS({
- accessKeyId: env.OSS_ACCESS_KEY_ID,
- accessKeySecret: env.OSS_ACCESS_KEY_SECRET,
- bucket: 'rrbrr-book-audio',
- endpoint: 'oss-cn-shanghai.aliyuncs.com',
- secure: true,
- });
- (async () => {
- const all = [];
- let marker = null;
- do {
- const r = await c.list({ prefix: 'audio/', 'max-keys': 1000, marker });
- all.push(...(r.objects || []));
- marker = r.nextMarker || null;
- } while (marker);
- // 按 lastModified 倒序
- all.sort((a, b) => new Date(b.lastModified) - new Date(a.lastModified));
- console.log(`总文件数: ${all.length}\n`);
- console.log('=== 最近 25 个文件 ===');
- for (const o of all.slice(0, 25)) {
- const isMergedPath = o.name.includes('/merged/chapter/') || o.name.includes('/audio/chapter/');
- const isMergedMp3 = o.name.includes('_merged.mp3');
- const tag = isMergedPath ? '✅ 稳定路径' : (isMergedMp3 ? '⚠️ UUID_merged (垃圾)' : ' UUID (TTS)');
- const mb = (o.size / 1024 / 1024).toFixed(1).padStart(6);
- console.log(`${o.lastModified.slice(0, 19)} ${mb} MB ${tag.padEnd(22)} ${o.name}`);
- }
- })();
|