Skip to content

Commit

Permalink
refactor(Cili): 重构磁力搜索功能
Browse files Browse the repository at this point in the history
- 优化代码结构,提高可读性和可维护性
- 添加错误日志记录,便于调试和排查问题
- 使用 forward 消息格式,提升用户体验
- 引入 common 和 segment 模块,丰富功能
- 添加 logger 模块,用于错误日志输出
  • Loading branch information
MapleLeaf2007 committed Nov 22, 2024
1 parent b737090 commit 791fa98
Showing 1 changed file with 25 additions and 27 deletions.
52 changes: 25 additions & 27 deletions src/apps/Cili.ts
Original file line number Diff line number Diff line change
@@ -1,52 +1,50 @@
import { karin } from 'node-karin'

import { karin, common,segment,logger } from 'node-karin'
export const magnetSearch = karin.command(/^#?磁力搜索\s*(.+)/, async (e) => {
const searchQuery = e.msg.match(/^#?磁力搜索\s*(.+)$/)?.[1]
const searchQuery = e.msg.match(/^#?磁力搜索\s*(.+)$/)?.[1];
if (!searchQuery) {
await e.reply('请输入有效的搜索关键词!', { at: true, recallMsg: 0, reply: true })
return true
await e.reply('请输入有效的搜索关键词!', { at: true, recallMsg: 0, reply: true });
return true;
}

const url = `https://cili.site/search?q=${encodeURIComponent(searchQuery)}`
const url = `https://cili.site/search?q=${encodeURIComponent(searchQuery)}`;
try {
const response = await fetch(url)
const response = await fetch(url);
if (!response.ok) {
throw new Error(`请求失败,状态码:${response.status}`)
throw new Error(`请求失败,状态码:${response.status}`);
}

const data = await response.text()
const results: { title: string; size: string; link: string }[] = []
const data = await response.text();
const results: { title: string; size: string; link: string }[] = [];
const regex =
/<tr>[\s\S]*?<td>[\s\S]*?<a href="([^"]+)">[\s\S]*?<p class="sample">([^<]+)<\/p>[\s\S]*?<\/a>[\s\S]*?<\/td>[\s\S]*?<td class="td-size">([^<]+)<\/td>/g
/<tr>[\s\S]*?<td>[\s\S]*?<a href="([^"]+)">[\s\S]*?<p class="sample">([^<]+)<\/p>[\s\S]*?<\/a>[\s\S]*?<\/td>[\s\S]*?<td class="td-size">([^<]+)<\/td>/g;

let match: RegExpExecArray | null
let match: RegExpExecArray | null;
while ((match = regex.exec(data)) !== null) {
const link = `https://cili.site${match[1]}`
const title = match[2].trim()
const size = match[3].trim()
results.push({ title, size, link })
const link = `https://cili.site${match[1]}`;
const title = match[2].trim();
const size = match[3].trim();
results.push({ title, size, link });
}

if (results.length > 0) {
const forwardMessage = results
.map(
(row) =>
`名称: ${row.title}\n文件大小: ${row.size}\n下载链接: ${row.link}`
)
.join('\n\n')
const forward = results.map((row) =>
segment.text(`名称: ${row.title}\n文件大小: ${row.size}\n下载链接: ${row.link}`)
);

await e.reply(forwardMessage)
const msg = common.makeForward(forward, e.self_id, e.bot.account.name);
await e.bot.sendForwardMessage(e.contact, msg);
} else {
await e.reply('未找到匹配的资源。', { at: true, recallMsg: 0, reply: true })
await e.reply('未找到匹配的资源。', { at: true, recallMsg: 0, reply: true });
}
} catch (error) {
await e.reply('搜索过程中发生错误,请稍后再试。', { at: true, recallMsg: 0, reply: true })
await e.reply('搜索过程中发生错误,请稍后再试。', { at: true, recallMsg: 0, reply: true });
logger.error(error);
}

return true
return true;
}, {
priority: 9999,
log: true,
name: '磁力搜索',
permission: 'all',
})
});

0 comments on commit 791fa98

Please sign in to comment.