diff --git a/definitions/v11/1ptbar.yml b/definitions/v11/1ptbar.yml index 9141ad99d..d222cd402 100644 --- a/definitions/v11/1ptbar.yml +++ b/definitions/v11/1ptbar.yml @@ -221,4 +221,4 @@ search: description: selector: td:nth-child(2) remove: a, b, font, img, span -# NexusPHP v1.9.9 2025-10-02 +# NexusPHP v1.9.13 2025-12-28 diff --git a/definitions/v11/3changtrai.yml b/definitions/v11/3changtrai.yml index 92f2442cb..e4d50fae2 100644 --- a/definitions/v11/3changtrai.yml +++ b/definitions/v11/3changtrai.yml @@ -169,4 +169,4 @@ search: description: selector: td:nth-child(2) remove: a, b, font, img, span -# NexusPHP v1.9.9 2025-10-02 +# NexusPHP v2.0 2026-01-01 diff --git a/definitions/v11/arabicsource-api.yml b/definitions/v11/arabicsource-api.yml index 7769a0744..a97d0516f 100644 --- a/definitions/v11/arabicsource-api.yml +++ b/definitions/v11/arabicsource-api.yml @@ -18,13 +18,14 @@ caps: - {id: 6, cat: TV, desc: "مسلسلات رسوم مترجمة (Subtitled Animated Series)"} - {id: 7, cat: TV, desc: "مسلسلات عربية (Arabic Series)"} - {id: 8, cat: TV, desc: "مسرحيات (Plays)"} - - {id: 9, cat: TV/Documentary, desc: "وثائقيات (Documentaries)"} - {id: 10, cat: Other, desc: "إسلاميات (Islamic Content)"} - {id: 11, cat: Other, desc: "رمضانيات (Ramadan Content)"} - {id: 12, cat: Other, desc: "منوعات (Variety)"} - {id: 13, cat: Audio, desc: "صوتيات (Audio)"} - {id: 14, cat: Movies, desc: "كرتون كلاسيك (Classic Cartoons)"} - {id: 15, cat: Other, desc: "تورنت خام (Raw Torrents)"} + - {id: 20, cat: TV/Documentary, desc: "مسلسلات وثائقيات (Documentary Series)"} + - {id: 9, cat: Movies, desc: "أفلام وثائقيات (Documentary Films)"} - {id: 19, cat: Other, desc: "تورينتات ضائعة (Lost Torrents)"} modes: diff --git a/definitions/v11/aura4k-api.yml b/definitions/v11/aura4k-api.yml new file mode 100644 index 000000000..3c494637b --- /dev/null +++ b/definitions/v11/aura4k-api.yml @@ -0,0 +1,191 @@ +--- +id: aura4k-api +name: AURA4K (API) +description: "AURA4K is a Private Torrent Tracker for MOVIES / TV" +language: en-US +type: private +encoding: UTF-8 +links: + - https://aura4k.net/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Movies"} + - {id: 2, cat: TV, desc: "TV"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] + movie-search: [q, imdbid, tmdbid] + allowtvsearchimdb: true + +settings: + - name: apikey + type: text + label: APIKey + - name: info_key + type: info + label: About your API key + default: "Find or Generate a new API Token by accessing your AURA4K account My Settings page and clicking on the API Key tab." + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: single_file_release_use_filename + type: checkbox + label: Use filename as title for single file releases + default: true + - name: sort + type: select + label: Sort requested from site + default: created_at + options: + created_at: created + seeders: seeders + size: size + name: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_activity + type: info + label: Account Inactivity + default: "Accounts with no activity (login/traffic) for more than 90 days may be automatically pruned." + +login: + path: /api/torrents + method: get + error: + - selector: a[href*="/login"] + message: + text: "The API key was not accepted by {{ .Config.sitelink }}." + - selector: :root:contains("Account is Banned") + +search: + paths: + # https://hdinnovations.github.io/UNIT3D/torrent_api.html + # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657 + - path: api/torrents/filter + response: + type: json + + headers: + Authorization: ["Bearer {{ .Config.apikey }}"] + + inputs: + # if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6 + $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}" + name: "{{ .Keywords }}" + seasonNumber: "{{ .Query.Season }}" + episodeNumber: "{{ .Query.Ep }}" + imdbId: "{{ .Query.IMDBIDShort }}" + tmdbId: "{{ .Query.TMDBID }}" + tvdbId: "{{ .Query.TVDBID }}" + "free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}" + sortField: "{{ .Config.sort }}" + sortDirection: "{{ .Config.type }}" + perPage: 100 + + keywordsfilters: + - name: re_replace + args: ["\\.", " "] + + rows: + selector: data + attribute: attributes + + fields: + category: + selector: category_id + title_optional: + selector: name + title_filename: + selector: "files[0].name" + optional: true + files: + selector: num_file + title: + text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}" + details: + selector: details_link + download: + selector: download_link + poster: + selector: meta.poster + filters: + - name: replace + args: ["https://via.placeholder.com/90x135", ""] + imdbid: + selector: imdb_id + tmdbid: + selector: tmdb_id + tvdbid: + selector: tvdb_id + genre: + selector: meta.genres + filters: + - name: re_replace + args: ["(?i)(Science Fiction)", "Science_Fiction"] + - name: re_replace + args: ["(?i)(TV Movie)", "TV_Movie"] + - name: replace + args: [" & ", "_&_"] + _internal: + selector: internal + case: + False: "{{ .False }}" + True: "{{ .True }}" + description: + text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}" + seeders: + selector: seeders + leechers: + selector: leechers + grabs: + selector: times_completed + date: + # "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50 + selector: created_at + filters: + - name: append + args: " +00:00" # GMT + - name: dateparse + args: "MM/dd/yyyy HH:mm:ss zzz" + size: + selector: size + _featured: + selector: featured + case: + False: "{{ .False }}" + True: "{{ .True }}" + downloadvolumefactor_freeleech: + # api returns 0%, 25%, 50%, 75%, 100% + selector: freeleech + case: + 0%: 1 # not free + 25%: 0.75 + 50%: 0.5 + 75%: 0.25 + 100%: 0 # freeleech + "*": 0 # catch errors + downloadvolumefactor: + text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}" + uploadvolumefactor_double_upload: + # api returns False, True + selector: double_upload + case: + False: 1 # normal + True: 2 # double + uploadvolumefactor: + text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}" +# global MR is 0.4 but torrents must be seeded for 72 hours OR 1:1 + minimumratio: + text: 1.0 + minimumseedtime: + # 72 hours (as seconds = 3 x 24 x 60 x 60) + text: 259200 +# json UNIT3D 9.2.0 diff --git a/definitions/v11/backups.yml b/definitions/v11/backups.yml index ee2110a8b..c432ae5cb 100644 --- a/definitions/v11/backups.yml +++ b/definitions/v11/backups.yml @@ -130,29 +130,31 @@ search: # sort is done via do=quick_sort, and freeleech sorting is part of that set rows: - selector: "table#sortabletable > tbody > tr:has(a[href*=\"/details.php?id=\"]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}" + selector: "table#sortabletable > tbody > tr:has(a[href*=\"download-torrent-\"]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}" filters: - name: andmatch args: 66 fields: category: - selector: a[href*="/browse.php?category="] + selector: a[href*="torrent-category-"] attribute: href filters: - - name: querystring - args: category + - name: regexp + args: category-(\d+) title_default: - selector: a[href*="/details.php?id="] + # is often abbreviated + selector: a[href*="torrent-details-"] title: + # can be abbreviated but usually longer than title_default selector: div.tooltip-content > div optional: true default: "{{ .Result.title_default }}" details: - selector: a[href*="/details.php?id="] + selector: a[href*="torrent-details-"] attribute: href download: - selector: a[href*="/download.php?id="] + selector: a[href*="download-torrent-"] attribute: href magnet: selector: a[href^="magnet:?xt="] @@ -185,4 +187,9 @@ search: args: " +00:00" # GMT - name: dateparse args: "dd-MM-yyyy HH:mm zzz" + minimumratio: + text: 1.0 + minimumseedtime: + # 2 days (as seconds = 2 x 24 x 60 x 60) + text: 172800 # TS Special Edition v.8.0 diff --git a/definitions/v11/crnaberza.yml b/definitions/v11/crnaberza.yml index 78e31dfb3..42e633b57 100644 --- a/definitions/v11/crnaberza.yml +++ b/definitions/v11/crnaberza.yml @@ -37,6 +37,7 @@ caps: - {id: 80, cat: TV, desc: "Paketi"} - {id: 49, cat: PC, desc: "Programi"} - {id: 28, cat: Other, desc: "Razno"} + - {id: 85, cat: Movies, desc: "Remux"} - {id: 62, cat: TV/SD, desc: "SD Boxset"} - {id: 38, cat: TV/Sport, desc: "Sport"} - {id: 39, cat: Audio/Video, desc: "Spotovi DVD"} diff --git a/definitions/v11/cyanbug.yml b/definitions/v11/cyanbug.yml index 77019428f..070aaa2ba 100644 --- a/definitions/v11/cyanbug.yml +++ b/definitions/v11/cyanbug.yml @@ -211,4 +211,4 @@ search: filters: - name: prepend args: "{{ .Result.description_verified }} " -# NexusPHP v1.8.14 2024-10-07 +# NexusPHP v1.9.11 2025-11-02 diff --git a/definitions/v11/freefarm.yml b/definitions/v11/freefarm.yml index 5e7ed343f..2855685c2 100644 --- a/definitions/v11/freefarm.yml +++ b/definitions/v11/freefarm.yml @@ -209,4 +209,4 @@ search: filters: - name: prepend args: "{{ .Result.description_verified }} " -# NexusPHP v1.9.11 2025-11-02 +# NexusPHP v1.9.13 2025-12-28 diff --git a/definitions/v11/girotorrent.yml b/definitions/v11/girotorrent.yml index bc07619a0..20f599d11 100644 --- a/definitions/v11/girotorrent.yml +++ b/definitions/v11/girotorrent.yml @@ -40,11 +40,6 @@ caps: - {id: 28, cat: Movies/Foreign, desc: "Movie Subbed-ita"} - {id: 73, cat: Movies/SD, desc: "Movie MP4"} - {id: 29, cat: Movies/Foreign, desc: "Movie Lingua Originale"} - # ANIMAZIONE - - {id: 32, cat: TV/Anime, desc: "Anime Disney"} - - {id: 33, cat: TV/Anime, desc: "Anime"} - - {id: 34, cat: TV/Anime, desc: "Anime Altri Cartoni"} - - {id: 62, cat: TV/Anime, desc: "Anime Natale Bimbi Girotor"} # TELEVISIONE - {id: 36, cat: TV, desc: "TV Serie"} - {id: 99, cat: TV/HD, desc: "TV Serie Hevc"} @@ -54,6 +49,11 @@ caps: - {id: 38, cat: TV, desc: "TV Concerti-Spettacoli"} - {id: 39, cat: TV, desc: "TV Teatro-Cabaret"} - {id: 40, cat: TV/Documentary, desc: "Tv Documentario"} + # ANIMAZIONE + - {id: 32, cat: TV/Anime, desc: "Anime Disney"} + - {id: 33, cat: TV/Anime, desc: "Anime"} + - {id: 34, cat: TV/Anime, desc: "Anime Altri Cartoni"} + - {id: 62, cat: TV/Anime, desc: "Anime Natale Bimbi Girotor"} # MUSICA - {id: 42, cat: Audio, desc: "Musica CD Singoli"} - {id: 43, cat: Audio, desc: "Musica Italiana"} @@ -149,13 +149,12 @@ download: search: paths: - # 15 results per page fetch 5 (site is slow, dont be greedy and fetch more) - path: index.php inputs: page: torrents search: "{{ .Keywords }}" category: "{{ range .Categories }}{{.}};{{end}}" - # 0 name, 1 name&descr, 2 descr, 3 uploader, 5 gold, 6 silver, 7 bronze + # 0 filename, 1 file&descr, 2 descr, 3 uploader, 5 gold, 6 silver, 7 bronze # note the options are exclusive, so searching for gold means the search keywords are ignored options: 0 # 0 all, 1 activeonly, 2 deadonly @@ -252,4 +251,4 @@ search: args: ["x Upload Multiplier", ""] minimumratio: text: 0.5 -# xbtitFM 3.1.00 +# xbtitFM v4.2.12 diff --git a/definitions/v11/hxpt.yml b/definitions/v11/hxpt.yml new file mode 100644 index 000000000..f1f4634dd --- /dev/null +++ b/definitions/v11/hxpt.yml @@ -0,0 +1,160 @@ +--- +id: hxpt +name: HxPT (好学) +description: "HxPT (好学) is a CHINESE Private Torrent Tracker for E-LEARNING" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://www.hxpt.org/ + +caps: + categorymappings: + - {id: 401, cat: Other, desc: "学前教育 (Preschool)"} + - {id: 402, cat: Other, desc: "小学部 (Primary School)"} + - {id: 403, cat: Other, desc: "初中部 (Middle School)"} + - {id: 404, cat: Other, desc: "高职部 (Vocational High School)"} + - {id: 405, cat: Other, desc: "高中部 (High School)"} + - {id: 406, cat: Other, desc: "教育影音 (Educational Video)"} + + modes: + search: [q] + +settings: + - name: cookie + type: text + label: Cookie + - name: info_cookie + type: info_cookie + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: sort + type: select + label: Sort requested from site + default: 4 + options: + 4: created + 7: seeders + 5: size + 1: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrents per page: setting to 100 on your account profile. + - name: info_activity + type: info + label: Account Inactivity + default: "Account retention rules:
  1. Veteran User and above will be retained forever
  2. Elite User and above will not have their account deleted after parking (in the control panel)
  3. Users with a parked account will be deleted if they do not log in for 400 consecutive days
  4. Users with a non-parked account will be deleted if they do not log in for 150 consecutive days
  5. Users who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.
" + +login: + # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + search: "{{ .Keywords }}" + # 0 incldead, 1 active, 2 dead + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% + spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + # 0 title, 1 descr, 3 uploader, 4 imdburl + search_area: 0 + # 0 AND, 1 OR, 2 exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + notnewword: 1 + + rows: + selector: table.torrents > tbody > tr:has(a[href^="download.php?id="]) + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_default: + selector: a[href^="details.php?id="] + title: + selector: a[title][href^="details.php?id="] + attribute: title + optional: true + default: "{{ .Result.title_default }}" + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + poster: + selector: img[data-src] + attribute: data-src + date_elapsed: + # time type: time elapsed (default) + selector: td.rowfollow:nth-child(4) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + date_added: + # time added + selector: td.rowfollow:nth-child(4):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + date: + text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" + size: + selector: td.rowfollow:nth-child(5) + seeders: + selector: td.rowfollow:nth-child(6) + leechers: + selector: td.rowfollow:nth-child(7) + grabs: + selector: td.rowfollow: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 + minimumseedtime: + # 24 hours (as seconds = 24 x 60 x 60) + text: 86400 + description: + selector: td.rowfollow:nth-child(2) + remove: a, b, font, img, span +# NexusPHP v1.9.6 2025-06-25 diff --git a/definitions/v11/idope.yml b/definitions/v11/idope.yml deleted file mode 100644 index a4e7aacf8..000000000 --- a/definitions/v11/idope.yml +++ /dev/null @@ -1,130 +0,0 @@ ---- -id: idope -name: iDope -description: "iDope is a Public torrent search engine presenting direct magnet links" -language: en-US -type: public -encoding: UTF-8 -requestDelay: 2 -links: - - https://idope.me/ -legacylinks: - - https://idope.black-mirror.xyz/ - - https://idope.unblocked.casa/ - - https://idope.proxyportal.fun/ - - https://idope.uk-unblock.xyz/ - - https://idope.ind-unblock.xyz/ - - https://idope.unblocked.bar/ - - https://idope.proxyportal.pw/ - - https://idope.uk-unblock.pro/ - - https://idope.unblocked.rest/ - - https://idope.unblocked.monster/ - - https://idope.se/ - -caps: - categorymappings: - - {id: 0, cat: Other, desc: Others} - - {id: 1, cat: Movies, desc: Movies} - - {id: 2, cat: Other, desc: Video} - - {id: 3, cat: TV, desc: TV} - - {id: 4, cat: TV/Anime, desc: Anime} - - {id: 5, cat: XXX, desc: XXX} - - {id: 6, cat: Audio, desc: Music} - - {id: 7, cat: PC/Games, desc: Games} - - {id: 8, cat: PC, desc: Apps} - - {id: 9, cat: Books, desc: Books} - - modes: - search: [q] - tv-search: [q, season, ep] - movie-search: [q] - music-search: [q] - book-search: [q] - -settings: - - name: itorrents-links - type: checkbox - label: Add download links via itorrents.org - default: false - - name: info - type: info - label: ITorrents Note - default: Without the itorrents option only magnet links will be provided. - - name: sort - type: select - label: Sort requested from site (Applies only to search with Keywords) - default: -3 - options: - -3: "created desc" - -1: "seeders desc" - -2: "size desc" - 3: "created asc" - 1: "seeders asc" - 2: "size asc" - - name: info_flaresolverr - type: info_flaresolverr - -search: - paths: - # present trending results if there are no search parms supplied - # sort torrent-list by age in descending order - - path: "{{ if .Keywords }}torrent-list/{{ .Keywords }}?o={{ .Config.sort }}&c={{ range .Categories }}{{.}}{{end}}{{ else }}browse.html{{ end }}" - - path: "{{ if .Keywords }}torrent-list/{{ .Keywords }}?p=2&o={{ .Config.sort }}&c={{ range .Categories }}{{.}}{{end}}{{ else }}browse.html?&p=2{{ end }}" - - headers: - # Using a custom user-agent to return the desktop layout. - User-Agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"] - - rows: - selector: div.resultdiv - - fields: - category: - selector: div.resultdivbotton div.resultdivbottoncategory - optional: true - default: 0 - case: - ":contains(\"Others\")": 0 - ":contains(\"Movies\")": 1 - ":contains(\"Video\")": 2 - ":contains(\"TV\")": 3 - ":contains(\"Anime\")": 4 - ":contains(\"XXX\")": 5 - ":contains(\"Music\")": 6 - ":contains(\"Games\")": 7 - ":contains(\"Apps\")": 8 - ":contains(\"Books\")": 9 - title: - selector: div.resultdivtop a div.resultdivtopname - details: - selector: div.resultdivtop a - attribute: href - download_itorrents: - selector: div.resultdivbotton div.hideinfohash - filters: - - name: toupper - - name: prepend - args: http://itorrents.org/torrent/ - - name: append - args: ".torrent" - download: - text: "{{ if .Config.itorrents-links }}{{ .Result.download_itorrents }}{{ else }}{{ end }}" - infohash: - selector: div.resultdivbotton div.hideinfohash - date: - selector: div.resultdivbotton div.resulttime div.resultdivbottontime - filters: - - name: timeago - size: - selector: div.resultdivbotton div.resultlength div.resultdivbottonlength - files: - selector: div.resultdivbotton div.resultfile div.resultdivbottonfiles - seeders: - selector: div.resultdivbotton div.resultseed div.resultdivbottonseed - leechers: - text: 0 - downloadvolumefactor: - text: 0 - uploadvolumefactor: - text: 1 -# engine n/a diff --git a/definitions/v11/jpopsuki.yml b/definitions/v11/jpopsuki.yml index db8af8046..55f3f7480 100644 --- a/definitions/v11/jpopsuki.yml +++ b/definitions/v11/jpopsuki.yml @@ -68,12 +68,15 @@ login: - selector: form#loginform > span.warning, font[color="red"] test: path: index.php - selector: a[href^="logout.php?auth="] + selector: a[href^="logout.php?auth="], a[href^="torrents.php?action=download&id="] search: # https://jpopsuki.eu/ajax.php?section=torrents&artistname=&action=advanced&torrentname=snow+man&remastertitle=&filelist=&bitrate=&format=&media=&year=&freeleech=&remastered=&searchtags=&tags_type=0&order_by=s3&order_way=desc&enablegrouping=1 paths: - path: ajax.php + keywordsfilters: + - name: re_replace # replace special characters with " " (space) + args: ["[\\[!\"#$%&'()*+,\\-.\\/:;<=>?@[\\]^_`{|}~]", " "] inputs: $raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}{{ if or .Query.Album .Query.Artist .Keywords }}action=advanced{{ else }}searchtags=japanese&tags_type=0{{ end }}" artistname: "{{ .Query.Artist }}" diff --git a/definitions/v11/kunlun.yml b/definitions/v11/kunlun.yml new file mode 100644 index 000000000..2fc7e7b9f --- /dev/null +++ b/definitions/v11/kunlun.yml @@ -0,0 +1,170 @@ +--- +id: kunlun +name: Kunlun (昆仑) +description: "Kunlun (昆仑) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://www.yhpp.cc/ + +caps: + categorymappings: + - {id: 401, cat: Movies, desc: "Movies/电影"} + - {id: 402, cat: TV, desc: "TV Series/电视剧"} + - {id: 403, cat: TV, desc: "TV Shows/综艺"} + - {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"} + - {id: 405, cat: TV/Anime, desc: "Animations/动漫、动画"} + - {id: 406, cat: Audio/Video, desc: "Music Videos/音乐视频"} + - {id: 407, cat: TV/Sport, desc: "Sports/体育"} + - {id: 408, cat: Audio/Lossless, desc: "Music/音乐"} + - {id: 409, cat: Other, desc: "Others/其他"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, doubanid] + movie-search: [q, imdbid, doubanid] + music-search: [q] + +settings: + - name: cookie + type: text + label: Cookie + - name: info_cookie + type: info_cookie + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: sort + type: select + label: Sort requested from site + default: 4 + options: + 4: created + 7: seeders + 5: size + 1: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrents per page: setting to 100 on your account profile. + - name: info_activity + type: info + label: Account Inactivity + default: "Cherish your user account. Inactive accounts would be deleted based on the following rules:
  1. Veteran User or above would never be deleted
  2. Elite User or above would never be deleted if parked (at User CP)
  3. Parked accounts would be deleted if users have not logged in for more than 400 days in a row
  4. Un-parked accounts would be deleted if users have not logged in for more than 150 days in a row
  5. Accounts with both uploaded and downloaded amount being 0 would be deleted if users have not logged in for more than 100 days in a row.
" + +login: + # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + error: + - selector: td.embedded:has(h2:contains("失败")) + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}" + # 0 incldead, 1 active, 2 dead + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% + spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + # 0 title, 1 descr, 3 uploader, 4 imdburl + search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}" + # 0 AND, 2 exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + notnewword: 1 + + rows: + selector: table.torrents > tbody > tr:has(table.torrentname) + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_default: + selector: a[href^="details.php?id="] + title: + selector: a[title][href^="details.php?id="] + attribute: title + optional: true + default: "{{ .Result.title_default }}" + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + imdbid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="imdb.com/title/tt"] + attribute: href + doubanid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="movie.douban.com/subject/"] + attribute: href + date_elapsed: + # time type: time elapsed (default) + selector: td.rowfollow:nth-child(4) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + date_added: + # time added + selector: td.rowfollow:nth-child(4):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + date: + text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" + size: + selector: td.rowfollow:nth-child(5) + seeders: + selector: td.rowfollow.rowfollow:nth-child(6) + leechers: + selector: td.rowfollow:nth-child(7) + grabs: + selector: td.rowfollow: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 + description: + selector: td.rowfollow:nth-child(2) + remove: a, b, font, img, span +# NexusPHP v1.9.13 2025-12-28 diff --git a/definitions/v11/leech24.yml b/definitions/v11/leech24.yml index 270226822..c96dbc1a8 100644 --- a/definitions/v11/leech24.yml +++ b/definitions/v11/leech24.yml @@ -108,12 +108,12 @@ login: search: paths: - # https://leech24.net/torrents-search.php?c3=1&c1=1&c2=1&c42=1&c4=1&c7=1&search=&cat=0&incldead=1&freeleech=0&lang=0 + # https://leech24.net/torrents-search.php?&search=&incldead=1&freeleech=0&lang=0 - path: torrents-search.php inputs: $raw: "{{ range .Categories }}c{{.}}=1&{{end}}" search: "{{ .Keywords }}" - cat: 0 +# cat: 0 # causes 0 results # 0 active, 1 incldead, 2 onlydead incldead: 1 # 0 all, 1 notfree, 2 onlyfree diff --git a/definitions/v11/lemonhd-net.yml b/definitions/v11/lemonhd-net.yml index 540ceab61..63332260f 100644 --- a/definitions/v11/lemonhd-net.yml +++ b/definitions/v11/lemonhd-net.yml @@ -180,4 +180,4 @@ search: description: selector: td:nth-child(2) remove: a, b, font, img, span -# NexusPHP v1.9.11 2025-11-02 +# NexusPHP v1.9.13 2025-12-28 diff --git a/definitions/v11/matrix.yml b/definitions/v11/matrix.yml index 88195ade1..6f3c5ff12 100644 --- a/definitions/v11/matrix.yml +++ b/definitions/v11/matrix.yml @@ -33,7 +33,7 @@ caps: - {id: 39, cat: PC/Games, desc: "Játékok/Rip/Dox"} - {id: 47, cat: Other, desc: "Klippek"} - {id: 30, cat: Audio/Lossless, desc: "Lossless/EN"} -# - {id: 29, cat: Audio/Lossless, desc: "Lossless/HU"} + - {id: 29, cat: Audio/Lossless, desc: "Lossless/HU"} - {id: 25, cat: Audio/MP3, desc: "MP3/EN"} - {id: 6, cat: Audio/MP3, desc: "MP3/HU"} - {id: 33, cat: PC, desc: "Program/egyéb"} @@ -143,7 +143,7 @@ search: img[src="/pic/categories/cat_games.gif"]: 39 img[src="/pic/categories/026.png"]: 47 img[src="/pic/categories/024.png"]: 30 -# img[]: 29 + img[src="/pic/categories/019.png" ]: 29 img[src="/pic/categories/023.png"]: 25 img[src="/pic/categories/018.png"]: 6 img[src="/pic/categories/025.png"]: 33 diff --git a/definitions/v11/ptskit.yml b/definitions/v11/ptskit.yml index de23bd0aa..ba7f102e8 100644 --- a/definitions/v11/ptskit.yml +++ b/definitions/v11/ptskit.yml @@ -194,4 +194,4 @@ search: description: selector: td.rowfollow:nth-child(2) remove: a, b, font, img, span -# NexusPHP v1.9.11 2025-11-02 +# NexusPHP v1.9.13 2025-12-28 diff --git a/definitions/v11/torrentqq.yml b/definitions/v11/torrentqq.yml index 5de27d6ce..1b5e482c7 100644 --- a/definitions/v11/torrentqq.yml +++ b/definitions/v11/torrentqq.yml @@ -7,16 +7,14 @@ type: public encoding: UTF-8 followredirect: true links: - - https://torrentqq400.com/ + - https://torrentqq402.com/ - https://torrentegg86.com/ legacylinks: - https://torrentegg71.com/ - https://torrentegg72.com/ - https://torrentegg73.com/ - https://torrentegg74.com/ - - https://torrentqq385.com/ - https://torrentegg75.com/ - - https://torrentqq386.com/ - https://torrentegg76.com/ - https://torrentqq387.com/ - https://torrentegg77.com/ @@ -40,6 +38,8 @@ legacylinks: - https://torrentegg85.com/ - https://torrentqq398.com/ - https://torrentqq399.com/ + - https://torrentqq400.com/ + - https://torrentqq401.com/ caps: categorymappings: diff --git a/definitions/v11/wdt.yml b/definitions/v11/wdt.yml deleted file mode 100644 index 847a58998..000000000 --- a/definitions/v11/wdt.yml +++ /dev/null @@ -1,190 +0,0 @@ ---- -id: wdt -name: WDT -description: "Wrestling Desires Torrents (Ultimate Wrestling Torrents) is a Private Torrent Tracker for PROFESSIONAL WRESTLING / MMA" -language: en-US -type: private -encoding: UTF-8 -links: - - http://ultimatewrestlingtorrents.com/ -legacylinks: - - https://ultimatewrestlingtorrents.com/ - -caps: - categorymappings: - # note: when refreshing categories also update $raw - - {id: 14, cat: Audio/Audiobook, desc: "Audiobooks"} - - {id: 16, cat: Audio, desc: "Music Audio"} - - {id: 13, cat: Audio, desc: "Podcasts"} - - {id: 15, cat: Audio, desc: "Wrestling Themes"} - - {id: 29, cat: Books/EBook, desc: "Ebooks"} - - {id: 28, cat: Books/Mags, desc: "Magazines"} - - {id: 30, cat: Books/Other, desc: "Misc"} - - {id: 18, cat: Books/Other, desc: "Wrestling Newsletters"} - - {id: 34, cat: TV/Sport, desc: "Impact Wrestling PPV / One Nig"} - - {id: 9, cat: TV/Sport, desc: "Weekly"} - - {id: 33, cat: TV/Sport, desc: "Xplosion"} - - {id: 32, cat: TV/Sport, desc: "DVDRips"} - - {id: 31, cat: TV/Sport, desc: "DVDs"} - - {id: 20, cat: TV/Sport, desc: "Packs"} - - {id: 19, cat: PC, desc: "Computer Programs"} - - {id: 35, cat: PC/Games, desc: "Games"} - - {id: 36, cat: PC/Mobile-Other, desc: "Mobile Apps"} - - {id: 37, cat: TV/Sport, desc: "Boxing"} - - {id: 38, cat: TV/Sport, desc: "Classics"} - - {id: 12, cat: TV/Documentary, desc: "Documentary"} - - {id: 40, cat: TV, desc: "Indy Other Promotions"} - - {id: 44, cat: TV, desc: "Other MMA"} - - {id: 11, cat: TV, desc: "Other Videos"} - - {id: 42, cat: TV, desc: "Puro NJPW"} - - {id: 43, cat: TV, desc: "Self Defense Tutorials"} - - {id: 21, cat: TV, desc: "Shoots"} - - {id: 22, cat: TV, desc: "TV Episodes"} - - {id: 41, cat: TV/Sport, desc: "UFC"} - - {id: 10, cat: Movies, desc: "Wrestlers Movies"} - - {id: 26, cat: TV/Sport, desc: "Network"} - - {id: 24, cat: TV/Sport, desc: "NXT"} - - {id: 27, cat: TV/Sport, desc: "Other WWE Shows"} - - {id: 17, cat: TV/Sport, desc: "Raw"} - - {id: 23, cat: TV/Sport, desc: "Smackdown"} - - {id: 25, cat: TV/Sport, desc: "WWE PPV"} - - modes: - search: [q] - tv-search: [q, season, ep] - movie-search: [q] - music-search: [q] - book-search: [q] - -settings: - - name: username - type: text - label: Username - - name: password - type: password - label: Password - - name: freeleech - type: checkbox - label: Search freeleech only - default: false - - name: sort - type: select - label: Sort requested from site - default: 4 - options: - 4: created - 7: seeders - 5: size - 1: title - - name: type - type: select - label: Order requested from site - default: desc - options: - desc: desc - asc: asc - - name: info_results - type: info - label: Search results - default: "If you are getting the error Login Failed, got redirected then access the site with your browser and mark as read all PMs." - - name: info_activity - type: info - label: Account Inactivity - default: "Accounts inactive for more than 42 days are automatically deleted." - -login: - path: login.php - method: form - form: form[action="takelogin.php"] - inputs: - username: "{{ .Config.username }}" - password: "{{ .Config.password }}" - use_ssl: "" - perm_ssl: "" - returnto: / - error: - - selector: table.main:contains("Login failed!") - message: - selector: table tr td.colhead2 - test: - path: / - selector: a[href*="logout.php?hash_please="] - -search: - paths: - # https://ultimatewrestlingtorrents.com/browse.php?search=&searchin=title&incldead=0&only_free=1 - # note: site uses the catsX[]=nn method which cardigann does not support. without the cats the site returns nothing. so we hardcode all cats. - # https://ultimatewrestlingtorrents.com/browse.php?cats3[]=14&cats3[]=16&cats3[]=13&cats3[]=15&cats5[]=29&cats5[]=28&cats5[]=30&cats5[]=18&cats1[]=34&cats1[]=9&cats1[]=33&cats6[]=32&cats6[]=31&cats6[]=20&cats7[]=19&cats7[]=35&cats7[]=36&cats2[]=37&cats2[]=38&cats2[]=12&cats2[]=40&cats2[]=44&cats2[]=11&cats2[]=42&cats2[]=43&cats2[]=21&cats2[]=22&cats2[]=41&cats2[]=10&cats4[]=26&cats4[]=24&cats4[]=27&cats4[]=17&cats4[]=23&cats4[]=25&search=&searchin=title&incldead=1 - - path: browse.php - inputs: - $raw: "cats3[]=14&cats3[]=16&cats3[]=13&cats3[]=15&cats5[]=29&cats5[]=28&cats5[]=30&cats5[]=18&cats1[]=34&cats1[]=9&cats1[]=33&cats6[]=32&cats6[]=31&cats6[]=20&cats7[]=19&cats7[]=35&cats7[]=36&cats2[]=37&cats2[]=38&cats2[]=12&cats2[]=40&cats2[]=44&cats2[]=11&cats2[]=42&cats2[]=43&cats2[]=21&cats2[]=22&cats2[]=41&cats2[]=10&cats4[]=26&cats4[]=24&cats4[]=27&cats4[]=17&cats4[]=23&cats4[]=25" - search: "{{ .Keywords }}" - # title, descr, genre, all - searchin: title - # 0 active, 1 incldead, 2 onlydead - incldead: 1 - only_free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}" - sort: "{{ .Config.sort }}" - type: "{{ .Config.type }}" - - keywordsfilters: - - name: re_replace - args: ["(\\w+)", "+$1"] # prepend + to each word - - rows: - selector: table.table-bordered tr:has(a[href^="download.php?torrent="]) - filters: - - name: andmatch - - fields: - category: - selector: a[href^="browse.php?cat="] - attribute: href - filters: - - name: querystring - args: cat - title: - selector: a[href^="details.php?id="] - attribute: onmouseover - filters: - - name: regexp - args: "Tip\\('(.+?)" - download: - selector: a[href^="download.php?torrent="] - attribute: href - details: - selector: a[href^="details.php?id="] - attribute: href - files: - selector: td:nth-child(5) - date: - selector: td:nth-child(7) - # auto adjusted by site account profile - filters: - - name: dateparse - args: "MMM d yyyy hh:mm tt" - size: - selector: td:nth-child(8) - grabs: - selector: td:nth-child(9) - seeders: - selector: td:nth-child(10) - leechers: - selector: td:nth-child(11) - description: - case: - img[src="./pic/mod.gif"]: Verified - "*": Unverified - downloadvolumefactor: - case: - "a.info:contains(\"[FREE]\")": 0 - "a.info:contains(\"[SILVER]\")": 0.5 - "*": 1 - uploadvolumefactor: - text: 1 - minimumratio: - text: 1.0 - minimumseedtime: - # 12 hours (as seconds = 12 x 60 x 60) - text: 43200 -# U-232 V5