9b395f5cc3
E2E Headed Chrome / e2e-headed (macos-15) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (ubuntu-latest) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (windows-latest) (push) Has been cancelled
CI / build (macos-latest) (push) Has been cancelled
CI / build (ubuntu-latest) (push) Has been cancelled
CI / build (windows-latest) (push) Has been cancelled
CI / unit-test (push) Has been cancelled
CI / bun-test (push) Has been cancelled
CI / adapter-test (push) Has been cancelled
CI / smoke-test (macos-latest) (push) Has been cancelled
CI / smoke-test (ubuntu-latest) (push) Has been cancelled
Security Audit / audit (push) Has been cancelled
Build Chrome Extension / build (push) Has been cancelled
Trigger Website Rebuild (Docs Updated) / dispatch (push) Has been cancelled
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
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;
|
|
},
|
|
});
|