From ea330c65e019b9b49db8a3d15b26647174bbee77 Mon Sep 17 00:00:00 2001
From: ineednewpajamas <73252768+ineednewpajamas@users.noreply.github.com>
Date: Thu, 8 Jan 2026 15:17:16 -0600
Subject: [PATCH] jackett indexers as of
bc8300ec5ae99462fc16fb039bab101aadaa88a7 [2026-01-08T21:17:16Z]
Added Indexers: definitions/v11/dubhe.yml definitions/v11/jptv4us-api.yml definitions/v11/march.yml
Removed Indexers: definitions/v11/exttorrents.yml
Modified Indexers: definitions/v11/mactorrentsdownload.yml
definitions/v11/tmghub.yml
definitions/v11/tocashare.yml
---
definitions/v11/dubhe.yml | 187 ++++++++++++++++++++++
definitions/v11/exttorrents.yml | 179 ---------------------
definitions/v11/jptv4us-api.yml | 197 ++++++++++++++++++++++++
definitions/v11/mactorrentsdownload.yml | 4 +-
definitions/v11/march.yml | 176 +++++++++++++++++++++
definitions/v11/tmghub.yml | 39 +++--
definitions/v11/tocashare.yml | 10 +-
7 files changed, 595 insertions(+), 197 deletions(-)
create mode 100644 definitions/v11/dubhe.yml
delete mode 100644 definitions/v11/exttorrents.yml
create mode 100644 definitions/v11/jptv4us-api.yml
create mode 100644 definitions/v11/march.yml
diff --git a/definitions/v11/dubhe.yml b/definitions/v11/dubhe.yml
new file mode 100644
index 000000000..fc956b1a3
--- /dev/null
+++ b/definitions/v11/dubhe.yml
@@ -0,0 +1,187 @@
+---
+id: dubhe
+name: dubhe (天枢)
+description: "dubhe (天枢) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
+language: zh-CN
+type: private
+encoding: UTF-8
+links:
+ - https://dubhe.site/
+
+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: "动漫/Anime"}
+ - {id: 406, cat: Audio/Video, desc: "音乐视频/Music Videos"}
+ - {id: 407, cat: TV/Sport, desc: "体育运动/Sports"}
+ - {id: 408, cat: Audio, desc: "高品质音频/HQ Audio"}
+ - {id: 409, cat: Other/Misc, desc: "其他/Other"}
+ - {id: 410, cat: Books, desc: "书籍/Books"}
+ - {id: 411, cat: Other, desc: "照片/Photo"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep, imdbid, doubanid]
+ movie-search: [q, imdbid, doubanid]
+ music-search: [q]
+ book-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:
- Veteran User and above will be retained forever
- Elite User and above will not have their account deleted after parking (in the control panel)
- Users with a parked account will be deleted if they do not log in for 400 consecutive days
- Users with a non-parked account will be deleted if they do not log in for 150 consecutive days
- 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: "{{ 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(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
+ 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)
+ optional: true
+ default: 512MB
+ seeders:
+ selector: td.rowfollow:nth-child(6)
+ optional: true
+ default: 0
+ leechers:
+ selector: td.rowfollow:nth-child(7)
+ optional: true
+ default: 0
+ grabs:
+ selector: td.rowfollow:nth-child(8)
+ optional: true
+ default: 0
+ 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
+ minimumratio:
+ text: 2.0
+ minimumseedtime:
+ # 1 day (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.11 2025-11-02
diff --git a/definitions/v11/exttorrents.yml b/definitions/v11/exttorrents.yml
deleted file mode 100644
index 8aff9770d..000000000
--- a/definitions/v11/exttorrents.yml
+++ /dev/null
@@ -1,179 +0,0 @@
----
-id: exttorrents
-name: EXT Torrents
-description: "EXT Torrents is a Public torrent site for MOVIES / TV / GENERAL"
-language: en-US
-type: public
-encoding: UTF-8
-requestDelay: 5
-links:
- - https://ext.to/
- - https://search.extto.com/
- - https://extranet.torrentbay.st/
-legacylinks:
- - https://ext.unblockninja.com/
- - https://t.extto.com/
- - https://torrent.extto.com/
- - https://site.extto.com/
- - https://ext.torrentbay.to/
- - https://extranet.torrentbay.to/
- - https://extranet.torrentbay.net/
-
-caps:
- categorymappings:
- - {id: "/anime/", cat: TV/Anime, desc: Anime}
- - {id: "/anime//anime/audio-lossy/", cat: Audio, desc: Anime Audio Lossy}
- - {id: "/anime//anime/audio-lossless/", cat: Audio/Lossless, desc: Anime Audio Lossless}
- - {id: "/anime//anime/english-translated/", cat: TV/Anime, desc: Anime English Translated}
- - {id: "/anime//anime/live-action-english/", cat: TV/Anime, desc: Anime Live Action English}
- - {id: "/anime//anime/live-action-raw/", cat: TV/Anime, desc: Anime Live Action Raw}
- - {id: "/anime//anime/raw/", cat: TV/Anime, desc: Anime Raw}
- - {id: "/anime//anime/subs/", cat: TV/Anime, desc: Anime Subs}
- - {id: "/anime//raw/", cat: TV/Anime, desc: Anime Raw}
- - {id: "/applications/", cat: PC, desc: Apps}
- - {id: "/applications//applications/android/", cat: PC/Mobile-Android, desc: Apps Android}
- - {id: "/applications//applications/ios/", cat: PC/Mobile-iOS, desc: Apps iOS}
- - {id: "/applications//applications/linux/", cat: PC, desc: Apps Linux}
- - {id: "/applications//applications/mac/", cat: PC/Mac, desc: Apps Mac}
- - {id: "/applications//applications/other-applications/", cat: PC/Mobile-Other, desc: Apps Other}
- - {id: "/applications//applications/windows/", cat: PC/0day, desc: Apps Windows}
- - {id: "/books/", cat: Books, desc: Books}
- - {id: "/books//books/audio-books/", cat: Audio/Audiobook, desc: Books Audiobooks}
- - {id: "/books//books/comics/", cat: Books/Comics, desc: Books Comics}
- - {id: "/books//books/ebooks/", cat: Books/EBook, desc: Books Ebooks}
- - {id: "/books//books/manga-english/", cat: Books/Comics, desc: Books Manga English}
- - {id: "/books//books/manga-raw/", cat: Books/Comics, desc: Books Manga Raw}
- - {id: "/games/", cat: PC/Games, desc: Games}
- - {id: "/games//games/mac/", cat: PC/Mac, desc: Games Mac}
- - {id: "/games//games/nds/", cat: Console/NDS, desc: Games NDS}
- - {id: "/games//games/other-games/", cat: Console/Other, desc: Games Other}
- - {id: "/games//games/pc-games/", cat: PC/Games, desc: Games PC}
- - {id: "/games//games/ps3/", cat: Console/PS3, desc: Games PS3}
- - {id: "/games//games/ps4/", cat: Console/PS4, desc: Games PS4}
- - {id: "/games//games/psp/", cat: Console/PSP, desc: Games PSP}
- - {id: "/games//games/switch/", cat: Console/Other, desc: Games Switch}
- - {id: "/games//games/wii/", cat: Console/Wii, desc: Games Wii}
- - {id: "/games//games/xbox360/", cat: Console/XBox 360, desc: Games Xbox360}
- - {id: "/movies/", cat: Movies, desc: Movies}
- - {id: "/movies//movies/3d-movies/", cat: Movies/3D, desc: Movies 3D}
- - {id: "/movies//movies/bollywood/", cat: Movies, desc: Movies Bollywood}
- - {id: "/movies//movies/documentary/", cat: Movies, desc: Movies Documentary}
- - {id: "/movies//movies/dubbed-movies/", cat: Movies, desc: Movies Dubbed}
- - {id: "/movies//movies/dvd/", cat: Movies/DVD, desc: Movies DVD}
- - {id: "/movies//movies/highres-movies/", cat: Movies/HD, desc: Movies Highres}
- - {id: "/movies//movies/movie-clips/", cat: Movies/Other, desc: Movies Movie clips}
- - {id: "/movies//movies/mp4/", cat: Movies, desc: Movies MP4}
- - {id: "/movies//movies/music-videos/", cat: Audio/Video, desc: Movies Music videos}
- - {id: "/movies//movies/other-movies/", cat: Movies, desc: Movies Other Movies}
- - {id: "/movies//movies/ultrahd/", cat: Movies/UHD, desc: Movies UltraHD}
- - {id: "/music/", cat: Audio, desc: Music}
- - {id: "/music//music/aac/", cat: Audio, desc: Music AAC}
- - {id: "/music//music/lossless/", cat: Audio/Lossless, desc: Music Lossless}
- - {id: "/music//music/mp3/", cat: Audio/MP3, desc: Music MP3}
- - {id: "/music//music/other-music/", cat: Audio/Other, desc: Music Other}
- - {id: "/music//music/radio-shows/", cat: Audio, desc: Music Radio Shows}
- - {id: "/other/", cat: Other, desc: Other}
- - {id: "/tv/", cat: TV, desc: TV}
- - {id: "/tv//tv/episodes-hd/", cat: TV/HD, desc: TV Episodes HD}
- - {id: "/tv//tv/episodes-sd/", cat: TV/SD, desc: TV Episodes SD}
- - {id: "/tv//tv/episodes-4k-uhd/", cat: TV/UHD, desc: TV Episodes 4K}
- - {id: "/tv//tv/big-season-packs/", cat: TV, desc: TV Big Season Packs}
- - {id: "/tv//tv/season-packs/", cat: TV, desc: TV Season Packs}
- - {id: "/tv//tv/sports/", cat: TV/Sport, desc: TV Sports}
- - {id: "/video/", cat: XXX, desc: XXX Video}
- - {id: "/xxx/", cat: XXX, desc: XXX}
- - {id: "/xxx//xxx/games/", cat: XXX/Other, desc: XXX Games}
- - {id: "/xxx//xxx/hentai/", cat: XXX/Other, desc: XXX Hentai}
- - {id: "/xxx//xxx/magazines/", cat: XXX/Other, desc: XXX Magazines}
- - {id: "/xxx//xxx/pictures/", cat: XXX/ImageSet, desc: XXX Pictures}
- - {id: "/xxx//xxx/video/", cat: XXX, desc: XXX Video}
-
- modes:
- search: [q]
- tv-search: [q, season, ep, imdbid]
- movie-search: [q, imdbid]
- music-search: [q]
- book-search: [q]
-
-settings:
- - name: sort
- type: select
- label: Sort requested from site
- default: age
- options:
- age: created
- seed: seeders
- size: size
- - name: type
- type: select
- label: Order requested from site
- default: desc
- options:
- desc: desc
- asc: asc
- - name: info_flaresolverr
- type: info_flaresolverr
-
-search:
- paths:
- # https://ext.to/browse/?sort=age&order=desc&age=4&user_sort=1&with_adult=1
- # https://ext.to/browse/?sort=age&order=desc&user_sort=1&q=wipeout&with_adult=1
- # https://ext.to/browse/?imdb_id=tt2693776
- - path: browse/
- - path: browse/
- inputs:
- page: 2
- followredirect: true
- inputs:
- q: "{{ .Keywords }}"
- sort: "{{ .Config.sort }}"
- order: "{{ .Config.type }}"
- # 0=last 24 hours, 1=last 3 days, 2=last week, 3=last 2 weeks, 4=last month
- age: "{{ if or .Keywords .Query.IMDBID }}{{ else }}0{{ end }}"
- # familysafe 0=enabled, 1=disabled
- with_adult: "{{ if .Query.IMDBID }}{{ else }}1{{ end }}"
- imdb_id: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}"
- user_sort: 1
-
- rows:
- selector: table.table-striped > tbody > tr
-
- fields:
- category_part1:
- selector: td:nth-child(1) div div a:nth-child(2)
- attribute: href
- optional: true
- category_part2:
- selector: td:nth-child(1) div div a:nth-child(3)
- attribute: href
- optional: true
- category_combined:
- text: "{{ .Result.category_part1 }}{{ .Result.category_part2 }}"
- optional: true
- category:
- text: "{{ if .Result.category_combined }}{{ .Result.category_combined }}{{ else }}/other/{{ end }}"
- title:
- selector: td:nth-child(1) div a
- details:
- selector: td:nth-child(1) div a
- attribute: href
- infohash:
- selector: a.search-magnet-btn
- attribute: data-hash
- size:
- selector: td:nth-child(2)
- files:
- selector: td:nth-child(3)
- optional: true
- default: 1
- date:
- selector: td:nth-child(4)
- seeders:
- selector: td:nth-child(5)
- leechers:
- selector: td:nth-child(6)
- downloadvolumefactor:
- text: 0
- uploadvolumefactor:
- text: 1
-# engine n/a
diff --git a/definitions/v11/jptv4us-api.yml b/definitions/v11/jptv4us-api.yml
new file mode 100644
index 000000000..f68470417
--- /dev/null
+++ b/definitions/v11/jptv4us-api.yml
@@ -0,0 +1,197 @@
+---
+id: jptv4us-api
+name: JPTV4us (API)
+description: "JPTV4us is a JAPANESE Private Torrent Tracker for MOVIES / TV / MUSIC / GENERAL"
+language: en-US
+type: private
+encoding: UTF-8
+links:
+ - https://jptv4.us/
+
+caps:
+ categorymappings:
+ - {id: 1, cat: TV/Anime, desc: "Anime Movie"}
+ - {id: 2, cat: TV/Anime, desc: "Anime Series"}
+ - {id: 3, cat: TV/Documentary, desc: "Documentary"}
+ - {id: 4, cat: TV, desc: "Drama"}
+ - {id: 5, cat: TV/Other, desc: "Informational"}
+ - {id: 6, cat: Movies, desc: "Movie"}
+ - {id: 7, cat: Audio/Video, desc: "Music"}
+ - {id: 8, cat: TV/Other, desc: "News"}
+ - {id: 9, cat: TV/Other, desc: "Variety"}
+ - {id: 10, cat: Other, desc: "Other"}
+ - {id: 11, cat: Audio, desc: "Audio Only"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
+ movie-search: [q, imdbid, tmdbid]
+ music-search: [q]
+ book-search: [q]
+
+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 JPTV4us 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
+
+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 7 days regardless of ratio
+# minimumratio:
+# text: 0.4
+ minimumseedtime:
+ # 7 days (as seconds = 7 x 24 x 60 x 60)
+ text: 604800
+# json UNIT3D 9.1.7
diff --git a/definitions/v11/mactorrentsdownload.yml b/definitions/v11/mactorrentsdownload.yml
index d3c13cc38..0c23d0383 100644
--- a/definitions/v11/mactorrentsdownload.yml
+++ b/definitions/v11/mactorrentsdownload.yml
@@ -31,11 +31,11 @@ download:
- name: replace
args: ["/download?", "/download/?"]
selectors:
- - selector: script:contains("downloadLink")
+ - selector: script:contains("torrentLink")
usebeforeresponse: true
filters:
- name: regexp
- args: "downloadLink = '(.+?)';"
+ args: "torrentLink = '(.+?)';"
search:
paths:
diff --git a/definitions/v11/march.yml b/definitions/v11/march.yml
new file mode 100644
index 000000000..6b0832be9
--- /dev/null
+++ b/definitions/v11/march.yml
@@ -0,0 +1,176 @@
+---
+id: march
+name: March
+description: "March is a CHINESE Private Torrent Tracker for MOVIES / TV"
+language: zh-CN
+type: private
+encoding: UTF-8
+links:
+ - https://duckboobee.org/
+
+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: "Documentary/纪录片"}
+ - {id: 405, cat: TV/Anime, desc: "Animations/动画"}
+ - {id: 406, cat: Audio/Video, desc: "MV/演唱会"}
+ - {id: 407, cat: TV/Sport, desc: "Sports/体育"}
+ - {id: 408, cat: Audio, desc: "Music/音乐"}
+ - {id: 409, cat: Other/Misc, desc: "Misc/其他"}
+
+ 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: "Account retention rules:- Veteran User and above will be retained forever
- Elite User and above will not have their account deleted after parking (in the control panel)
- Users with a parked account will be deleted if they do not log in for 400 consecutive days
- Users with a non-parked account will be deleted if they do not log in for 150 consecutive days
- 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: "{{ 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
+ poster:
+ selector: img[data-src]
+ attribute: data-src
+ 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
+ minimumratio:
+ text: 2.0
+ minimumseedtime:
+ # 2 days (as seconds = 2 x 24 x 60 x 60)
+ text: 172800
+ description:
+ selector: td.rowfollow:nth-child(2)
+ remove: a, b, font, img, span
+# NexusPHP v1.9.9 2025-10-02
diff --git a/definitions/v11/tmghub.yml b/definitions/v11/tmghub.yml
index fc2eb4a6d..cabae7f46 100644
--- a/definitions/v11/tmghub.yml
+++ b/definitions/v11/tmghub.yml
@@ -21,6 +21,7 @@ caps:
- {id: 17, cat: Movies/WEB-DL, desc: "WEB-DL/DTH"}
- {id: 14, cat: Movies/DVD, desc: "DVD-Rips"}
- {id: 15, cat: Movies/HD, desc: "DTH/HD-Rip"}
+ - {id: 45, cat: Movies/Other, desc: "AI Encodes"}
- {id: 20, cat: Movies/SD, desc: "VHS/TV-Rip"}
- {id: 21, cat: Movies, desc: "Video CDs"}
- {id: 19, cat: Movies, desc: "Pre Releases "}
@@ -138,48 +139,56 @@ search:
by: "{{ .Config.type }}"
rows:
- selector: "table#tottest[width=\"100%\"] tr:has(a[href^=\"index.php?page=torrent-details\"]):not(:has(img[title=\"Allready Grabbed !!\"]))"
+ selector: "table.torrents tr:has(a[href^=\"index.php?page=torrent-details\"]):not(:has(img[title=\"Allready Grabbed !!\"]))"
fields:
category:
- selector: td a[href^="index.php?page=torrents&category="]
+ selector: td.category > a
attribute: href
filters:
- name: querystring
args: category
title:
- selector: td a[href^="index.php?page=torrent-details"]
+ selector: td.torrent-first a
details:
- selector: td a[href^="index.php?page=torrent-details"]
+ selector: td.torrent-first a
attribute: href
download:
- selector: td a[href^="index.php?page=torrent-details"]
- attribute: href
- imdbid:
- selector: a[href*="imdb.com/title/tt"]
+ selector: td.download > a
attribute: href
poster:
- selector: td a[href^="index.php?page=torrent-details"]
+ selector: td.torrent-first a
attribute: onmouseover
filters:
- name: regexp
- args: "src=(.+?) width"
+ args: "src=(.+?) border"
date:
# 6 weeks ago
- selector: td a[href^="index.php?page=torrent-details"]
+ selector: td.torrent-first a
attribute: onmouseover
filters:
- name: regexp
args: "Added\\:(\\d+ \\w+ \\w+)<"
- name: timeago
size:
- selector: td:nth-child(5)
+ selector: td.size
grabs:
- selector: td:nth-child(6)
+ selector: td.torrent-first div div
+ filters:
+ - name: regexp
+ args: "^\\d+\\s+\\d+\\s+(.+)"
+ - name: replace
+ args: ["---", "0"]
seeders:
- selector: td:nth-child(7)
+ selector: td.torrent-first div div
+ filters:
+ - name: regexp
+ args: "^(\\d+)\\s+\\d+\\s+.+"
leechers:
- selector: td:nth-child(8)
+ selector: td.torrent-first div div
+ filters:
+ - name: regexp
+ args: "^\\d+\\s+(\\d+)\\s+.+"
downloadvolumefactor:
case:
img[src="gold/gold.gif"]: 0
diff --git a/definitions/v11/tocashare.yml b/definitions/v11/tocashare.yml
index 5ce39c07e..2ad8315b5 100644
--- a/definitions/v11/tocashare.yml
+++ b/definitions/v11/tocashare.yml
@@ -12,9 +12,17 @@ legacylinks:
caps:
categorymappings:
+ - {id: 1, cat: Books/Mags, desc: "Revistas"}
+ - {id: 2, cat: TV, desc: "Seriado"}
+ - {id: 3, cat: Audio/Audiobook, desc: "Música"}
+ - {id: 4, cat: Console, desc: "Jogo"}
+ - {id: 5, cat: PC, desc: "Aplicativo"}
- {id: 6, cat: Books/EBook, desc: "E-Books"}
- {id: 7, cat: Other, desc: "Cursos"}
- - {id: 9, cat: Audio/Audiobook, desc: "Audio E-Book"}
+ - {id: 8, cat: XXX/ImageSet, desc: "Fotos Adultas"}
+ - {id: 9, cat: Audio/Audiobook, desc: "Audio livro"}
+ - {id: 10, cat: Books/Comics, desc: "HQs/Mangas"}
+ - {id: 11, cat: TV, desc: "Shows"}
modes:
search: [q]