feat: PageKey增加RSS,默认脚本模板增加parseRss方法
This commit is contained in:
@@ -21,6 +21,7 @@ Map parseSync(context) {
|
||||
Map parseSearch(context) { return checkStatus(context) ?: parseSearchPage(Jsoup.parse(context.content)) }
|
||||
Map parseSignIn(context) { return checkStatus(context) ?: parseSignPage(Jsoup.parse(context.content)) }
|
||||
Map parseDownload(context) { return checkStatus(context) ?: parseDownloadPage(context) }
|
||||
Map parseRss(context) { return checkStatus(context) ?: parseRssPage(context) }
|
||||
|
||||
/** 获取资源元数据:搜索 → 详情 → 提取豆瓣链接(Douban 解析由 Java 层负责) */
|
||||
Map parseMetadata(context) {
|
||||
@@ -154,6 +155,14 @@ private Map parseDownloadPage(context) {
|
||||
return [pageName: '下载', matched: false, error: true, status: context.status, message: "非种子文件 response"]
|
||||
}
|
||||
|
||||
// ==================== RSS ====================
|
||||
|
||||
/** RSS 页面解析:默认不做 XML 解析,由 Java 层 parseRssXml 处理。
|
||||
* 站点如需要自定义 RSS 解析,可覆盖此方法返回 items 列表。 */
|
||||
private Map parseRssPage(context) {
|
||||
return [pageName: 'RSS', matched: true, message: 'RSS 内容由 Java 层解析']
|
||||
}
|
||||
|
||||
// ==================== 工具方法 ====================
|
||||
|
||||
/** 从 #info_block 提取原始字段 */
|
||||
|
||||
@@ -10,6 +10,7 @@ public enum PageKey {
|
||||
SIGN_IN("signIn", "签到", "POST"),
|
||||
SEARCH("search", "搜索", "GET"),
|
||||
DOWNLOAD("download", "下载", "GET"),
|
||||
RSS("rss", "RSS", "GET"),
|
||||
// detail 仅供脚本内 context.fetch("detail", ...) 使用,medibo 不直接调用
|
||||
DETAIL("detail", "资源详情", "GET");
|
||||
|
||||
|
||||
@@ -8,10 +8,15 @@ Map parse(String content, String url) {
|
||||
if (url.contains('/torrents.php')) return parseSearch(doc)
|
||||
if (url.contains('/torrents.php?id=')) return parseDetail(doc)
|
||||
if (url.contains('/index.php') && !url.contains('?')) return parseUserInfo(doc)
|
||||
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss()
|
||||
|
||||
return [pageName: '未知页面', message: "未配置: ${url}"]
|
||||
}
|
||||
|
||||
private Map parseRss() {
|
||||
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
|
||||
}
|
||||
|
||||
private Map parseUserInfo(doc) {
|
||||
def fields = [:]
|
||||
def stats = utils.selectFirst(doc, '#userinfo_stats, .user_stats, ul.stats')
|
||||
|
||||
@@ -12,10 +12,15 @@ Map parse(String content, String url) {
|
||||
if (url.contains('/api/member/profile')) return parseProfile(root?.data)
|
||||
if (url.contains('/api/tracker/myPeerStatistics')) return parsePeerStats(root?.data)
|
||||
if (url.contains('/api/torrent/search')) return parseSearch(root?.data?.data ?: [])
|
||||
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss()
|
||||
|
||||
return [pageName: '未知接口', message: "未配置: ${url}"]
|
||||
}
|
||||
|
||||
private Map parseRss() {
|
||||
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
|
||||
}
|
||||
|
||||
private Map parseProfile(d) {
|
||||
if (!d) return [pageName: '用户信息', message: 'data 为空']
|
||||
return [pageName: '用户信息', fields: [
|
||||
|
||||
@@ -9,10 +9,15 @@ Map parse(String content, String url) {
|
||||
if (url.contains('/attendance.php')) return parseSign(doc)
|
||||
if (url.contains('/index.php') && !url.contains('?')) return parseUserInfo(doc)
|
||||
if (url.contains('/usercp.php')) return parseUserPanel(doc)
|
||||
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss(doc)
|
||||
|
||||
return [pageName: '未知页面', message: "未配置: ${url}"]
|
||||
}
|
||||
|
||||
private Map parseRss(doc) {
|
||||
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
|
||||
}
|
||||
|
||||
private Map parseUserInfo(doc) {
|
||||
def fields = [:]
|
||||
def el = doc.selectFirst('#info_block, td.bottom.clearfix, .userbar')
|
||||
|
||||
@@ -16,9 +16,15 @@ Map parse(String content, String url) {
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss()
|
||||
|
||||
return [pageName: '未知页面', message: "未配置: ${url}"]
|
||||
}
|
||||
|
||||
private Map parseRss() {
|
||||
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
|
||||
}
|
||||
|
||||
private Map parseApiData(d, url) {
|
||||
if (url.contains('/user') || url.contains('/profile'))
|
||||
return [pageName: '用户', fields: [username: d?.username, uploaded: d?.uploaded?.toString(), downloaded: d?.downloaded?.toString()]]
|
||||
|
||||
Reference in New Issue
Block a user