stats.js
1 import { cli, Strategy } from '@jackwener/opencli/registry'; 2 import { browserFetch } from './_shared/browser-fetch.js'; 3 cli({ 4 site: 'douyin', 5 name: 'stats', 6 description: '作品数据分析', 7 domain: 'creator.douyin.com', 8 strategy: Strategy.COOKIE, 9 args: [ 10 { name: 'aweme_id', required: true, positional: true }, 11 ], 12 columns: ['metric', 'value'], 13 func: async (page, kwargs) => { 14 const now = Math.floor(Date.now() / 1000); 15 const sevenDaysAgo = now - 7 * 86400; 16 const url = 'https://creator.douyin.com/janus/douyin/creator/data/item_analysis/metrics_trend'; 17 const body = { 18 aweme_id: kwargs.aweme_id, 19 start_time: sevenDaysAgo, 20 end_time: now, 21 metrics: ['play_count', 'like_count', 'comment_count', 'share_count'], 22 }; 23 const res = await browserFetch(page, 'POST', url, { body }); 24 const data = res.data ?? {}; 25 return Object.entries(data).map(([metric, value]) => ({ metric, value })); 26 }, 27 });