Title recognition (parseRelease / parseReleasePath):
- anime prefix tags (★N月新番, [国漫], 【22年日剧】), category lead bracket, `A / B` cn aliases
- `Name [01]`, `[TV 04]`, `#13`, `名称 12.mkv`, `S01 13-14`, `E13-14` episodes
- lead bracket as title vs group, trailing [Group], YTS.MX/Hall_of_C style groups, 字幕组 suffix
- `[dot.release.name][…]` unbracketing, `Season 2017` as year, leading date not airDate,
date-only parent dir does not merge as TV
- original disc: Blu-ray + AVC/HEVC/VC-1/MPEG-2 without x26x/H.26x -> BluRay-Disc
- `{[tmdbid=;type=;s=;e=]}` explicit block, bangumi/anilist ids
- bare [1080]/[5.1], DTS-HD MA5.1, £ multi-group, 合集, pinyin title -> cn from subtitle,
streaming platform table, CHS/CHT/GB/BIG5 in subtitle
zh-map: add 迴滾魷瑯臥駭; document one-to-many chars kept out.
Sites: tbody branch + header-row tightening via movieclaw-import rowSelector (18 definitions),
row-level case/hr/labels include the row itself, subtitle branch (searchType: "subtitles"),
parseSizeMp banker's rounding.
Differential snapshots regenerated; MP test sample sources registered in ledger.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
262 lines
6.4 KiB
JSON
262 lines
6.4 KiB
JSON
{
|
|
"id": "ourbits",
|
|
"name": "OurBits",
|
|
"enabled": false,
|
|
"schema": "NexusPhp",
|
|
"provenance": {
|
|
"source": "movieclaw",
|
|
"ref": "v0.27.0",
|
|
"commit": "c79bb1b0",
|
|
"license": "MIT",
|
|
"file": "src/movieclaw_tracker/sites/configs/ourbits.yaml"
|
|
},
|
|
"domain": "https://ourbits.club/",
|
|
"encoding": "UTF-8",
|
|
"public": false,
|
|
"proxy": false,
|
|
"language": "zh",
|
|
"result_num": 100,
|
|
"timeout": 30,
|
|
"search": {
|
|
"paths": [
|
|
{
|
|
"path": "torrents.php",
|
|
"type": "all"
|
|
}
|
|
],
|
|
"params": {
|
|
"search": "{keyword}"
|
|
}
|
|
},
|
|
"batch": {
|
|
"delimiter": " ",
|
|
"space_replace": "_"
|
|
},
|
|
"browse": {
|
|
"path": "torrents.php?page={page}",
|
|
"start": 0
|
|
},
|
|
"category": {
|
|
"movie": [
|
|
{
|
|
"id": "401",
|
|
"desc": "电影"
|
|
},
|
|
{
|
|
"id": "402",
|
|
"desc": "电影"
|
|
}
|
|
],
|
|
"tv": [
|
|
{
|
|
"id": "405",
|
|
"desc": "剧集"
|
|
},
|
|
{
|
|
"id": "412",
|
|
"desc": "剧集"
|
|
},
|
|
{
|
|
"id": "413",
|
|
"desc": "剧集"
|
|
},
|
|
{
|
|
"id": "415",
|
|
"desc": "剧集"
|
|
}
|
|
],
|
|
"music": [
|
|
{
|
|
"id": "416",
|
|
"desc": "音乐"
|
|
},
|
|
{
|
|
"id": "414",
|
|
"desc": "音乐"
|
|
},
|
|
{
|
|
"id": "419",
|
|
"desc": "音乐"
|
|
}
|
|
],
|
|
"param": "cat[]"
|
|
},
|
|
"torrents": {
|
|
"list": {
|
|
"selector": "table.torrents > tr:has(table.torrentname), table.torrents > tbody > tr:has(table.torrentname)"
|
|
},
|
|
"fields": {
|
|
"title_default": {
|
|
"selector": "a[href*='details.php']"
|
|
},
|
|
"title_optional": {
|
|
"selector": "a[href*='details.php'][title]",
|
|
"attribute": "title"
|
|
},
|
|
"title": {
|
|
"text": "{% if fields['title_optional'] %}{{ fields['title_optional'] }}{% else %}{{ fields['title_default'] }}{% endif %}"
|
|
},
|
|
"details": {
|
|
"selector": "a[href*='details.php']",
|
|
"attribute": "href"
|
|
},
|
|
"download": {
|
|
"selector": "a[href*='download.php']",
|
|
"attribute": "href"
|
|
},
|
|
"imdbid": {
|
|
"selector": "a[href*=\"imdb.com/title/tt\"]",
|
|
"attribute": "href",
|
|
"filters": [
|
|
{
|
|
"name": "re_search",
|
|
"args": ["tt\\d+", 0]
|
|
}
|
|
]
|
|
},
|
|
"date_elapsed": {
|
|
"selector": "td:nth-child(4)"
|
|
},
|
|
"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_free2up": 2,
|
|
"img.pro_50pctdown2up": 2,
|
|
"img.pro_2up": 2,
|
|
"*": 1
|
|
}
|
|
},
|
|
"description": {
|
|
"selector": "td.embedded > div"
|
|
},
|
|
"category": {
|
|
"selector": "a[href^='?cat=']",
|
|
"attribute": "href",
|
|
"filters": [
|
|
{
|
|
"name": "re_search",
|
|
"args": ["\\d+", 0]
|
|
}
|
|
]
|
|
},
|
|
"hr": {
|
|
"selector": "img.hitandrun"
|
|
}
|
|
}
|
|
},
|
|
"umt": {
|
|
"version": "[email protected]",
|
|
"kind": "nexusphp",
|
|
"displayName": "OurBits",
|
|
"timezone": "+08:00",
|
|
"rateLimit": {
|
|
"minIntervalMs": 3000,
|
|
"burst": 1
|
|
},
|
|
"capabilities": {
|
|
"list": true,
|
|
"search": true,
|
|
"detail": true,
|
|
"download": true,
|
|
"rss": false
|
|
},
|
|
"categoryNames": {
|
|
"401": "电影",
|
|
"402": "电影",
|
|
"405": "剧集",
|
|
"410": "纪录片",
|
|
"411": "动漫",
|
|
"412": "剧集",
|
|
"413": "剧集",
|
|
"414": "音乐",
|
|
"415": "剧集",
|
|
"416": "音乐",
|
|
"419": "音乐"
|
|
},
|
|
"loginSuccess": "a[href*='logout']",
|
|
"emptyMarkers": ["没有种子", "没有结果", "Nothing found"],
|
|
"pagination": "a[href*=\"page=\"]",
|
|
"detailPath": "details.php",
|
|
"downloadPath": "download.php",
|
|
"authSupported": ["cookie"],
|
|
"login": {
|
|
"path": "login.php",
|
|
"usernameField": "username",
|
|
"passwordField": "password",
|
|
"errorCss": "td.text"
|
|
},
|
|
"profile": {
|
|
"path": "userdetails.php",
|
|
"uid_css": "a[href*='userdetails.php?id=']::attr(href)",
|
|
"username_css": "a[href*='userdetails.php?id=']",
|
|
"class_css": "a[href*='userdetails.php?id=']::attr(class)",
|
|
"uploaded_css": "font.color_uploaded::next_sibling_text",
|
|
"downloaded_css": "font.color_downloaded::next_sibling_text",
|
|
"ratio_css": "td.rowhead:contains('分享率') + td::text",
|
|
"bonus_css": "td.rowhead:contains('魔力') + td::text",
|
|
"join_date_css": "td.rowhead:contains('加入日期') + td::text",
|
|
"seeding_css": "img[alt='Torrents seeding'] + *",
|
|
"leeching_css": "img[alt='Torrents leeching'] + *"
|
|
},
|
|
"detail": {
|
|
"path": "details.php",
|
|
"title": "#top",
|
|
"rowLabel": "td.rowhead",
|
|
"rowValue": "td.rowfollow",
|
|
"labels": {
|
|
"subtitle": ["副标题", "Small Description"],
|
|
"basicInfo": ["基本信息", "Basic Info"],
|
|
"peers": ["同伴", "Peers"]
|
|
},
|
|
"description": "#kdescr",
|
|
"headerScope": "#top",
|
|
"notFoundMarkers": ["没有该ID的种子", "No torrent with ID"],
|
|
"fields": {
|
|
"title": "#top::text",
|
|
"subtitle": "td.rowhead:contains('副标题') + td::text",
|
|
"size": "td.rowhead:contains('大小') + td::text",
|
|
"description": "#kdescr",
|
|
"download": "a[href*='download.php']::attr(href)",
|
|
"imdb": "a[href*='imdb.com']::attr(href)",
|
|
"douban": "a[href*='douban.com']::attr(href)",
|
|
"fileList": "td.rowfollow > ul > li::text"
|
|
}
|
|
},
|
|
"customClass": "movieclaw_tracker.sites.custom.ourbits.OurBitsSite"
|
|
}
|
|
}
|