douyin-preference-update.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env node
  2. const path = require('path');
  3. const { okResult } = require('../core/result-envelope');
  4. const { updateTrendMemory } = require('../features/douyin-trend/preference-memory');
  5. function parseArgs(argv) {
  6. const args = {};
  7. const setArg = (key, value) => {
  8. args[key] = value;
  9. if (key.includes('-')) {
  10. args[key.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())] = value;
  11. }
  12. };
  13. for (let i = 0; i < argv.length; i++) {
  14. const token = argv[i];
  15. if (!token.startsWith('--')) continue;
  16. const eq = token.indexOf('=');
  17. if (eq >= 0) {
  18. setArg(token.slice(2, eq), token.slice(eq + 1));
  19. continue;
  20. }
  21. const key = token.slice(2);
  22. const next = argv[i + 1];
  23. if (next && !next.startsWith('--')) {
  24. setArg(key, next);
  25. i++;
  26. } else {
  27. setArg(key, true);
  28. }
  29. }
  30. return args;
  31. }
  32. async function updateDouyinPreference(input = {}) {
  33. const result = updateTrendMemory(input);
  34. return okResult({
  35. status: 'ok',
  36. assistantMessage: [
  37. '# 抖音偏好记忆已更新',
  38. '',
  39. '已把你这次的反馈写入偏好记忆,下一轮抖音趋势情报会自动参考。',
  40. '',
  41. `memory: ${path.relative(process.cwd(), result.memoryPath)}`
  42. ].join('\n'),
  43. summary: {
  44. memoryPath: result.memoryPath,
  45. preferredDirections: result.memory.preferredDirections,
  46. blockedDirections: result.memory.blockedDirections,
  47. focusModes: result.memory.focusModes
  48. },
  49. data: result
  50. });
  51. }
  52. async function main() {
  53. const args = parseArgs(process.argv.slice(2));
  54. const result = await updateDouyinPreference(args);
  55. console.log(JSON.stringify(result, null, 2));
  56. }
  57. if (require.main === module) {
  58. main().catch(error => {
  59. console.error(JSON.stringify({ status: 'error', message: error.message }, null, 2));
  60. process.exit(1);
  61. });
  62. }
  63. module.exports = {
  64. updateDouyinPreference
  65. };