diff --git a/definitions/v5/Bittorrentfiles.yml b/definitions/v5/Bittorrentfiles.yml
index 930a0810a..bdb77631a 100644
--- a/definitions/v5/Bittorrentfiles.yml
+++ b/definitions/v5/Bittorrentfiles.yml
@@ -130,11 +130,11 @@ settings:
login:
path: signin.php
- method: form
- form: form
+ method: post
inputs:
user: "{{ .Config.user }}"
pass: "{{ .Config.pass }}"
+ returnto: "%2Fbrowse.php"
error:
- selector: .error
test:
diff --git a/definitions/v5/audionews.yml b/definitions/v5/audionews.yml
index 2346b0155..f093eca03 100644
--- a/definitions/v5/audionews.yml
+++ b/definitions/v5/audionews.yml
@@ -176,6 +176,8 @@ caps:
- {id: 233, cat: Other, desc: "GFXNEWS GAME DEVELOPMENT"}
- {id: 226, cat: Other, desc: "GFXNEWS MAGAZINE"}
- {id: 234, cat: Other, desc: "GFXNEWS MATERIAL"}
+ - {id: 243, cat: Other, desc: "GFXNEWS OTHER GRAPHICS"}
+ - {id: 244, cat: Other, desc: "GFXNEWS OTHER GRAPHICS Zbrush, Substance tools"}
- {id: 216, cat: Other, desc: "GFXNEWS PHOTOSTOCK"}
- {id: 220, cat: Other, desc: "GFXNEWS PHOTOGRAPHY - ART"}
- {id: 227, cat: Other, desc: "GFXNEWS PHOTOSHOP"}
@@ -183,10 +185,10 @@ caps:
- {id: 229, cat: Other, desc: "GFXNEWS PHOTOSHOP Background & PSD Source"}
- {id: 230, cat: Other, desc: "GFXNEWS PHOTOSHOP Brushes & Gradient"}
- {id: 231, cat: Other, desc: "GFXNEWS PHOTOSHOP Toolkits, Papers & Objects"}
+ - {id: 245, cat: Other, desc: "GFXNEWS PLUGINS"}
- {id: 225, cat: Other, desc: "GFXNEWS PLUGINS LINUX"}
- {id: 223, cat: Other, desc: "GFXNEWS PLUGINS MAC"}
- {id: 210, cat: Other, desc: "GFXNEWS PLUGINS WIN"}
- - {id: 236, cat: Other, desc: "GFXNEWS POSER"}
- {id: 217, cat: Other, desc: "GFXNEWS SCRIPTS - WEB PROGRAMMING"}
- {id: 218, cat: Other, desc: "GFXNEWS TEMPLATES"}
- {id: 232, cat: Other, desc: "GFXNEWS TEXTURES"}
diff --git a/definitions/v5/cryptichaven.yml b/definitions/v5/cryptichaven.yml
index 8f01932c7..b4b735a5f 100644
--- a/definitions/v5/cryptichaven.yml
+++ b/definitions/v5/cryptichaven.yml
@@ -60,6 +60,8 @@ caps:
- {id: 53, cat: TV, desc: "Random Oddities"}
- {id: 59, cat: TV, desc: "Late Night Talkshows"}
- {id: 77, cat: TV, desc: "Non-English language"}
+ - {id: 78, cat: TV, desc: "Video Musical Comedy"}
+ - {id: 79, cat: TV, desc: "Video Podcasts"}
# BY REQUEST ONLY
- {id: 19, cat: Movies, desc: "Movie DVD5/9"}
- {id: 20, cat: Movies, desc: "Movie AVI"}
diff --git a/definitions/v5/fouducinema.yml b/definitions/v5/fouducinema.yml
index a10b39cd5..20d05c288 100644
--- a/definitions/v5/fouducinema.yml
+++ b/definitions/v5/fouducinema.yml
@@ -12,9 +12,12 @@ legacylinks:
caps:
categorymappings:
+ - {id: 80, cat: Movies, desc: "Enfants Film"}
+ - {id: 82, cat: TV, desc: "Enfants Série"}
- {id: 1, cat: Movies/SD, desc: "FILM Xvid"}
- - {id: 62, cat: Movies/WEB-DL, desc: "FILM WEB"}
+ - {id: 75, cat: Movies/UHD, desc: "FILM 2160 P"}
- {id: 63, cat: Movies/WEB-DL, desc: "FILM WEB"}
+ - {id: 62, cat: Movies/WEB-DL, desc: "FILM WEB"}
- {id: 66, cat: Movies/HD, desc: "FILM HDRip"}
- {id: 34, cat: Movies/SD, desc: "FILM TVRip"}
- {id: 33, cat: Movies/HD, desc: "FILM HDTV"}
@@ -27,10 +30,10 @@ caps:
- {id: 25, cat: Movies/BluRay, desc: "FILM ISO"}
- {id: 4, cat: Movies/HD, desc: "FILM 1080"}
- {id: 2, cat: Movies/DVD, desc: "FILM DVD"}
- - {id: 75, cat: Movies/UHD, desc: "FILM 2160 P"}
+ - {id: 101, cat: TV/Documentary, desc: "FILM Documentaire"}
- {id: 9, cat: TV/SD, desc: "SERIE DVD"}
+ - {id: 72, cat: TV/UHD, desc: "SERIE 2160 P"}
- {id: 65, cat: TV/HD, desc: "SERIE HDRip"}
- - {id: 37, cat: TV, desc: "SERIE EPISODE"}
- {id: 21, cat: TV/HD, desc: "SERIE HDTV.1080p"}
- {id: 20, cat: TV/HD, desc: "SERIE HDTV.720p"}
- {id: 19, cat: TV/SD, desc: "SERIE HDTV"}
@@ -40,19 +43,19 @@ caps:
- {id: 15, cat: TV/WEB-DL, desc: "SERIE WEB.1080p"}
- {id: 14, cat: TV/WEB-DL, desc: "SERIE WEB.720p"}
- {id: 12, cat: TV/WEB-DL, desc: "SERIE WEB"}
- - {id: 72, cat: TV/UHD, desc: "SERIE 2160 P"}
+ - {id: 102, cat: TV/Documentary, desc: "SERIE Documentaire"}
- {id: 67, cat: TV/Anime, desc: "ANIMEE films"}
- {id: 70, cat: TV/Anime, desc: "ANIMEE Series"}
+ - {id: 95, cat: TV/Anime, desc: "ANIMEE Animée"}
- {id: 56, cat: PC/ISO, desc: "LOGICIELS Linux"}
- {id: 24, cat: PC/Mac, desc: "LOGICIELS Apple"}
- {id: 58, cat: PC/0day, desc: "LOGICIELS Windows"}
- - {id: 59, cat: PC, desc: "LOGICIELS "}
- {id: 44, cat: Books/Mags, desc: "EBOOK Journaux"}
- {id: 46, cat: Books/Technical, desc: "EBOOK Documents"}
- {id: 48, cat: XXX/Other, desc: "EBOOK XXX"}
- {id: 49, cat: Books/EBook, desc: "EBOOK Livres"}
- {id: 5, cat: Audio/Video, desc: "MUSIC clip video"}
- - {id: 7, cat: PC/Games, desc: "JEUX Win"}
+ - {id: 96, cat: PC/Games, desc: "JEUX Apple"}
- {id: 8, cat: Console/PS3, desc: "JEUX PS3"}
- {id: 45, cat: PC/Games, desc: "JEUX PC"}
diff --git a/definitions/v5/krazyzone.yml b/definitions/v5/krazyzone.yml
index a25dc0890..e3f1091fb 100644
--- a/definitions/v5/krazyzone.yml
+++ b/definitions/v5/krazyzone.yml
@@ -57,6 +57,7 @@ caps:
- {id: 94, cat: Other, desc: "Xmas Music Packs"}
- {id: 95, cat: Other/Misc, desc: "Unsorted To Be Edited"}
- {id: 97, cat: Other, desc: "VIP Exclusive"}
+ - {id: 99, cat: Other, desc: "Krazy-Internal"}
modes:
search: [q]
diff --git a/definitions/v5/mesevilag.yml b/definitions/v5/mesevilag.yml
index 3b44a5aa5..72045991a 100644
--- a/definitions/v5/mesevilag.yml
+++ b/definitions/v5/mesevilag.yml
@@ -165,8 +165,8 @@ search:
selector: td:nth-last-child(5)
remove: font
minimumratio:
- text: 0.7
+ text: 1.0
minimumseedtime:
- # 5 days (as seconds = 5 x 24 x 60 x 60)
- text: 432000
+ # 2 days (as seconds = 2 x 24 x 60 x 60)
+ text: 172800
# engine n/a
diff --git a/definitions/v5/scenerush.yml b/definitions/v5/scenerush.yml
index c0ae5e3f9..ddb4c4af7 100644
--- a/definitions/v5/scenerush.yml
+++ b/definitions/v5/scenerush.yml
@@ -128,8 +128,15 @@ search:
filters:
- name: querystring
args: cat
+ _audiopt:
+ selector: i.fg-audiopt
+ attribute: title
+ optional: true
title:
selector: a[href^="details.php?id="]
+ filters:
+ - name: append
+ args: "{{ if .Result._audiopt }} Portuguese PT-PT{{ else }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
diff --git a/definitions/v5/torrentqq.yml b/definitions/v5/torrentqq.yml
index d45de45d1..32f77b365 100644
--- a/definitions/v5/torrentqq.yml
+++ b/definitions/v5/torrentqq.yml
@@ -7,9 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- - https://torrentqq220.com/
+ - https://torrentqq221.com/
legacylinks:
- - https://torrentqq144.com/
- https://torrentqq145.com/
- https://torrentqq146.com/
- https://torrentqq147.com/
@@ -24,6 +23,7 @@ legacylinks:
- https://torrentqq217.com/
- https://torrentqq218.com/
- https://torrentqq219.com/
+ - https://torrentqq220.com/
caps:
categorymappings:
diff --git a/definitions/v5/torrentsir.yml b/definitions/v5/torrentsir.yml
index 5ae1e7bf2..1135c3220 100644
--- a/definitions/v5/torrentsir.yml
+++ b/definitions/v5/torrentsir.yml
@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- - https://torrentsir73.com/
+ - https://torrentsir74.com/
legacylinks:
- http://torrentsir59.com/
- https://torrentsir59.com/
@@ -26,6 +26,8 @@ legacylinks:
- http://torrentsir72.com/
- https://torrentsir72.com/
- http://torrentsir73.com/
+ - https://torrentsir73.com/
+ - http://torrentsir74.com/
caps:
categorymappings:
diff --git a/definitions/v6/3evils-api.yml b/definitions/v6/3evils-api.yml
new file mode 100644
index 000000000..0412ab7cd
--- /dev/null
+++ b/definitions/v6/3evils-api.yml
@@ -0,0 +1,147 @@
+---
+id: 3evils-api
+name: 3Evils (API)
+description: "3Evils is a Private site for MOVIES / TV / MUSIC "
+language: en-US
+type: private
+encoding: UTF-8
+links:
+ - https://3evils.net/
+
+caps:
+ categorymappings:
+ - {id: 1, cat: Movies, desc: "Movies"}
+ - {id: 2, cat: TV, desc: "TV"}
+ - {id: 3, cat: Audio, desc: "Music"}
+ - {id: 4, cat: PC/Games, desc: "Game"}
+ - {id: 5, cat: PC/0day, desc: "Application"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
+ movie-search: [q, imdbid, tmdbid]
+ music-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 3Evils account My Security page and clicking on the API Token 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
+ inputs:
+ api_token: "{{ .Config.apikey }}"
+ error:
+ - selector: a[href*="/login"]
+ message:
+ text: "The API key was not accepted by {{ .Config.sitelink }}."
+
+search:
+ paths:
+ # https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
+ # https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
+ - path: "/api/torrents/filter"
+ response:
+ type: json
+
+ 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
+ api_token: "{{ .Config.apikey }}"
+ 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=1{{ else }}{{ end }}"
+ sortField: "{{ .Config.sort }}"
+ sortDirection: "{{ .Config.type }}"
+ perPage: 100
+ page: 1
+
+ keywordsfilters:
+ - name: re_replace
+ args: ["\\.", " "]
+
+ rows:
+ selector: data
+ attribute: attributes
+ count:
+ selector: meta.total
+
+ fields:
+ category:
+ selector: category_id
+ title:
+ selector: name
+ details:
+ selector: details_link
+ download:
+ selector: download_link
+ poster:
+ selector: poster
+ filters:
+ - name: replace
+ args: ["https://via.placeholder.com/90x135", ""]
+ imdbid:
+ selector: imdb_id
+ tmdbid:
+ selector: tmdb_id
+ tvdbid:
+ selector: tvdb_id
+ files:
+ selector: num_file
+ seeders:
+ selector: seeders
+ leechers:
+ selector: leechers
+ grabs:
+ selector: times_completed
+ date:
+ # 2021-10-18T00:34:50.000000Z"
+ selector: created_at
+ 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 0=false, 1=true
+ selector: double_upload
+ case:
+ 0: 1 # normal
+ 1: 2 # double
+# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
+# minimumratio:
+# text: 0.4
+# minimumseedtime:
+# # 2 days (as seconds = 2 x 24 x 60 x 60)
+# text: 172800
+# json UNIT3D 6.3.0
diff --git a/definitions/v6/fouducinema.yml b/definitions/v6/fouducinema.yml
index a10b39cd5..20d05c288 100644
--- a/definitions/v6/fouducinema.yml
+++ b/definitions/v6/fouducinema.yml
@@ -12,9 +12,12 @@ legacylinks:
caps:
categorymappings:
+ - {id: 80, cat: Movies, desc: "Enfants Film"}
+ - {id: 82, cat: TV, desc: "Enfants Série"}
- {id: 1, cat: Movies/SD, desc: "FILM Xvid"}
- - {id: 62, cat: Movies/WEB-DL, desc: "FILM WEB"}
+ - {id: 75, cat: Movies/UHD, desc: "FILM 2160 P"}
- {id: 63, cat: Movies/WEB-DL, desc: "FILM WEB"}
+ - {id: 62, cat: Movies/WEB-DL, desc: "FILM WEB"}
- {id: 66, cat: Movies/HD, desc: "FILM HDRip"}
- {id: 34, cat: Movies/SD, desc: "FILM TVRip"}
- {id: 33, cat: Movies/HD, desc: "FILM HDTV"}
@@ -27,10 +30,10 @@ caps:
- {id: 25, cat: Movies/BluRay, desc: "FILM ISO"}
- {id: 4, cat: Movies/HD, desc: "FILM 1080"}
- {id: 2, cat: Movies/DVD, desc: "FILM DVD"}
- - {id: 75, cat: Movies/UHD, desc: "FILM 2160 P"}
+ - {id: 101, cat: TV/Documentary, desc: "FILM Documentaire"}
- {id: 9, cat: TV/SD, desc: "SERIE DVD"}
+ - {id: 72, cat: TV/UHD, desc: "SERIE 2160 P"}
- {id: 65, cat: TV/HD, desc: "SERIE HDRip"}
- - {id: 37, cat: TV, desc: "SERIE EPISODE"}
- {id: 21, cat: TV/HD, desc: "SERIE HDTV.1080p"}
- {id: 20, cat: TV/HD, desc: "SERIE HDTV.720p"}
- {id: 19, cat: TV/SD, desc: "SERIE HDTV"}
@@ -40,19 +43,19 @@ caps:
- {id: 15, cat: TV/WEB-DL, desc: "SERIE WEB.1080p"}
- {id: 14, cat: TV/WEB-DL, desc: "SERIE WEB.720p"}
- {id: 12, cat: TV/WEB-DL, desc: "SERIE WEB"}
- - {id: 72, cat: TV/UHD, desc: "SERIE 2160 P"}
+ - {id: 102, cat: TV/Documentary, desc: "SERIE Documentaire"}
- {id: 67, cat: TV/Anime, desc: "ANIMEE films"}
- {id: 70, cat: TV/Anime, desc: "ANIMEE Series"}
+ - {id: 95, cat: TV/Anime, desc: "ANIMEE Animée"}
- {id: 56, cat: PC/ISO, desc: "LOGICIELS Linux"}
- {id: 24, cat: PC/Mac, desc: "LOGICIELS Apple"}
- {id: 58, cat: PC/0day, desc: "LOGICIELS Windows"}
- - {id: 59, cat: PC, desc: "LOGICIELS "}
- {id: 44, cat: Books/Mags, desc: "EBOOK Journaux"}
- {id: 46, cat: Books/Technical, desc: "EBOOK Documents"}
- {id: 48, cat: XXX/Other, desc: "EBOOK XXX"}
- {id: 49, cat: Books/EBook, desc: "EBOOK Livres"}
- {id: 5, cat: Audio/Video, desc: "MUSIC clip video"}
- - {id: 7, cat: PC/Games, desc: "JEUX Win"}
+ - {id: 96, cat: PC/Games, desc: "JEUX Apple"}
- {id: 8, cat: Console/PS3, desc: "JEUX PS3"}
- {id: 45, cat: PC/Games, desc: "JEUX PC"}
diff --git a/definitions/v7/gimmepeers.yml b/definitions/v7/gimmepeers.yml
new file mode 100644
index 000000000..6038f0030
--- /dev/null
+++ b/definitions/v7/gimmepeers.yml
@@ -0,0 +1,162 @@
+---
+id: gimmepeers
+name: GimmePeers
+description: "GimmePeers (formerly ILT) is a Paid Private Torrent Tracker for MOVIES / TV / GENERAL"
+language: en-US
+type: private
+encoding: iso-8859-1
+links:
+ - https://www.gimmepeers.com/
+
+caps:
+ categorymappings:
+ - {id: 1, cat: TV/Anime, desc: "Anime"}
+ - {id: 4, cat: PC/0day, desc: "App-WIN"}
+ - {id: 2, cat: PC/Mac, desc: "App-MAC"}
+ - {id: 27, cat: PC, desc: "App-LINUX"}
+ - {id: 29, cat: Audio/Audiobook, desc: "Books (a)"}
+ - {id: 5, cat: Books/EBook, desc: "Books (e)"}
+ - {id: 6, cat: PC/Mobile-Other, desc: "Mobile"}
+ - {id: 7, cat: Audio, desc: "Music"}
+ - {id: 28, cat: TV/Sport, desc: "Sports"}
+ - {id: 3, cat: Books/Other, desc: "Tutorials"}
+ - {id: 8, cat: Other, desc: "Other"}
+ - {id: 9, cat: Console/NDS, desc: "Game-NIN"}
+ - {id: 11, cat: Console/PS3, desc: "Game-PS"}
+ - {id: 10, cat: PC/Games, desc: "Game-WIN"}
+ - {id: 12, cat: Console/XBox, desc: "Game-XBOX"}
+ - {id: 13, cat: Movies/3D, desc: "Movie-3D"}
+ - {id: 26, cat: Movies/UHD, desc: "Movie-4K"}
+ - {id: 14, cat: Movies/BluRay, desc: "Movie-Bluray"}
+ - {id: 15, cat: Movies/DVD, desc: "Movie-DVDR"}
+ - {id: 16, cat: Movies/HD, desc: "Movie-x264"}
+ - {id: 17, cat: Movies/HD, desc: "Movie-x265"}
+ - {id: 19, cat: Movies/SD, desc: "Movie-XVID"}
+ - {id: 18, cat: Movies, desc: "Movie-Packs"}
+ - {id: 30, cat: TV/UHD, desc: "TV-4K"}
+ - {id: 22, cat: TV/HD, desc: "TV-x265"}
+ - {id: 20, cat: TV/HD, desc: "TV-x264-HD"}
+ - {id: 21, cat: TV/SD, desc: "TV-x264-SD"}
+ - {id: 25, cat: TV/HD, desc: "TV-Retail-HD"}
+ - {id: 24, cat: TV/SD, desc: "TV-Retail-SD"}
+ - {id: 23, cat: TV, desc: "TV-Packs"}
+ - {id: 50, cat: XXX/x264, desc: "xXx-HD"}
+ - {id: 49, cat: XXX/SD, desc: "xXx-SD"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep, imdbid, genre]
+ movie-search: [q, imdbid, genre]
+ music-search: [q]
+ book-search: [q]
+
+settings:
+ - name: username
+ type: text
+ label: Username
+ - name: password
+ type: password
+ label: Password
+ - 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
+
+login:
+ path: takelogin.php
+ method: post
+ inputs:
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ returnto: /
+ error:
+ - selector: td:contains("Login failed!")
+ message:
+ selector: table tbody tr td font
+ test:
+ path: browse.php
+ selector: a[href="/logout.php"]
+
+search:
+ paths:
+ # https://www.gimmepeers.com/browse.php?search=2022&c13=1&blah=0&incldead=0
+ - path: browse.php
+ inputs:
+ $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
+ search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}{{ if .Query.Genre }} genre:{{ .Query.Genre }}{{ else }}{{ end }}"
+ # 0 title, 1 nfo, 2 filelist, 3 title+nfo
+ blah: "{{ if or .Query.IMDBID .Query.Genre }}3{{ else }}0{{ end }}"
+ # 0 active only, 1 dead only
+ incldead: 0
+ sort: "{{ .Config.sort }}"
+ type: "{{ .Config.type }}"
+
+ rows:
+ selector: table.browsetable:not(:has(td.gp_sub_nav):contains("Top 20")) tbody tr:has(a[href^="download.php"])
+
+ fields:
+ category:
+ selector: a[href^="browse.php?cat="]
+ attribute: href
+ filters:
+ - name: querystring
+ args: cat
+ title:
+ selector: a[href^="details.php?id="]
+ details:
+ selector: a[href^="details.php?id="]
+ attribute: href
+ download:
+ selector: a[href^="download.php"]
+ attribute: href
+ imdbid:
+ selector: a[href*="imdb.com/title/tt"]
+ attribute: href
+ filters:
+ - name: replace
+ args: ["/redir.php?url=", ""]
+ genre:
+ selector: span:has(a[title="search by genre"])
+ filters:
+ - name: replace
+ args: ["votes", ""]
+ - name: re_replace
+ args: ["\\d+", ""]
+ description:
+ text: "{{ .Result.genre }}"
+ date:
+ selector: td:nth-child(7) nobr
+ filters:
+ - name: replace
+ args: ["\xA0", ""]
+ - name: append
+ args: " -04:00" # AST
+ - name: dateparse
+ args: "2006-01-0215:04:05 -07:00"
+ size:
+ selector: td:nth-child(6)
+ files:
+ selector: td:nth-child(8)
+ grabs:
+ selector: td:nth-child(10)
+ seeders:
+ selector: td:nth-last-child(3)
+ leechers:
+ selector: td:nth-last-child(2)
+ downloadvolumefactor:
+ text: 1
+ uploadvolumefactor:
+ text: 1
+# engine n/a
diff --git a/definitions/v7/hhanclub.yml b/definitions/v7/hhanclub.yml
new file mode 100644
index 000000000..24859002f
--- /dev/null
+++ b/definitions/v7/hhanclub.yml
@@ -0,0 +1,192 @@
+---
+id: hhanclub
+name: HHanClub
+description: "HHanClub (猪猪网) is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
+language: zh-CN
+type: private
+encoding: UTF-8
+links:
+ - https://hhanclub.top/
+
+caps:
+ categorymappings:
+ - {id: 401, cat: Movies, desc: "Movies/电影"}
+ - {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
+ - {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
+ - {id: 402, cat: TV, desc: "TV Series/连续剧"}
+ - {id: 403, cat: TV, desc: "TV Shows/综艺"}
+ - {id: 406, cat: Audio/Video, desc: "Music Videos/MV"}
+ - {id: 407, cat: TV/Sport, desc: "Sports/体育"}
+ - {id: 409, cat: Other, desc: "Misc/其他"}
+ - {id: 408, cat: Audio, desc: "Music/音乐"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep, imdbid, doubanid]
+ movie-search: [q, imdbid, doubanid]
+ music-search: [q]
+
+settings:
+ - name: username
+ type: text
+ label: Username
+ - name: password
+ type: password
+ label: Password
+ - name: 2facode
+ 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 HHanClub Web Site. Otherwise just leave it empty."
+ - 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.
+
+login:
+ path: login.php
+ method: form
+ form: form[action="takelogin.php"]
+ captcha:
+ type: image
+ selector: img[alt="CAPTCHA"]
+ input: imagestring
+ inputs:
+ secret: ""
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ two_step_code: "{{ .Config.2facode }}"
+ logout: ""
+ securelogin: ""
+ ssl: yes
+ trackerssl: yes
+ error:
+ - selector: td.embedded:has(h2:contains("失败"))
+ - selector: td.embedded:has(h2:contains("Failed"))
+ 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 .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}{{ .Keywords }}{{ 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 (not working)
+ search_area: "{{ if .Query.IMDBID }}1{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
+ # 0 AND, 1 OR, 2 exact
+ search_mode: 0
+ sort: "{{ .Config.sort }}"
+ type: "{{ .Config.type }}"
+
+ rows:
+ selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
+
+ fields:
+ category:
+ selector: a[href^="?cat="]
+ attribute: href
+ filters:
+ - name: querystring
+ args: cat
+ title_default:
+ selector: a[href^="details.php?id="]
+ title_optional:
+ optional: true
+ selector: a[title][href^="details.php?id="]
+ attribute: title
+ title:
+ text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
+ 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: "2006-01-02 15:04:05 -07:00"
+ 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: "2006-01-0215:04:05 -07:00"
+ 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
+ minimumratio:
+ text: 1.0
+ minimumseedtime:
+ # 1 day (as seconds = 24 x 60 x 60)
+ text: 86400
+ description:
+ selector: td.rowfollow:nth-child(2)
+ remove: a, img
+# NexusPHP v1.7.24 2022-08-30
diff --git a/definitions/v7/krazyzone.yml b/definitions/v7/krazyzone.yml
index 8b53bb4f6..07c9747df 100644
--- a/definitions/v7/krazyzone.yml
+++ b/definitions/v7/krazyzone.yml
@@ -57,6 +57,7 @@ caps:
- {id: 94, cat: Other, desc: "Xmas Music Packs"}
- {id: 95, cat: Other/Misc, desc: "Unsorted To Be Edited"}
- {id: 97, cat: Other, desc: "VIP Exclusive"}
+ - {id: 99, cat: Other, desc: "Krazy-Internal"}
modes:
search: [q]