Files
ObsidianHome/百家/.cdp/parse.mjs
T

44 lines
1.6 KiB
JavaScript

// 解析抓到的接口数据
import fs from 'node:fs';
const cap = JSON.parse(fs.readFileSync('out/analysis-capture.json', 'utf8'));
const find = (kw) => cap.filter(c => c.url.includes(kw));
const out = {};
for (const c of cap) {
if (c.url.includes('appStatisticV3')) out.appStatistic = JSON.parse(c.body);
else if (c.url.includes('getauthorsubmission')) out.submission = JSON.parse(c.body);
else if (c.url.includes('authorPublishStatistic')) out.publishStat = JSON.parse(c.body);
else if (c.url.includes('getauthordiagnosis')) out.diagnosis = (out.diagnosis || []).concat([JSON.parse(c.body)]);
}
fs.writeFileSync('out/parsed.json', JSON.stringify(out, null, 2), 'utf8');
// 打印结构摘要(ASCII-safe 键名,值可能含中文,写到文件里看)
function shape(o, depth = 0, prefix = '') {
const lines = [];
if (depth > 4) return lines;
if (Array.isArray(o)) {
lines.push(`${prefix}[array len=${o.length}]`);
if (o.length) lines.push(...shape(o[0], depth + 1, prefix + ' [0].'));
} else if (o && typeof o === 'object') {
for (const k of Object.keys(o).slice(0, 30)) {
const v = o[k];
if (v && typeof v === 'object') {
lines.push(`${prefix}${k}: ${Array.isArray(v) ? 'array(' + v.length + ')' : 'obj'}`);
lines.push(...shape(v, depth + 1, prefix + ' '));
} else {
lines.push(`${prefix}${k} = ${String(v).slice(0, 60)}`);
}
}
}
return lines;
}
for (const [k, v] of Object.entries(out)) {
const arr = Array.isArray(v) ? v[0] : v;
console.log('=== ' + k + ' ===');
console.log(shape(arr).slice(0, 60).join('\n'));
console.log('');
}