diff --git a/definitions/v7/acidlounge.yml b/definitions/v7/acidlounge.yml index 128833d82..0bc55874b 100644 --- a/definitions/v7/acidlounge.yml +++ b/definitions/v7/acidlounge.yml @@ -5,8 +5,6 @@ description: "Acid Lounge (A-L) is a Private Torrent Tracker for 0DAY / GENERAL" language: en-US type: private encoding: UTF-8 -certificates: - - ed11f0187f4aafad54382796f112ecf4bec5d76b # Expired 28 Oct 2023 links: - https://www.acid-lounge.org.uk/ diff --git a/definitions/v7/beload.yml b/definitions/v7/beload.yml index 2c6713626..bab55e233 100644 --- a/definitions/v7/beload.yml +++ b/definitions/v7/beload.yml @@ -98,7 +98,8 @@ search: # does not support imdbid searches rows: - selector: "td.text table tbody tr:has(a[href^=\"details.php?id=\"]):not(:has(a[href=\"browse.php?cat=0\"]))" + selector: "div.torrents-container > table > tbody > tr > td.text > table > tbody > tr:has(a[href^=\"details.php?id=\"]):not(:has(a[href=\"browse.php?cat=0\"]))" + after: 1 fields: category: @@ -108,11 +109,8 @@ search: - name: querystring args: cat title: - selector: a[href^="details.php?id="] + selector: a[href^="details.php?id="][title] attribute: title - filters: - - name: regexp - args: "Név: (.+?)(\\n|$)" details: selector: a[href^="details.php?id="] attribute: href @@ -126,34 +124,35 @@ search: selector: a.preview attribute: href date: - selector: td:nth-last-child(5) + selector: td:nth-last-child(6) > a + attribute: title filters: - name: append args: " +01:00" # CET - name: dateparse args: "yyyy-MM-dd HH:mm:ss zzz" files: - selector: td:nth-last-child(7) + selector: td:nth-last-child(8) size: - selector: td:nth-last-child(4) b + selector: td:nth-last-child(5) b grabs: - selector: td:nth-last-child(3) + selector: td:nth-last-child(4) seeders: - selector: td:nth-last-child(2) + selector: td:nth-last-child(3) leechers: - selector: td:nth-last-child(1) + selector: td:nth-last-child(2) description: case: i.fa-check: Verified i.fa-question: Unverified downloadvolumefactor: case: - font:contains("x0"): 0 + "span[style=\"font-size: 10px;\"]:contains(\"0x\")": 0 "*": 1 uploadvolumefactor: case: - font:contains("x2"): 2 - font:contains("x4"): 4 + "span[style=\"font-size: 10px;\"]:contains(\"2x\")": 2 + "span[style=\"font-size: 10px;\"]:contains(\"4x\")": 4 "*": 1 minimumseedtime: # 3 days (as seconds = 3 x 24 x 60 x 60) diff --git a/definitions/v7/cinematik.yml b/definitions/v7/cinematik.yml index 9363dc78c..88bdf77cb 100644 --- a/definitions/v7/cinematik.yml +++ b/definitions/v7/cinematik.yml @@ -6,121 +6,155 @@ language: en-US type: private encoding: UTF-8 links: + - https://cinematik.net/ +legacylinks: - https://www.cinematik.net/ caps: categorymappings: - - {id: 1, cat: Movies, desc: "Comedy"} - - {id: 4, cat: Movies, desc: "Action"} - - {id: 5, cat: Movies, desc: "Horror"} - - {id: 6, cat: Movies, desc: "Drama"} - - {id: 7, cat: Movies, desc: "Documentary"} - - {id: 9, cat: Movies, desc: "Crime"} - - {id: 12, cat: Movies, desc: "Sci-Fi"} - - {id: 17, cat: Movies, desc: "War"} - - {id: 21, cat: Movies, desc: "Silent Films"} - - {id: 23, cat: Movies, desc: "TV-Series"} - - {id: 24, cat: Movies, desc: "Animation"} - - {id: 25, cat: Movies, desc: "Exploitation"} - - {id: 26, cat: Movies, desc: "Experimental"} - - {id: 27, cat: Movies, desc: "Fantasy"} - - {id: 29, cat: Movies, desc: "Short"} - - {id: 30, cat: Movies, desc: "Western"} - - {id: 32, cat: Movies, desc: "Foreign Languages"} - - {id: 33, cat: Movies, desc: "Thriller"} - - {id: 34, cat: Movies, desc: "Opera and Musical"} + - {id: 1, cat: Movies, desc: "Movie"} + - {id: 2, cat: TV, desc: "TV"} modes: search: [q] - movie-search: [q, imdbid] + tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] + movie-search: [q, imdbid, tmdbid] settings: - - name: username + - name: apikey type: text - label: Username - - name: password - type: password - label: Password - - name: incldead - type: select - label: Status - default: 1 - options: - 0: Active - 1: "Active and Inactive" - 2: Inactive - - name: dropbumped + label: APIKey + - name: info_key + type: info + label: About your API key + default: "Find or Generate a new API Token by accessing your Cinematik account My Settings page and clicking on the API Key tab." + - name: freeleech type: checkbox - label: Ignore Bumped Torrents + label: Search freeleech only default: false - - name: info_results - type: info - label: Results Per Page - default: "For best results, change the Torrents per page: setting to 100 on your account profile.
Default is 15." + - 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: - method: form - path: login.php - submitpath: takelogin.php - form: form[action="takelogin.php"] - inputs: - username: "{{ .Config.username }}" - password: "{{ .Config.password }}" + path: /api/torrents + method: get error: - - selector: table:contains("Login failed!") - test: - path: my.php - selector: a[href="logout.php"] + - selector: a[href*="/login"] + message: + text: "The API key was not accepted by {{ .Config.sitelink }}." search: paths: - - path: browse.php + # https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0) + # https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349 + - path: "/api/torrents/filter" + response: + type: json + + headers: + Authorization: ["Bearer {{ .Config.apikey }}"] + inputs: - $raw: "{{ range .Categories }}c{{.}}=1&{{end}}" - search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" - incldead: "{{ .Config.incldead }}" - srchdtls: "{{ if .Query.IMDBID }}1{{ else }}0{{ end }}" + # 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 + name: "{{ .Keywords }}" + $raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}" + sortField: "{{ .Config.sort }}" + sortDirection: "{{ .Config.type }}" + perPage: 100 + + keywordsfilters: + - name: re_replace + args: ["\\.", " "] rows: - selector: "table[border=\"1\"] tr:not(:first-child){{ if .Config.dropbumped }}:not(:has(span.bumped)){{ else }}{{ end }}" + selector: data + attribute: attributes fields: category: - text: 1 + selector: category_id title: - selector: td:nth-child(2) a + selector: name details: - selector: a[href^="details.php?id="] - attribute: href + selector: details_link download: - selector: a[href^="details.php?id="] - attribute: href + selector: download_link + infohash: + selector: info_hash + poster: + selector: meta.poster filters: - name: replace - args: ["details.php?id=", "download.php?id="] - files: - selector: td:nth-child(5) - size: - selector: td:nth-child(7) - grabs: - selector: td:nth-child(8) + args: ["https://via.placeholder.com/90x135", ""] + imdbid: + selector: imdb_id + tmdbid: + selector: tmdb_id + tvdbid: + selector: tvdb_id + genre: + selector: meta.genres filters: - - name: regexp - args: ([\d,]+) + - name: re_replace + args: ["(?i)(Science Fiction)", "Science_Fiction"] + - name: re_replace + args: ["(?i)(TV Movie)", "TV_Movie"] + - name: replace + args: [" & ", "_&_"] + description: + text: "{{ .Result.genre }}" + files: + selector: num_file seeders: - selector: td:nth-child(9) + selector: seeders leechers: - selector: td:nth-child(10) + selector: leechers + grabs: + selector: times_completed date: - selector: td:nth-child(11) div.addedtor + # "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 downloadvolumefactor: + # api returns 0%, 25%, 50%, 75%, 100% + selector: freeleech case: - img[title^="Golden Torrent"]: 0 - img[title^="Silver Torrent"]: 0.25 - img[title^="Platinum Torrent"]: 0 - "*": 1 + 0%: 1 # not free + 25%: 0.75 + 50%: 0.5 + 75%: 0.25 + 100%: 0 # freeleech + "*": 0 # catch errors uploadvolumefactor: + # api returns False, True + selector: double_upload case: - img[title^="Platinum Torrent"]: 2 - "*": 1 -# Engine n/a + False: 1 # normal + True: 2 # double +# 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 7.2.5 diff --git a/definitions/v7/cpabien.yml b/definitions/v7/cpabien.yml index cd82f8410..391047bb1 100644 --- a/definitions/v7/cpabien.yml +++ b/definitions/v7/cpabien.yml @@ -7,7 +7,7 @@ type: public encoding: UTF-8 followredirect: true links: - - https://cpasbien-vf.fr/ + - https://cpasbien-vf.pics/ legacylinks: - https://www.cpasbiens.cz/ - https://www.cpasbiens.bz/ @@ -24,6 +24,7 @@ legacylinks: - https://labastidevivante.fr/ - https://cpasbiens911.fr/ - https://jardattraction.fr/ + - https://cpasbien-vf.fr/ caps: categories: diff --git a/definitions/v7/hdonly.yml b/definitions/v7/hdonly.yml index d1b444850..f3b7b01d3 100644 --- a/definitions/v7/hdonly.yml +++ b/definitions/v7/hdonly.yml @@ -39,6 +39,13 @@ settings: - name: password type: password label: Password + - name: 2fa_code + type: text + label: 2FA code + - name: info_2fa + type: info + label: "About 2FA code" + default: "Only fill in the 2FA code box if you have enabled 2FA on the HD-Only Web Site. Otherwise just leave it empty." - name: freeleech type: checkbox label: Search freeleech only @@ -88,6 +95,7 @@ login: inputs: username: "{{ .Config.username }}" password: "{{ .Config.password }}" + twofa: "{{ .Config.2fa_code }}" keeplogged: 1 error: - selector: form#loginform > span.warning diff --git a/definitions/v7/mircrew.yml b/definitions/v7/mircrew.yml index 1e9ef802e..8c3f6d7e0 100644 --- a/definitions/v7/mircrew.yml +++ b/definitions/v7/mircrew.yml @@ -175,7 +175,7 @@ search: selector: a.topictitle filters: - name: regexp - args: "[{](.+?)[}]" + args: "(?i)[\\[\\({](1?\\d{1,3}(?:[\\.,]\\d{1,2})?\\s*[KMGTP]?i?B)[\\]\\)}]" size: text: "{{ if .Result.size_title }}{{ .Result.size_title }}{{ else }}512 MB{{ end }}" seeders: diff --git a/definitions/v7/nextjav.yml b/definitions/v7/nextjav.yml index 3fdf2724c..d2709284f 100644 --- a/definitions/v7/nextjav.yml +++ b/definitions/v7/nextjav.yml @@ -6,6 +6,8 @@ language: en-US type: public encoding: UTF-8 requestDelay: 2 +certificates: + - 2087F47F5C498BC8AB4888F901EC656685E2A5DC # expired 03 Feb 2024 links: - https://nextjav.com/ diff --git a/definitions/v7/torrentsir.yml b/definitions/v7/torrentsir.yml index 4a1bd4850..ed5cc6bea 100644 --- a/definitions/v7/torrentsir.yml +++ b/definitions/v7/torrentsir.yml @@ -7,10 +7,8 @@ type: public encoding: UTF-8 followredirect: true links: - - https://torrentsir131.com/ + - https://torrentsir132.com/ legacylinks: - - http://torrentsir122.com/ - - https://torrentsir122.com/ - http://torrentsir123.com/ - https://torrentsir123.com/ - http://torrentsir124.com/ @@ -29,6 +27,8 @@ legacylinks: - http://torrentsir130.com/ - https://torrentsir130.com/ - http://torrentsir131.com/ + - https://torrentsir131.com/ + - http://torrentsir132.com/ caps: categorymappings: diff --git a/definitions/v7/torrentslocal.yml b/definitions/v7/torrentslocal.yml index 8df9cacbc..54fa9d4e1 100644 --- a/definitions/v7/torrentslocal.yml +++ b/definitions/v7/torrentslocal.yml @@ -5,6 +5,8 @@ description: "Torrents-Local is a RUSSIAN Semi-Private Torrent Tracker" language: ru-RU type: semi-private encoding: UTF-8 +certificates: + - 53944aec4f57063b3ef6977abeef14364310a185 # expired 5/feb/2024 links: - https://torrents-local.xyz/ diff --git a/definitions/v7/x-ite.me.yml b/definitions/v7/x-ite.me.yml index d61d663ee..e6b7cb83d 100644 --- a/definitions/v7/x-ite.me.yml +++ b/definitions/v7/x-ite.me.yml @@ -5,8 +5,6 @@ description: "Tracker for LGBTQ movies, TV, books, magazines, anime, PC and 3X." language: en-US type: private encoding: UTF-8 -certificates: - - 2d87b2e1d4f59237f78642930c230d0495d43d4c # expired 09 Sept 2023 links: - https://x-ite.me/ diff --git a/definitions/v9/cinematik.yml b/definitions/v9/cinematik.yml new file mode 100644 index 000000000..27822b110 --- /dev/null +++ b/definitions/v9/cinematik.yml @@ -0,0 +1,166 @@ +--- +id: cinematik +name: Cinematik +description: "A tracker for full BD and DVD discs of non-mainstream movies, niche cinema and arthouse." +language: en-US +type: private +encoding: UTF-8 +links: + - https://cinematik.net/ +legacylinks: + - https://www.cinematik.net/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Movie"} + - {id: 2, cat: TV, desc: "TV"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] + movie-search: [q, imdbid, tmdbid] + +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 Cinematik account My Settings page and clicking on the API Key tab." + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - 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 }}." + +search: + paths: + # https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0) + # https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349 + - 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: + selector: name + details: + selector: details_link + download: + selector: download_link + infohash: + selector: info_hash + 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: [" & ", "_&_"] + description: + text: "{{ .Result.genre }}" + files: + selector: num_file + 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 + downloadvolumefactor: + # 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 + uploadvolumefactor: + # api returns False, True + selector: double_upload + case: + False: 1 # normal + True: 2 # double +# 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 7.2.5 diff --git a/definitions/v9/cpabien.yml b/definitions/v9/cpabien.yml index a22cb6344..30602bd62 100644 --- a/definitions/v9/cpabien.yml +++ b/definitions/v9/cpabien.yml @@ -7,7 +7,7 @@ type: public encoding: UTF-8 followredirect: true links: - - https://cpasbien-vf.fr/ + - https://cpasbien-vf.pics/ legacylinks: - https://www.cpasbiens.cz/ - https://www.cpasbiens.bz/ @@ -24,6 +24,7 @@ legacylinks: - https://labastidevivante.fr/ - https://cpasbiens911.fr/ - https://jardattraction.fr/ + - https://cpasbien-vf.fr/ caps: categories: