#!/usr/bin/env node const path = require('path'); const { okResult } = require('../core/result-envelope'); const { updateTrendMemory } = require('../features/douyin-trend/preference-memory'); function parseArgs(argv) { const args = {}; const setArg = (key, value) => { args[key] = value; if (key.includes('-')) { args[key.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())] = value; } }; for (let i = 0; i < argv.length; i++) { const token = argv[i]; if (!token.startsWith('--')) continue; const eq = token.indexOf('='); if (eq >= 0) { setArg(token.slice(2, eq), token.slice(eq + 1)); continue; } const key = token.slice(2); const next = argv[i + 1]; if (next && !next.startsWith('--')) { setArg(key, next); i++; } else { setArg(key, true); } } return args; } async function updateDouyinPreference(input = {}) { const result = updateTrendMemory(input); return okResult({ status: 'ok', assistantMessage: [ '# 抖音偏好记忆已更新', '', '已把你这次的反馈写入偏好记忆,下一轮抖音趋势情报会自动参考。', '', `memory: ${path.relative(process.cwd(), result.memoryPath)}` ].join('\n'), summary: { memoryPath: result.memoryPath, preferredDirections: result.memory.preferredDirections, blockedDirections: result.memory.blockedDirections, focusModes: result.memory.focusModes }, data: result }); } async function main() { const args = parseArgs(process.argv.slice(2)); const result = await updateDouyinPreference(args); console.log(JSON.stringify(result, null, 2)); } if (require.main === module) { main().catch(error => { console.error(JSON.stringify({ status: 'error', message: error.message }, null, 2)); process.exit(1); }); } module.exports = { updateDouyinPreference };