import { cli, Strategy } from '@jackwener/opencli/registry';
import { decodeHtmlEntities, getHupuSearchUrl, readHupuSearchData, stripHtml } from './utils.js';
cli({
    site: 'hupu',
    name: 'search',
    access: 'read',
    description: '搜索虎扑帖子 (使用官方API)',
    domain: 'bbs.hupu.com',
    strategy: Strategy.PUBLIC, // 公开API，不需要Cookie
    browser: true,
    args: [
        {
            name: 'query',
            required: true,
            positional: true,
            help: '搜索关键词'
        },
        {
            name: 'page',
            type: 'int',
            default: 1,
            help: '结果页码'
        },
        {
            name: 'limit',
            type: 'int',
            default: 20,
            help: '返回结果数量'
        },
        {
            name: 'forum',
            help: '板块ID过滤 (可选)'
        },
        {
            name: 'sort',
            default: 'general',
            help: '排序方式: general/createtime/replytime/light/reply'
        }
    ],
    columns: ['rank', 'tid', 'title', 'author', 'replies', 'lights', 'forum', 'url'],
    func: async (page, kwargs) => {
        const { query, page: pageNum = 1, limit = 20, forum, sort = 'general' } = kwargs;
        const searchUrl = getHupuSearchUrl(query, pageNum, forum, sort);
        const data = await readHupuSearchData(page, searchUrl, 'Search Hupu threads');
        // 提取搜索结果
        const results = data.searchRes?.data || [];
        // 处理结果：清理HTML标签，解码HTML实体
        const processedResults = results.slice(0, Number(limit)).map((item, index) => ({
            rank: index + 1,
            tid: String(item.id || ''),
            title: decodeHtmlEntities(stripHtml(item.title)),
            author: item.username || '未知用户',
            replies: item.replies || '0',
            lights: item.lights || '0',
            forum: item.forum_name || '未知板块',
            url: `https://bbs.hupu.com/${item.id}.html`
        }));
        return processedResults;
    },
});
