diff --git a/definitions/v11/ebooks-shares.yml b/definitions/v11/ebooks-shares.yml index 84d2f0407..158084434 100644 --- a/definitions/v11/ebooks-shares.yml +++ b/definitions/v11/ebooks-shares.yml @@ -54,6 +54,7 @@ caps: - {id: 340, cat: Books/EBook, desc: "Lit/RPG"} - {id: 341, cat: Books/EBook, desc: "Collections"} - {id: 352, cat: Books/EBook, desc: "Westerns"} + - {id: 370, cat: Books/EBook, desc: "Dystopian"} # Children & Y/A - {id: 299, cat: Books/EBook, desc: "Young Adult"} - {id: 298, cat: Books/EBook, desc: "Children's"} diff --git a/definitions/v11/f1gp.yml b/definitions/v11/f1gp.yml index 30228e5e9..c1b3183bb 100644 --- a/definitions/v11/f1gp.yml +++ b/definitions/v11/f1gp.yml @@ -32,12 +32,13 @@ caps: - {id: 22, cat: TV/Sport, desc: "MotoGP"} - {id: 23, cat: TV/Sport, desc: "Boxing"} - {id: 24, cat: Other, desc: "Magazines - Books"} - - {id: 25, cat: TV/Sport, desc: "NNASCAR Cup Series"} + - {id: 25, cat: TV/Sport, desc: "NNASCAR"} - {id: 26, cat: TV/Sport, desc: "Tennis"} - {id: 27, cat: TV/Sport, desc: "World Cup 2026"} - {id: 28, cat: TV/Sport, desc: "NBA"} - {id: 29, cat: TV/Sport, desc: "Indy 500"} - - {id: 30, cat: TV/Sport, desc: "Football"} + - {id: 30, cat: TV/Sport, desc: "Football/Soccer"} + - {id: 33, cat: TV/Sport, desc: "WRC/Rally"} modes: search: [q] diff --git a/definitions/v11/carphunter.yml b/definitions/v11/herobit.yml similarity index 62% rename from definitions/v11/carphunter.yml rename to definitions/v11/herobit.yml index 027f00632..53a3d0d68 100644 --- a/definitions/v11/carphunter.yml +++ b/definitions/v11/herobit.yml @@ -1,12 +1,16 @@ --- -id: carphunter -name: Carp-Hunter -description: "Carp-Hunter is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL" +id: herobit +replaces: + - carphunter +name: HeroBit +description: "HeroBit is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL" language: hu-HU type: private encoding: UTF-8 requestDelay: 2 links: + - https://herobit.info/ +legacylinks: - https://carp-hunter.hu/ caps: @@ -16,15 +20,11 @@ caps: - {id: 2, cat: Movies/SD, desc: "Film/Cam/Hun", default: true} - {id: 8, cat: Movies/DVD, desc: "Film/DVD/Eng", default: true} - {id: 7, cat: Movies/DVD, desc: "Film/DVD/Hun", default: true} - - {id: 16, cat: Movies/HD, desc: "Film/HD1080P/Eng", default: true} - - {id: 15, cat: Movies/HD, desc: "Film/HD1080P/Hun", default: true} - - {id: 14, cat: Movies/HD, desc: "Film/HD720P/Eng", default: true} - - {id: 13, cat: Movies/HD, desc: "Film/HD720P/Hun", default: true} + - {id: 18, cat: Movies/HD, desc: "Film/HD/Eng", default: true} + - {id: 17, cat: Movies/HD, desc: "Film/HD/Hun", default: true} - {id: 4, cat: Movies/SD, desc: "Film/SD/Eng", default: true} - {id: 3, cat: Movies/SD, desc: "Film/SD/Hun", default: true} - - {id: 18, cat: Movies/UHD, desc: "Film/UHD/Eng", default: true} - - {id: 17, cat: Movies/UHD, desc: "Film/UHD/Hun", default: true} - - {id: 23, cat: Audio/Audiobook, desc: "Hangosköny", default: true} + - {id: 23, cat: Audio/Audiobook, desc: "Hangoskönyv", default: true} - {id: 19, cat: PC/Games, desc: "Játék/ISO", default: true} - {id: 20, cat: PC/Games, desc: "Játék/RIP", default: true} - {id: 24, cat: Other, desc: "Képek", default: true} @@ -35,19 +35,23 @@ caps: - {id: 25, cat: PC/Mobile-Other, desc: "Mobil", default: true} - {id: 30, cat: PC/ISO, desc: "Programok/ISO", default: true} - {id: 31, cat: PC/0day, desc: "Programok/RIP", default: true} - - {id: 33, cat: TV, desc: "Sorozat/Eng", default: true} - - {id: 32, cat: TV, desc: "Sorozat/Hun", default: true} + - {id: 33, cat: TV/SD, desc: "Sorozat/Eng", default: true} + - {id: 43, cat: TV/HD, desc: "Sorozat/HD/Eng", default: true} + - {id: 42, cat: TV/HD, desc: "Sorozat/HD/Hun", default: true} + - {id: 32, cat: TV/SD, desc: "Sorozat/Hun", default: true} - {id: 29, cat: Audio/Lossless, desc: "Zene/FLAC/Eng", default: true} - {id: 28, cat: Audio/Lossless, desc: "Zene/FLAC/Hun", default: true} - {id: 27, cat: Audio/MP3, desc: "Zene/MP3/Eng", default: true} - {id: 26, cat: Audio/MP3, desc: "Zene/MP3/Hun", default: true} - - {id: 34, cat: XXX, desc: "XXX/Filmek", default: false} + - {id: 41, cat: XXX/DVD, desc: "XXX/DVD", default: false} + - {id: 34, cat: XXX/SD, desc: "XXX/Filmek", default: false} + - {id: 40, cat: XXX/x264, desc: "XXX/HD", default: false} - {id: 39, cat: XXX/ImageSet, desc: "XXX/Képek", default: false} modes: search: [q] - tv-search: [q, season, ep] - movie-search: [q] + tv-search: [q, season, ep, imdbid] + movie-search: [q, imdbid] music-search: [q] book-search: [q] @@ -79,41 +83,42 @@ settings: - name: info_settings type: info label: Settings Requirement - default: This indexer only supports the details link option.
Navigate to the web site account Beállítások (Settings), change the Letöltések (Download) option to Link a részletekhez (Link to Details), and click Mentés (Save). Selecting Lenyíló menü (Dropdown Menu) will return no results. + default: This indexer only supports the direct datasheet link option.
Navigate to the web site account Beállítások (Settings), change the Torrent lista viselkedése (The behavior of the Torrent List) option to Közvetlen adatlap link (Direct datasheet link), and click Mentés (Save). Selecting Lenyíló részletek (Dropdown Details) will return no results. + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrent oldalanként Torrents per page: setting to 100 on your account profile. The default is 35. login: - # using cookie method because login page has embedded Google reCAPTCHA + # using cookie method because login page has embedded Google reCAPTCHA and 2FA support method: cookie inputs: cookie: "{{ .Config.cookie }}" test: path: index.php - selector: a[href^="logout.php"] + selector: a[href^="logout.php?k="] search: paths: - path: browse.php - categories: [1, 2, 8, 7, 16, 15, 14, 13, 4, 3, 18, 17, 23, 19, 20, 24, 21, 22, 35, 36, 25, 30, 31, 33, 32, 29, 28, 27, 26] + categories: [1, 2, 8, 7, 18, 17, 4, 3, 23, 19, 20, 24, 21, 22, 35, 36, 25, 30, 31, 33, 43, 42, 32, 29, 28, 27, 26] - path: browse.php - categories: [34, 39] + categories: [41, 34, 40, 39] inputs: xxx: 1 - keywordsfilters: - # the site uses % for wildcard - - name: re_replace - args: ["[^a-zA-Z0-9]+", "%"] + inputs: $raw: "{{ range .Categories }}cat[]={{.}}&{{end}}" - search: "{{ .Keywords }}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # 0 both, 1 onlyactive, 2 onlydead, 3 onlyfree, 4 x2 torrents, 5 mytorrents, 6 waiting for seeds - incldead: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}" + type: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}" sort: "{{ .Config.sort }}" order: "{{ .Config.type }}" # does not support imdbid searches # can support genre searching but you need to know the id, eg &genre2=1 for Comedy (id is 2) rows: - selector: "table[cellpadding=\"3\"][style=\"width: 920px;\"] > tbody > tr:has(a[href^=\"browse.php?cat=\"])" + selector: tr.torrent-row fields: category: @@ -123,38 +128,22 @@ search: - name: querystring args: cat title: - selector: a[href*="/details.php?id="] - attribute: title + selector: a[href*="details.php?id="] details: - selector: a[href*="/details.php?id="] + selector: a[href*="details.php?id="] attribute: href download: - selector: a[href*="/details.php?id="] + selector: a[href^="download.php?id="] attribute: href - filters: - - name: replace - args: ["/details", "/download"] + poster: + selector: a[href^="download.php?id="] button + attribute: data-poster imdbid: selector: a[href*="imdb.com/title/tt"] attribute: href - genre: - selector: small[title] - attribute: title - description: - case: - img[src="/pic/yes.png"]: "Verified: {{ .Result.genre }}" - img[src="/pic/nincs.png"]: "Unverified: {{ .Result.genre }}" - poster: - selector: a[onmouseover] - attribute: onmouseover - filters: - - name: regexp - args: "showTorrentThumb\\('(.*?)', " date: - selector: td:nth-last-child(6) + selector: div.torrent-date > strong filters: - - name: regexp - args: (\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}) - name: replace args: ["\u00a0", " "] - name: append @@ -162,21 +151,28 @@ search: - name: dateparse args: "yyyy-MM-dd HH:mm:ss zzz" size: - selector: td:nth-last-child(5) + selector: div.torrent-size-box grabs: selector: td:nth-last-child(4) seeders: selector: td:nth-last-child(3) leechers: selector: td:nth-last-child(2) + genre: + selector: div.torrent-meta-line > span:nth-child(2) + attribute: title + description: + case: + img[src="/pic/yes.png"]: "Verified: {{ .Result.genre }}" + img[src="/pic/nincs.png"]: "Unverified: {{ .Result.genre }}" downloadvolumefactor: case: - font:contains("x0"): 0 + span:contains("x0"): 0 "*": 1 uploadvolumefactor: case: - font:contains("x2"): 2 - font:contains("x4"): 4 + span:contains("x2"): 2 + span:contains("x4"): 4 "*": 1 minimumratio: text: 1.0 diff --git a/definitions/v11/musopia.yml b/definitions/v11/musopia.yml index c71400320..6894a7210 100644 --- a/definitions/v11/musopia.yml +++ b/definitions/v11/musopia.yml @@ -162,8 +162,8 @@ search: minimumratio: text: 1.0 minimumseedtime: - # 1 day (as seconds = 24 x 60 x 60) - text: 86400 + # 3 days (as seconds = 3 x 24 x 60 x 60) + text: 259200 description: selector: td.rowfollow:nth-child(2) remove: a, b, font, img, span diff --git a/definitions/v11/ncore.yml b/definitions/v11/ncore.yml index 9fb81d287..2c205307f 100644 --- a/definitions/v11/ncore.yml +++ b/definitions/v11/ncore.yml @@ -160,7 +160,7 @@ search: selector: div.box_feltoltve2 filters: - name: append - args: " +01:00" # CET + args: " +02:00" # EET - name: dateparse args: "yyyy-MM-ddHH:mm:ss zzz" downloadvolumefactor: diff --git a/definitions/v11/nexum-api.yml b/definitions/v11/nexum-api.yml index 25ba0fd22..e5ac6584f 100644 --- a/definitions/v11/nexum-api.yml +++ b/definitions/v11/nexum-api.yml @@ -13,26 +13,31 @@ caps: # use https://nexum-core.com/api/v1/categories?apikey=YOUR-APIKEY for cat mappings, name is desc categorymappings: - {id: 10, cat: Books/EBook, desc: "Livres"} + - {id: 76, cat: PC/0day, desc: "Windows"} - {id: 1, cat: Movies, desc: "Films"} - - {id: 23, cat: Movies/Other, desc: "Film documentaire"} - - {id: 11, cat: Books/Comics, desc: "BD"} - {id: 9, cat: Audio/Audiobook, desc: "Livres audio"} + - {id: 11, cat: Books/Comics, desc: "BD"} + - {id: 23, cat: Movies/Other, desc: "Film documentaire"} + - {id: 77, cat: PC, desc: "Linux"} - {id: 12, cat: Books/Comics, desc: "Comics"} - {id: 24, cat: TV/Documentary, desc: "Série documentaire"} + - {id: 78, cat: PC/Mac, desc: "MacOS"} - {id: 2, cat: TV, desc: "Séries TV"} - - {id: 18, cat: Audio, desc: "Musique"} - {id: 3, cat: TV/Documentary, desc: "Documentaires"} - {id: 13, cat: Books/Comics, desc: "Mangas"} + - {id: 18, cat: Audio, desc: "Musique"} + - {id: 22, cat: TV, desc: "Émissions TV"} - {id: 19, cat: Audio/Other, desc: "Podcasts"} - {id: 14, cat: Books/Mags, desc: "Journaux"} - - {id: 22, cat: TV, desc: "Émissions TV"} - {id: 4, cat: TV/Anime, desc: "Animés"} - {id: 20, cat: Audio/Other, desc: "Samples"} - - {id: 5, cat: TV/Other, desc: "Concerts / Spectacles"} - {id: 21, cat: Audio/Other, desc: "DJ Mix"} + - {id: 5, cat: TV/Other, desc: "Concerts / Spectacles"} - {id: 7, cat: TV/Sport, desc: "Sports"} - {id: 8, cat: Books, desc: "eBooks"} - {id: 17, cat: Audio, desc: "Audio"} + - {id: 74, cat: Other, desc: "Formation"} + - {id: 75, cat: PC/Games, desc: "Jeux Vidéo"} modes: search: [q] diff --git a/definitions/v11/ptfiles.yml b/definitions/v11/ptfiles.yml index 3d8a0fd92..3b7af4411 100644 --- a/definitions/v11/ptfiles.yml +++ b/definitions/v11/ptfiles.yml @@ -5,6 +5,8 @@ description: "PTFiles (PTF) is a Private Torrent Tracker for MOVIES / TV / GENER language: en-US type: private encoding: windows-1252 +certificates: + - 18e07892474429b99f7f9a20768792d31234433e # Expired 27th May 2026 links: - https://ptfiles.net/ diff --git a/definitions/v11/zenith.yml b/definitions/v11/zenith.yml new file mode 100644 index 000000000..a56cef987 --- /dev/null +++ b/definitions/v11/zenith.yml @@ -0,0 +1,198 @@ +--- +id: zenith +name: Zenith +description: "Zenith is an Private Torrent Tracker for MOVIES / TV / GENERAL" +language: en-US +type: private +encoding: UTF-8 +links: + - https://znth.cx/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Movies"} + - {id: 2, cat: TV, desc: "TV"} + - {id: 5, cat: Audio, desc: "Music"} + - {id: 6, cat: Books, desc: "Books"} + - {id: 7, cat: Audio/Audiobook, desc: "Audiobooks"} + - {id: 3, cat: Console, desc: "Games"} + - {id: 8, cat: PC, desc: "Software"} + - {id: 9, cat: Other, desc: "Misc"} + + 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 Zenith 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 get disabled after 90 days of no logins or any sort of activity. Accounts will also get soft deleted after 120 days." + +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.69 but torrents must be seeded for 3 days regardless of ratio +# minimumratio: +# text: 0.69 + minimumseedtime: + # 3 days (as seconds = 3 x 24 x 60 x 60) + text: 259200 +# json UNIT3D 9.2.0