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: