From e80ae24d94ef509f4d24b95a6ed8d7282be660ea Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Mon, 6 Jul 2026 02:01:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=8E=BB=E6=8E=89switch=E5=88=86?= =?UTF-8?q?=E5=8F=91mediabot=E6=8C=89pageKey=E7=9B=B4=E8=B0=83parseSync/pa?= =?UTF-8?q?rseSearch=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/nexusphp-default.groovy | 38 +++++++++++++++++------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/nexusphp-default.groovy b/docs/nexusphp-default.groovy index 2b19c9e..52eee47 100644 --- a/docs/nexusphp-default.groovy +++ b/docs/nexusphp-default.groovy @@ -2,29 +2,27 @@ // 适用: carpt / cbg / ptfans / ptskit / hdfans / cyanbug / qingwa 等 // medibo 负责 HTTP,脚本只做解析 + 状态码判断 -// ==================== medibo 入口 (统一分发) ==================== +// ==================== medibo 入口 ==================== +// medibo 根据 pageKey 调用对应方法,如 parseSync(context) +// 约定方法名: parse + pageKey 首字母大写 -Map parse(context) { - if (context.status != 200) { - return switch(context.status) { - case 302 -> [matched: false, redirect: context.headers?.Location ?: ''] - case 403 -> [matched: false, banned: true, message: 'IP被禁'] - case 429 -> [matched: false, rateLimited: true] - default -> [matched: false, error: true, status: context.status, message: "HTTP ${context.status}"] - } - } - return switch(context.pageKey) { - case 'sync' -> parseUserProfile(Jsoup.parse(context.content)) - case 'search' -> parseSearchPage(Jsoup.parse(context.content)) - case 'detail' -> parseDetailPage(Jsoup.parse(context.content)) - case 'signIn' -> parseSignPage(Jsoup.parse(context.content)) - case 'download'-> parseDownload(context) - default -> [pageName: context.pageKey, message: '未实现'] +Map parseSync(context) { return checkStatus(context) ?: parseUserProfile(Jsoup.parse(context.content)) } +Map parseSearch(context) { return checkStatus(context) ?: parseSearchPage(Jsoup.parse(context.content)) } +Map parseDetail(context) { return checkStatus(context) ?: parseDetailPage(Jsoup.parse(context.content)) } +Map parseSignIn(context) { return checkStatus(context) ?: parseSignPage(Jsoup.parse(context.content)) } +Map parseDownload(context) { return checkStatus(context) ?: parseDownloadPage(context) } + +/** 通用状态码检查,非 200 直接返回错误 */ +private Map checkStatus(context) { + if (context.status == 200) return null + return switch(context.status) { + case 302 -> [matched: false, redirect: context.headers?.Location ?: ''] + case 403 -> [matched: false, banned: true, message: 'IP被禁'] + case 429 -> [matched: false, rateLimited: true] + default -> [matched: false, error: true, status: context.status, message: "HTTP ${context.status}"] } } -// ==================== 用户信息 / 同步 ==================== - private Map parseUserProfile(doc) { def fields = extractUserInfo(doc) if (fields.isEmpty()) return [pageName: '用户信息', matched: false, message: '未提取到数据'] @@ -103,7 +101,7 @@ private Map parseSignPage(doc) { // ==================== 下载 ==================== -private Map parseDownload(context) { +private Map parseDownloadPage(context) { // 下载页通常是重定向到种子文件 if (context.status == 302 || context.status == 301) { return [pageName: '下载', matched: false, redirect: context.headers?.Location ?: '']