feat: 脚本parseRss改为实际解析RSS XML,返回items列表

This commit is contained in:
mediabot-pt
2026-07-06 09:30:35 +08:00
parent f0cc2ad4c0
commit 722b4fcf1d
5 changed files with 71 additions and 15 deletions

View File

@@ -8,13 +8,13 @@ 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()
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss(content)
return [pageName: '未知页面', message: "未配置: ${url}"]
}
private Map parseRss() {
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
private Map parseRss(String xml) {
return [pageName: 'RSS', matched: true, message: 'RSS 内容由 Java 层解析']
}
private Map parseUserInfo(doc) {

View File

@@ -12,13 +12,13 @@ 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()
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss(content)
return [pageName: '未知接口', message: "未配置: ${url}"]
}
private Map parseRss() {
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
private Map parseRss(String xml) {
return [pageName: 'RSS', matched: true, message: 'RSS 内容由 Java 层解析']
}
private Map parseProfile(d) {

View File

@@ -9,13 +9,40 @@ 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)
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss(content)
return [pageName: '未知页面', message: "未配置: ${url}"]
}
private Map parseRss(doc) {
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
private Map parseRss(String xml) {
if (!xml) return [pageName: 'RSS', matched: false, message: '无内容']
try {
def rss = new XmlSlurper().parseText(xml)
def items = []
rss.channel.item.each { item ->
def dlUrl = ''
long size = 0
def enclosure = item.enclosure
if (enclosure && enclosure.@url) {
dlUrl = enclosure.@url.text()
try { size = enclosure.@length.toLong() } catch (e) {}
}
if (!dlUrl) dlUrl = item.link.text()
items << [
title: item.title.text(),
detailUrl: item.link.text(),
downloadUrl: dlUrl,
torrentUrl: dlUrl,
size: size,
publishDate: item.pubDate.text(),
category: item.category.text(),
author: item.author.text(),
]
}
return [pageName: 'RSS', matched: !items.isEmpty(), items: items]
} catch (e) {
return [pageName: 'RSS', matched: false, message: "解析失败: ${e.message}"]
}
}
private Map parseUserInfo(doc) {

View File

@@ -16,13 +16,13 @@ Map parse(String content, String url) {
} catch (e) {}
}
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss()
if (url.contains('/torrentrss.php') || url.contains('/rss')) return parseRss(content)
return [pageName: '未知页面', message: "未配置: ${url}"]
}
private Map parseRss() {
return [pageName: 'RSS', message: 'RSS 内容由 Java 层解析']
private Map parseRss(String xml) {
return [pageName: 'RSS', matched: true, message: 'RSS 内容由 Java 层解析']
}
private Map parseApiData(d, url) {