diff --git a/src/Jackett.Common/Definitions/desitorrents.yml b/src/Jackett.Common/Definitions/desitorrents.yml
index 5b96aee81..b46d5e61c 100644
--- a/src/Jackett.Common/Definitions/desitorrents.yml
+++ b/src/Jackett.Common/Definitions/desitorrents.yml
@@ -29,49 +29,70 @@ caps:
- {id: 124, cat: Movies, desc: "Movies/Movie Packs"}
- {id: 128, cat: Movies, desc: "Movies/Dubbed Audio"}
- {id: 129, cat: Movies, desc: "Movies/Animated"}
+ - {id: 140, cat: Movies, desc: "Movies/Short Films"}
# tv shows
- {id: 59, cat: TV, desc: "TV/Colors"}
- {id: 60, cat: TV, desc: "TV/Sony"}
- - {id: 61, cat: TV, desc: "TV/& TV"}
- - {id: 62, cat: TV, desc: "TV/Starplus"}
- - {id: 63, cat: TV, desc: "TV/ZeeTV"}
- - {id: 97, cat: TV, desc: "TV/Life Ok"}
- - {id: 98, cat: TV, desc: "TV/Docu"}
+ - {id: 61, cat: TV, desc: "TV/&TV"}
+ - {id: 62, cat: TV, desc: "TV/StarPlus"}
+ - {id: 63, cat: TV, desc: "TV/ZEE TV"}
+ - {id: 97, cat: TV, desc: "TV/Life OK"}
+ - {id: 98, cat: TV, desc: "TV/Documentary"}
- {id: 101, cat: TV/Sport, desc: "TV/Sports"}
- {id: 102, cat: TV/Other, desc: "TV/Others"}
- {id: 113, cat: TV, desc: "TV/Pak Drama"}
- {id: 125, cat: TV, desc: "TV/TV Packs"}
- {id: 130, cat: TV, desc: "TV/Star Bharat"}
- - {id: 132, cat: TV, desc: "TV/SAB TV"}
+ - {id: 132, cat: TV, desc: "TV/Sab TV"}
+ - {id: 139, cat: TV, desc: "TV/Hollywood"}
# music
- - {id: 67, cat: Audio/Video, desc: "Music Video"}
- - {id: 68, cat: Audio, desc: "Hindi Soundtrack"}
- - {id: 70, cat: Audio, desc: "Remix"}
- - {id: 71, cat: Audio, desc: "Ghazal"}
- - {id: 72, cat: Audio, desc: "Instrumental"}
- - {id: 105, cat: Audio, desc: "Telugu Music"}
- - {id: 106, cat: Audio, desc: "Tmil Music"}
- - {id: 107, cat: Audio, desc: "Punjabi Music"}
- - {id: 108, cat: Audio, desc: "Gujarati Music"}
- - {id: 109, cat: Audio, desc: "Compilations"}
- - {id: 118, cat: Audio, desc: "Kannada Music"}
- - {id: 126, cat: Audio, desc: "Marathi"}
- - {id: 127, cat: Audio, desc: "Lollywood"}
- - {id: 131, cat: Audio, desc: "Classical"}
+ - {id: 67, cat: Audio/Video, desc: "Music/Video"}
+ - {id: 68, cat: Audio, desc: "Music/Hindi Soundtrack"}
+ - {id: 70, cat: Audio, desc: "Music/Remix"}
+ - {id: 71, cat: Audio, desc: "Music/Ghazal"}
+ - {id: 72, cat: Audio, desc: "Music/Instrumental"}
+ - {id: 105, cat: Audio, desc: "Music/Telugu"}
+ - {id: 106, cat: Audio, desc: "Music/Tamil"}
+ - {id: 107, cat: Audio, desc: "Music/Punjabi"}
+ - {id: 108, cat: Audio, desc: "Music/Gujarati"}
+ - {id: 109, cat: Audio, desc: "Music/Compilations"}
+ - {id: 118, cat: Audio, desc: "Music/Kannada"}
+ - {id: 126, cat: Audio, desc: "Music/Marathi"}
+ - {id: 127, cat: Audio, desc: "Music/Lollywood"}
+ - {id: 131, cat: Audio, desc: "Music/Classical"}
+ - {id: 134, cat: Audio, desc: "Music/Desi Pop"}
+ - {id: 136, cat: Audio, desc: "Music/Bengali"}
+ - {id: 137, cat: Audio, desc: "Music/Malayalam"}
# games
- - {id: 78, cat: PC/Games, desc: "PC"}
- - {id: 79, cat: PC/Games, desc: "Mac"}
- - {id: 80, cat: PC/Games, desc: "IOS"}
- - {id: 81, cat: PC/Games, desc: "Android"}
- - {id: 83, cat: PC/Games, desc: "XBOX"}
- - {id: 86, cat: PC/Games, desc: "Playstation"}
+ - {id: 78, cat: PC/Games, desc: "Games/PC"}
+ - {id: 79, cat: PC/Games, desc: "Games/Mac"}
+ - {id: 80, cat: PC/Games, desc: "Games/IOS"}
+ - {id: 81, cat: PC/Games, desc: "Games/Android"}
+ - {id: 83, cat: PC/Games, desc: "Games/XBOX"}
+ - {id: 86, cat: PC/Games, desc: "Games/Playstation"}
+ # books
+ - {id: 92, cat: Books/Magazines, desc: "Books/Magazine"}
+ - {id: 93, cat: Books/Ebook, desc: "Books/Novels"}
+ - {id: 95, cat: Books, desc: "Books/Newspapers"}
+ - {id: 133, cat: Audio/Audiobook, desc: "Books/Audiobooks"}
+ # Sport
+ - {id: 114, cat: TV/Sport, desc: "Sport/WWE"}
+ - {id: 115, cat: TV/Sport, desc: "Sport/Cricket"}
+ - {id: 116, cat: TV/Sport, desc: "Sport/Football"}
# XXX
- {id: 89, cat: XXX, desc: "Adult Videos"}
- {id: 90, cat: XXX, desc: "Adult Pics"}
+ # WEB
+ - {id: 135, cat: TV, desc: "Web Series"}
+ # Legact
+ - {id: 30, cat: Other, desc: "Legacy"}
modes:
search: [q]
+ tv-search: [q, season, ep]
+ movie-search: [q]
music-search: [q]
+ book-search: [q]
settings:
- name: username
@@ -80,16 +101,35 @@ settings:
- name: password
type: password
label: Password
+ - name: twofa
+ 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 Desitorrents Web Site. Otherwise just leave it empty."
+ - name: sort
+ type: select
+ label: Sort requested from site
+ # while the grabs and date columns are merged due (see #9849), the time sort on the website fails with "selected sorting wrong: time".
+ # default: "time"
+ default: "relevance"
+ options:
+ # "time": "created"
+ "seeders": "seeders"
+ "size": "size"
+ "relevance": "title"
login:
path: login.php?from=index1
method: post
inputs:
- action: "login"
+ action: login
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
+ twofa: "{{ .Config.twofa }}"
error:
- - selector: ":contains(\"-WARNING-\")"
+ - selector: form#loginform:has(span.warning)
test:
path: ajax.php
@@ -98,11 +138,12 @@ search:
- path: ajax.php?action=search_torrent_cats
method: post
inputs:
- search_string: "{{ .Keywords }}"
- selected_sorting: "relevance"
+ # replace spaces with wildcard (percent symbol) as site's default search is exact string.
+ search_string: "{{ re_replace .Keywords \"[\\s]+\" \"%\" }}"
+ selected_sorting: "{{ .Config.sort }}"
selected_group: ""
search_username: ""
- selected_sub[]: "{{join .Categories \",\"}}"
+ selected_sub[]: "{{ join .Categories \",\" }}"
error:
- selector: ":contains(\"Something was wrong with your request\")"
preprocessingfilters:
@@ -116,32 +157,123 @@ search:
args: "
"
+
rows:
selector: table > tbody > tr
+
fields:
+ category:
+ selector: th:first-child
+ case:
+ img[src$="Bollywood Movies.png"]: 47
+ img[src$="Bengali Movies.png"]: 48
+ img[src$="Tamil Films.png"]: 49
+ img[src$="Punjabi Movies.png"]: 51
+ img[src$="Marathi Movies.png"]: 52
+ img[src$="Malayalam Movies.png"]: 53
+ img[src$="Kannada Movies.png"]: 54
+ img[src$="Gujarati Movies.png"]: 55
+ img[src$="Foreign Movies.png"]: 56
+ img[src$="Pakistani Movies.png"]: 57
+ img[src$="Hollywood Movies.png"]: 58
+ img[src$="Telugu Movies.png"]: 103
+ img[src$="south-dubbed.png"]: 104
+ img[src$="docmentary.png"]: 110
+ img[src$="Bhojpuri Movies.png"]: 117
+ img[src$="Movie Packs.png"]: 124
+ img[src$="Dubbed Movies.png"]: 128
+ img[src$="Animated Movies.png"]: 129
+ img[src$="Short Films.png"]: 140
+ img[src$="Colors TV.png"]: 59
+ img[src$="Sony TV.png"]: 60
+ img[src$="AndTV.png"]: 61
+ img[src$="Star Plus.png"]: 62
+ img[src$="Zee TV.png"]: 63
+ img[src$="Life OK.png"]: 97
+ img[src$="Documentaries.png"]: 98
+ img[src$="sports.png"]: 101
+ img[src$="Others-png.png"]: 102
+ img[src$="Pak-Drama.png"]: 113
+ img[src$="TV Packs.png"]: 125
+ img[src$="Star Bharat.png"]: 130
+ img[src$="Sab TV.png"]: 132
+ img[src$="Hollywood TV.png"]: 139
+ img[src$="Music Videos.png"]: 67
+ img[src$="Hindi Soundtracks.png"]: 68
+ img[src$="Remix Music.png"]: 70
+ img[src$="Ghazal Music.png"]: 71
+ img[src$="Instrumental Music.png"]: 72
+ img[src$="Telugu Music.png"]: 105
+ img[src$="Tamil Music.png"]: 106
+ img[src$="Punjabi Music.png"]: 107
+ img[src$="Gujarati Music.png"]: 108
+ img[src$="Music Compilations.png"]: 109
+ img[src$="Kannada Music.png"]: 118
+ img[src$="Marathi Gaane.png"]: 126
+ img[src$="Lollywood Music.png"]: 127
+ img[src$="Classical Music.png"]: 131
+ img[src$="Desi Pop Music.png"]: 134
+ img[src$="Bengali Music.png"]: 136
+ img[src$="Malayalam Music.png"]: 137
+ img[src$="PC Games.png"]: 78
+ img[src$="Mac Games.png"]: 79 # unverified
+ img[src$="IOS Games.png"]: 80 # unverified
+ img[src$="Android Games.png"]: 81
+ img[src$="XBOX Games.png"]: 83 # unverified
+ img[src$="Playstation Games.png"]: 86 # unverified
+ img[src$="Magazines.png"]: 92
+ img[src$="Novels.png"]: 93
+ img[src$="Newspapers.png"]: 95
+ img[src$="AudioBooks.png"]: 133
+ img[src$="WWE.png"]: 114
+ img[src$="Cricket.png"]: 115
+ img[src$="Football.png"]: 116
+ img[src$="Adult Videos.png"]: 89 # unverified
+ img[src$="Adult Pics.png"]: 90 # unverified
+ img[src$="Web Series.png"]: 135
+ img[src$="no.png"]: 30
title:
- selector: th:nth-child(2) > a[href]
+ selector: a[href^="/torrents.php?id="]
details:
- selector: th:nth-child(2) > a[href]
+ selector: a[href^="/torrents.php?id="]
attribute: href
- files:
- selector: th:nth-child(8)
- # no standard for categories yet :(
download:
- selector: th:nth-child(5) > a[href]
+ selector: a[href^="/torrents.php?action=download&id="]
attribute: href
filters:
- name: prepend
args: "{{ .Config.sitelink }}"
- grabs:
- selector: th:nth-child(11)
size:
selector: th:nth-child(7)
+ files:
+ selector: th:nth-child(8)
seeders:
selector: th:nth-child(9)
leechers:
selector: th:nth-child(10)
+ grabs:
+ # issue #9849 the ajax stream contains 27 | 2020-10-05 03:55:34 (note the broken th terminator for grabs)
+ selector: th:nth-child(11)
+ filters:
+ - name: regexp
+ args: ^(\d+)\d{4}-
+ date:
+ # selector: th:nth-child(12) issue #9849
+ selector: th:nth-child(11)
+ filters:
+ - name: regexp
+ args: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})
+ - name: append
+ args: " +00:00" # GMT
+ - name: dateparse
+ args: "2006-01-02 15:04:05 -07:00"
downloadvolumefactor:
- text: "0"
+ text: 0
uploadvolumefactor:
- text: "1"
+ text: 1
+ minimumratio:
+ text: 1.0
+ minimumseedtime:
+ # 3 days (as seconds = 3 x 24 x 60 x 60)
+ text: 259200
+# engine n/a
diff --git a/src/Jackett.Common/Definitions/morethantv.yml b/src/Jackett.Common/Definitions/morethantv.yml
new file mode 100644
index 000000000..7dd18bd75
--- /dev/null
+++ b/src/Jackett.Common/Definitions/morethantv.yml
@@ -0,0 +1,133 @@
+---
+id: morethantv
+name: MoreThanTV
+description: "MoreThanTV is a Private torrent tracker for TV / MOVIES"
+language: en-us
+type: private
+encoding: UTF-8
+links:
+ - https://www.morethantv.me/
+legacylinks:
+ - https://www.morethan.tv/
+
+caps:
+ categorymappings:
+ - {id: 1, cat: Movies, desc: "Movies"}
+ - {id: 2, cat: TV, desc: "TV"}
+ - {id: 3, cat: Other, desc: "Other"}
+
+ modes:
+ search: [q]
+ tv-search: [q]
+ movie-search: [q]
+
+settings:
+ - name: username
+ type: text
+ label: Username
+ - name: password
+ type: password
+ label: Password
+ - name: freeleech
+ type: checkbox
+ label: Search freeleech only
+ default: false
+ - name: sort
+ type: select
+ label: Sort requested from site
+ default: "time"
+ options:
+ "time": "created"
+ "seeders": "seeders"
+ "size": "size"
+ - name: type
+ type: select
+ label: Order requested from site
+ default: "desc"
+ options:
+ "desc": "desc"
+ "asc": "asc"
+
+login:
+ path: login
+ method: form
+ inputs:
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ cinfo: "2550|1350|24|-60"
+ keeploggedin: 1
+ error:
+ - selector: div.error
+ test:
+ path: torrents.php
+ selector: "#nav_userinfo"
+
+search:
+ paths:
+ - path: torrents.php
+ inputs:
+ $raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
+ searchtext: ""
+ title: "{{ .Keywords }}"
+ order_by: "{{ .Config.sort }}"
+ order_way: "{{ .Config.type }}"
+ action: advanced
+ filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
+ filelist: ""
+ taglist: ""
+
+ rows:
+ # exclude redbar torrents
+ selector: table#torrent_table > tbody > tr[class^="torrent row"]
+
+ fields:
+ download:
+ selector: a[href^="/torrents.php?action=download&id="]
+ attribute: href
+ description:
+ selector: div.tags
+ title:
+ selector: a[href^="/torrents.php?id="]
+ category:
+ selector: a[href*="filter_cat"]
+ attribute: href
+ filters:
+ - name: regexp
+ args: "(\\d+)]=1"
+ details:
+ selector: a[href^="/torrents.php?id="]
+ attribute: href
+ banner:
+ optional: true
+ selector: td:nth-child(2) > script
+ filters:
+ - name: regexp
+ args: "src=\\\\\"(.*?)\\\\\""
+ - name: re_replace
+ args: ["\\\\(.)", "$1"]
+ - name: replace
+ args: ["/static/common/noartwork/noimage.png", ""]
+ files:
+ selector: td:nth-child(3)
+ date:
+ selector: td:nth-child(5) > span
+ attribute: title
+ filters:
+ - name: append
+ args: " -07:00" # PDT
+ - name: dateparse
+ args: "Jan 02 2006, 15:04 -07:00"
+ size:
+ selector: td:nth-child(6)
+ grabs:
+ selector: td:nth-child(7)
+ seeders:
+ selector: td:nth-child(8)
+ leechers:
+ selector: td:nth-child(9)
+ downloadvolumefactor:
+ text: 0
+ uploadvolumefactor:
+ text: 1
+# minimumratio: the site is ratioless
+# Luminance