fix: ctx.auth→ctx.site.auth修复mediabot运行报错
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
// PTTIME 适配脚本
|
// PTTIME 适配脚本
|
||||||
// PTTIME 基于 NexusPHP,但 HTML 结构有差异:
|
// PTTIME 基于 NexusPHP,HTML 结构差异:
|
||||||
// - 搜索页 torrent 表格无 <tbody>,数据行直接 <tr> 下
|
// - 搜索页 torrent 表格无 <tbody>
|
||||||
// - 用户信息在 #info_block > td.bottom.clearfix 中
|
// - 用户信息在 #info_block 中
|
||||||
// - 做种/下载数用 ⬆⬇ emoji 表示
|
// - 做种/下载数用 ⬆⬇ emoji
|
||||||
|
// - 认证字段 ctx.site.auth
|
||||||
|
|
||||||
Map parse(String content, String url) {
|
Map parse(String content, String url) {
|
||||||
def doc = jsoup.parse(content)
|
def doc = jsoup.parse(content)
|
||||||
@@ -15,8 +16,6 @@ Map parse(String content, String url) {
|
|||||||
return [pageName: '未知页面', message: "未配置: ${url}"]
|
return [pageName: '未知页面', message: "未配置: ${url}"]
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 首页 / 用户信息 ──
|
|
||||||
|
|
||||||
private Map parseIndex(doc) {
|
private Map parseIndex(doc) {
|
||||||
def el = utils.selectFirst(doc, '#info_block')
|
def el = utils.selectFirst(doc, '#info_block')
|
||||||
if (!el) return [pageName: '首页', message: '未找到用户信息']
|
if (!el) return [pageName: '首页', message: '未找到用户信息']
|
||||||
@@ -37,11 +36,8 @@ private Map parseIndex(doc) {
|
|||||||
return [pageName: '用户信息', fields: fields]
|
return [pageName: '用户信息', fields: fields]
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 搜索(无 tbody 版本)──
|
|
||||||
|
|
||||||
private Map parseSearch(doc) {
|
private Map parseSearch(doc) {
|
||||||
def rows = []
|
def rows = []
|
||||||
// PTTIME 列表列序: 类别|标题|PTR(dn)|评论(dn)|时间|大小|做种|下载|完成|进度|发布者|行为
|
|
||||||
doc.select('table.torrents tr:has(td.rowfollow):not(:has(.colhead))').each { row ->
|
doc.select('table.torrents tr:has(td.rowfollow):not(:has(.colhead))').each { row ->
|
||||||
def titleEl = utils.selectFirst(row, 'td.embedded a.torrentname_title')
|
def titleEl = utils.selectFirst(row, 'td.embedded a.torrentname_title')
|
||||||
if (!titleEl) return
|
if (!titleEl) return
|
||||||
@@ -63,30 +59,23 @@ private Map parseSearch(doc) {
|
|||||||
return [pageName: '搜索', extracted: rows, message: "共 ${rows.size()} 条"]
|
return [pageName: '搜索', extracted: rows, message: "共 ${rows.size()} 条"]
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 种子详情 ──
|
|
||||||
|
|
||||||
private Map parseDetail(doc) {
|
private Map parseDetail(doc) {
|
||||||
def fields = [:]
|
def fields = [:]
|
||||||
def titleEl = utils.selectFirst(doc, 'a.torrentname_title b, #top h1')
|
def titleEl = utils.selectFirst(doc, 'a.torrentname_title b, #top h1')
|
||||||
fields.title = utils.text(titleEl)
|
fields.title = utils.text(titleEl)
|
||||||
// 描述
|
|
||||||
def descEl = utils.selectFirst(doc, 'td.embedded font[title], #kdescr')
|
def descEl = utils.selectFirst(doc, 'td.embedded font[title], #kdescr')
|
||||||
if (descEl) fields.description = utils.text(descEl).take(200)
|
if (descEl) fields.description = utils.text(descEl).take(200)
|
||||||
return [pageName: '种子详情', fields: fields]
|
return [pageName: '种子详情', fields: fields]
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 签到 ──
|
|
||||||
|
|
||||||
private Map parseSign(doc) {
|
private Map parseSign(doc) {
|
||||||
def t = utils.text(doc.body())
|
def t = utils.text(doc.body())
|
||||||
def matched = t ==~ /.*(签到成功|已签到|重复签到|获得.*魔力值).*/
|
def matched = t ==~ /.*(签到成功|已签到|重复签到|获得.*魔力值).*/
|
||||||
return [pageName: '签到', fields: [result: t.take(200)], message: matched ? '成功' : '未知']
|
return [pageName: '签到', fields: [result: t.take(200)], message: matched ? '成功' : '未知']
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== mediabot 运行时 ====================
|
|
||||||
|
|
||||||
Map sync(PluginContext ctx) {
|
Map sync(PluginContext ctx) {
|
||||||
if (!ctx.site.auth) return [message: "未配置认证", loginRequired: true]
|
if (!ctx.site?.auth) return [message: "未配置认证", loginRequired: true]
|
||||||
try {
|
try {
|
||||||
def conn = ctx.httpGet('/index.php')
|
def conn = ctx.httpGet('/index.php')
|
||||||
def doc = jsoup.parse(conn.body())
|
def doc = jsoup.parse(conn.body())
|
||||||
@@ -109,7 +98,7 @@ Map sync(PluginContext ctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Map sign(PluginContext ctx) {
|
Map sign(PluginContext ctx) {
|
||||||
if (!ctx.site.auth) return [message: "未配置认证", loginRequired: true]
|
if (!ctx.site?.auth) return [message: "未配置认证", loginRequired: true]
|
||||||
try {
|
try {
|
||||||
def conn = ctx.httpGet('/attendance.php')
|
def conn = ctx.httpGet('/attendance.php')
|
||||||
def matched = conn.body() ==~ /.*(签到成功|已签到|重复签到|获得.*魔力值).*/
|
def matched = conn.body() ==~ /.*(签到成功|已签到|重复签到|获得.*魔力值).*/
|
||||||
@@ -118,7 +107,7 @@ Map sign(PluginContext ctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List search(PluginContext ctx, Map params) {
|
List search(PluginContext ctx, Map params) {
|
||||||
if (!ctx.site.auth) return []
|
if (!ctx.site?.auth) return []
|
||||||
try {
|
try {
|
||||||
def keyword = params.keyword ?: ''
|
def keyword = params.keyword ?: ''
|
||||||
def page = (params.page ?: 0) as int
|
def page = (params.page ?: 0) as int
|
||||||
@@ -142,8 +131,6 @@ List search(PluginContext ctx, Map params) {
|
|||||||
} catch (e) { return [] }
|
} catch (e) { return [] }
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 工具 ====================
|
|
||||||
|
|
||||||
private long parseTraffic(double val, String unit) {
|
private long parseTraffic(double val, String unit) {
|
||||||
def m = [B:1,KB:1024,MB:1048576,GB:1073741824,TB:1099511627776]
|
def m = [B:1,KB:1024,MB:1048576,GB:1073741824,TB:1099511627776]
|
||||||
return (val * (m[unit?.toUpperCase()] ?: 1)) as long
|
return (val * (m[unit?.toUpperCase()] ?: 1)) as long
|
||||||
|
|||||||
Reference in New Issue
Block a user