262 lines
7.5 KiB
JSON
262 lines
7.5 KiB
JSON
{
|
|
"$comment": "W1-3b 手写观众定义(按 MP indexer schema;仅对 testkit mock 验证)。深合并到 MovieClaw v0.27.0 转换结果之上,本文件的值优先,MovieClaw 值只补空。 umt.detail.fields=null:保留 W1-3b rowhead 详情模型(已对 mock 验证),不采用 MovieClaw 默认逐字段选择器。 DET-2(2026-09-30 真实账号核对列表页 1 次 + 详情页 2 次):列表副标题取 span.torrent-subtitle-text(span.torrent-subtitle-line 里先是标签);详情 h1 促销是 font.free / font.halfdown 等 + 「剩余时间」span[title](umt.detail.promo);做种 / 下载 / 完成数在基本信息行右侧 #seeders / #leechers / a[title=完成](没有「同伴」行);种子 Hash 在 #copyTorrentHashLink[data-hash];上传者在 span.torrent-uploader-wrap(匿名为「匿名」);简介开头的站点声明 #ad_torrentdetail 去掉;文件清单不在页面上(点击「N个文件」后由 common.js 的 toggleFileList AJAX 加载,端点未核对),暂不另发请求。 ID-3:列表行的豆瓣链接(评分徽标 a[href*=douban.com/subject/],DET-2 列表样本 rl-audiences-list 核对)抽成 torrents.fields.doubanid(UMT 扩展字段,MP 不读)。",
|
|
"id": "audiences",
|
|
"name": "观众",
|
|
"domain": "https://audiences.me/",
|
|
"encoding": "UTF-8",
|
|
"public": false,
|
|
"proxy": false,
|
|
"language": "zh",
|
|
"result_num": 100,
|
|
"timeout": 30,
|
|
"search": {
|
|
"paths": [
|
|
{
|
|
"path": "torrents.php",
|
|
"type": "all"
|
|
}
|
|
],
|
|
"params": {
|
|
"search": "{keyword}",
|
|
"search_area": 4
|
|
}
|
|
},
|
|
"batch": {
|
|
"delimiter": " ",
|
|
"space_replace": "_"
|
|
},
|
|
"browse": {
|
|
"path": "torrents.php?page={page}",
|
|
"start": 0
|
|
},
|
|
"category": {
|
|
"movie": [
|
|
{
|
|
"id": "401",
|
|
"cat": "Movies",
|
|
"desc": "电影"
|
|
}
|
|
],
|
|
"tv": [
|
|
{
|
|
"id": "402",
|
|
"cat": "TV Series",
|
|
"desc": "剧集"
|
|
},
|
|
{
|
|
"id": "403",
|
|
"cat": "TV Shows",
|
|
"desc": "综艺"
|
|
}
|
|
],
|
|
"music": []
|
|
},
|
|
"torrents": {
|
|
"list": {
|
|
"selector": "table.torrents > tbody > tr:has(table.torrentname), table.torrents > tr:has(table.torrentname)"
|
|
},
|
|
"fields": {
|
|
"title_default": {
|
|
"selector": "a[href*=\"details.php?id=\"]"
|
|
},
|
|
"title_optional": {
|
|
"selector": "a[title][href*=\"details.php?id=\"]",
|
|
"attribute": "title"
|
|
},
|
|
"title": {
|
|
"text": "{% if fields['title_optional'] %}{{ fields['title_optional'] }}{% else %}{{ fields['title_default'] }}{% endif %}"
|
|
},
|
|
"details": {
|
|
"selector": "a[href*=\"details.php?id=\"]",
|
|
"attribute": "href"
|
|
},
|
|
"download": {
|
|
"selector": "a[href*=\"download.php?id=\"]",
|
|
"attribute": "href"
|
|
},
|
|
"imdbid": {
|
|
"selector": "a[href*=\"imdb.com/title/tt\"]",
|
|
"attribute": "href",
|
|
"filters": [
|
|
{
|
|
"name": "re_search",
|
|
"args": ["tt\\d+", 0]
|
|
}
|
|
]
|
|
},
|
|
"doubanid": {
|
|
"selector": "a[href*=\"douban.com/subject/\"]",
|
|
"attribute": "href",
|
|
"filters": [
|
|
{
|
|
"name": "re_search",
|
|
"args": ["subject/(\\d+)", 1]
|
|
}
|
|
]
|
|
},
|
|
"date_elapsed": {
|
|
"selector": "td:nth-child(4) > span"
|
|
},
|
|
"date_added": {
|
|
"selector": "td:nth-child(4) > span",
|
|
"attribute": "title"
|
|
},
|
|
"date": {
|
|
"text": "{% if fields['date_elapsed'] or fields['date_added'] %}{{ fields['date_added'] if fields['date_added'] else fields['date_elapsed'] }}{% else %}now{% endif %}",
|
|
"filters": [
|
|
{
|
|
"name": "dateparse",
|
|
"args": "%Y-%m-%d %H:%M:%S"
|
|
}
|
|
]
|
|
},
|
|
"size": {
|
|
"selector": "td:nth-child(5)"
|
|
},
|
|
"seeders": {
|
|
"selector": "td:nth-child(6)"
|
|
},
|
|
"leechers": {
|
|
"selector": "td:nth-child(7)"
|
|
},
|
|
"grabs": {
|
|
"selector": "td:nth-child(8)"
|
|
},
|
|
"downloadvolumefactor": {
|
|
"case": {
|
|
"img.pro_free": 0,
|
|
"img.pro_free2up": 0,
|
|
"img.pro_50pctdown": 0.5,
|
|
"img.pro_50pctdown2up": 0.5,
|
|
"img.pro_30pctdown": 0.3,
|
|
"*": 1
|
|
}
|
|
},
|
|
"uploadvolumefactor": {
|
|
"case": {
|
|
"img.pro_50pctdown2up": 2,
|
|
"img.pro_free2up": 2,
|
|
"img.pro_2up": 2,
|
|
"*": 1
|
|
}
|
|
},
|
|
"freedate": {
|
|
"selector": "img[class^=\"pro_\"]",
|
|
"attribute": "title",
|
|
"filters": [
|
|
{
|
|
"name": "re_search",
|
|
"args": ["\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}", 0]
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"selector": "span.torrent-subtitle-text"
|
|
},
|
|
"labels": {
|
|
"selector": "span.tags"
|
|
},
|
|
"category": {
|
|
"selector": "a[href*=\"?cat=\"]",
|
|
"attribute": "href",
|
|
"filters": [
|
|
{
|
|
"name": "querystring",
|
|
"args": "cat"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"umt": {
|
|
"version": "[email protected]",
|
|
"kind": "nexusphp",
|
|
"displayName": "观众",
|
|
"timezone": "+08:00",
|
|
"rateLimit": {
|
|
"minIntervalMs": 3000,
|
|
"burst": 1
|
|
},
|
|
"capabilities": {
|
|
"list": true,
|
|
"search": true,
|
|
"detail": true,
|
|
"download": true,
|
|
"rss": true
|
|
},
|
|
"categoryNames": {
|
|
"401": "电影",
|
|
"402": "剧集",
|
|
"403": "综艺",
|
|
"406": "纪录片"
|
|
},
|
|
"loginSuccess": "#info_block, a[href*=\"usercp.php\"], a[href*=\"logout\"]",
|
|
"emptyMarkers": ["没有种子", "没有结果", "Nothing found"],
|
|
"pagination": "a[href*=\"page=\"]",
|
|
"detailPath": "details.php",
|
|
"downloadPath": "download.php",
|
|
"detail": {
|
|
"path": "details.php",
|
|
"title": "h1#top",
|
|
"rowLabel": "td.rowhead",
|
|
"rowValue": "td.rowfollow",
|
|
"labels": {
|
|
"subtitle": ["副标题", "Small Description"],
|
|
"basicInfo": ["基本信息", "Basic Info"],
|
|
"peers": ["同伴", "Peers"]
|
|
},
|
|
"description": "#kdescr",
|
|
"headerScope": "h1#top",
|
|
"notFoundMarkers": ["没有该ID的种子", "No torrent with ID"],
|
|
"fields": {
|
|
"seeders": "#seeders",
|
|
"leechers": "#leechers",
|
|
"snatched": "a[title='完成'][href*='viewsnatches.php']",
|
|
"infoHash": "#copyTorrentHashLink::attr(data-hash)"
|
|
},
|
|
"promo": {
|
|
"downloadvolumefactor": {
|
|
"case": {
|
|
"font.free": 0,
|
|
"font.twoupfree": 0,
|
|
"font.halfdown": 0.5,
|
|
"font.twouphalfdown": 0.5,
|
|
"font.thirtypercent": 0.3,
|
|
"img.pro_free": 0,
|
|
"img.pro_free2up": 0,
|
|
"img.pro_50pctdown": 0.5,
|
|
"img.pro_50pctdown2up": 0.5,
|
|
"img.pro_30pctdown": 0.3,
|
|
"*": 1
|
|
}
|
|
},
|
|
"uploadvolumefactor": {
|
|
"case": {
|
|
"font.twoup": 2,
|
|
"font.twoupfree": 2,
|
|
"font.twouphalfdown": 2,
|
|
"img.pro_50pctdown2up": 2,
|
|
"img.pro_free2up": 2,
|
|
"img.pro_2up": 2,
|
|
"*": 1
|
|
}
|
|
},
|
|
"freedate": {
|
|
"selector": "img[class^=\"pro_\"], span[title]",
|
|
"attribute": "title",
|
|
"filters": [
|
|
{
|
|
"name": "re_search",
|
|
"args": ["\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}", 0]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"page": {
|
|
"uploader": "span.torrent-uploader-wrap",
|
|
"descriptionStrip": "#ad_torrentdetail"
|
|
}
|
|
}
|
|
}
|
|
}
|