search.js
1 import { cli, Strategy } from '@jackwener/opencli/registry'; 2 import { fetchLinuxDoJson } from './feed.js'; 3 cli({ 4 site: 'linux-do', 5 name: 'search', 6 description: '搜索 linux.do', 7 domain: 'linux.do', 8 strategy: Strategy.COOKIE, 9 browser: true, 10 args: [ 11 { name: 'query', required: true, positional: true, help: 'Search query' }, 12 { name: 'limit', type: 'int', default: 20, help: 'Number of results' }, 13 ], 14 columns: ['rank', 'title', 'views', 'likes', 'replies', 'url'], 15 func: async (page, kwargs) => { 16 const query = encodeURIComponent(String(kwargs.query)); 17 const data = await fetchLinuxDoJson(page, `/search.json?q=${query}`); 18 const topics = (data?.topics || []); 19 return topics.slice(0, kwargs.limit).map((t, i) => ({ 20 rank: i + 1, 21 title: t.title, 22 views: t.views, 23 likes: t.like_count, 24 replies: (t.posts_count || 1) - 1, 25 url: 'https://linux.do/t/topic/' + t.id, 26 })); 27 }, 28 });