mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
desitorrents: fix broken grabs/date selector resolves #9849
refresh catagories add tv-search add movie-search add book-search add 2FA login option add sort config option fix login error detection add % to search string for wild card add category detection add date add MR and MST
This commit is contained in:
@@ -29,49 +29,70 @@ caps:
|
|||||||
- {id: 124, cat: Movies, desc: "Movies/Movie Packs"}
|
- {id: 124, cat: Movies, desc: "Movies/Movie Packs"}
|
||||||
- {id: 128, cat: Movies, desc: "Movies/Dubbed Audio"}
|
- {id: 128, cat: Movies, desc: "Movies/Dubbed Audio"}
|
||||||
- {id: 129, cat: Movies, desc: "Movies/Animated"}
|
- {id: 129, cat: Movies, desc: "Movies/Animated"}
|
||||||
|
- {id: 140, cat: Movies, desc: "Movies/Short Films"}
|
||||||
# tv shows
|
# tv shows
|
||||||
- {id: 59, cat: TV, desc: "TV/Colors"}
|
- {id: 59, cat: TV, desc: "TV/Colors"}
|
||||||
- {id: 60, cat: TV, desc: "TV/Sony"}
|
- {id: 60, cat: TV, desc: "TV/Sony"}
|
||||||
- {id: 61, cat: TV, desc: "TV/& TV"}
|
- {id: 61, cat: TV, desc: "TV/&TV"}
|
||||||
- {id: 62, cat: TV, desc: "TV/Starplus"}
|
- {id: 62, cat: TV, desc: "TV/StarPlus"}
|
||||||
- {id: 63, cat: TV, desc: "TV/ZeeTV"}
|
- {id: 63, cat: TV, desc: "TV/ZEE TV"}
|
||||||
- {id: 97, cat: TV, desc: "TV/Life Ok"}
|
- {id: 97, cat: TV, desc: "TV/Life OK"}
|
||||||
- {id: 98, cat: TV, desc: "TV/Docu"}
|
- {id: 98, cat: TV, desc: "TV/Documentary"}
|
||||||
- {id: 101, cat: TV/Sport, desc: "TV/Sports"}
|
- {id: 101, cat: TV/Sport, desc: "TV/Sports"}
|
||||||
- {id: 102, cat: TV/Other, desc: "TV/Others"}
|
- {id: 102, cat: TV/Other, desc: "TV/Others"}
|
||||||
- {id: 113, cat: TV, desc: "TV/Pak Drama"}
|
- {id: 113, cat: TV, desc: "TV/Pak Drama"}
|
||||||
- {id: 125, cat: TV, desc: "TV/TV Packs"}
|
- {id: 125, cat: TV, desc: "TV/TV Packs"}
|
||||||
- {id: 130, cat: TV, desc: "TV/Star Bharat"}
|
- {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
|
# music
|
||||||
- {id: 67, cat: Audio/Video, desc: "Music Video"}
|
- {id: 67, cat: Audio/Video, desc: "Music/Video"}
|
||||||
- {id: 68, cat: Audio, desc: "Hindi Soundtrack"}
|
- {id: 68, cat: Audio, desc: "Music/Hindi Soundtrack"}
|
||||||
- {id: 70, cat: Audio, desc: "Remix"}
|
- {id: 70, cat: Audio, desc: "Music/Remix"}
|
||||||
- {id: 71, cat: Audio, desc: "Ghazal"}
|
- {id: 71, cat: Audio, desc: "Music/Ghazal"}
|
||||||
- {id: 72, cat: Audio, desc: "Instrumental"}
|
- {id: 72, cat: Audio, desc: "Music/Instrumental"}
|
||||||
- {id: 105, cat: Audio, desc: "Telugu Music"}
|
- {id: 105, cat: Audio, desc: "Music/Telugu"}
|
||||||
- {id: 106, cat: Audio, desc: "Tmil Music"}
|
- {id: 106, cat: Audio, desc: "Music/Tamil"}
|
||||||
- {id: 107, cat: Audio, desc: "Punjabi Music"}
|
- {id: 107, cat: Audio, desc: "Music/Punjabi"}
|
||||||
- {id: 108, cat: Audio, desc: "Gujarati Music"}
|
- {id: 108, cat: Audio, desc: "Music/Gujarati"}
|
||||||
- {id: 109, cat: Audio, desc: "Compilations"}
|
- {id: 109, cat: Audio, desc: "Music/Compilations"}
|
||||||
- {id: 118, cat: Audio, desc: "Kannada Music"}
|
- {id: 118, cat: Audio, desc: "Music/Kannada"}
|
||||||
- {id: 126, cat: Audio, desc: "Marathi"}
|
- {id: 126, cat: Audio, desc: "Music/Marathi"}
|
||||||
- {id: 127, cat: Audio, desc: "Lollywood"}
|
- {id: 127, cat: Audio, desc: "Music/Lollywood"}
|
||||||
- {id: 131, cat: Audio, desc: "Classical"}
|
- {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
|
# games
|
||||||
- {id: 78, cat: PC/Games, desc: "PC"}
|
- {id: 78, cat: PC/Games, desc: "Games/PC"}
|
||||||
- {id: 79, cat: PC/Games, desc: "Mac"}
|
- {id: 79, cat: PC/Games, desc: "Games/Mac"}
|
||||||
- {id: 80, cat: PC/Games, desc: "IOS"}
|
- {id: 80, cat: PC/Games, desc: "Games/IOS"}
|
||||||
- {id: 81, cat: PC/Games, desc: "Android"}
|
- {id: 81, cat: PC/Games, desc: "Games/Android"}
|
||||||
- {id: 83, cat: PC/Games, desc: "XBOX"}
|
- {id: 83, cat: PC/Games, desc: "Games/XBOX"}
|
||||||
- {id: 86, cat: PC/Games, desc: "Playstation"}
|
- {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
|
# XXX
|
||||||
- {id: 89, cat: XXX, desc: "Adult Videos"}
|
- {id: 89, cat: XXX, desc: "Adult Videos"}
|
||||||
- {id: 90, cat: XXX, desc: "Adult Pics"}
|
- {id: 90, cat: XXX, desc: "Adult Pics"}
|
||||||
|
# WEB
|
||||||
|
- {id: 135, cat: TV, desc: "Web Series"}
|
||||||
|
# Legact
|
||||||
|
- {id: 30, cat: Other, desc: "Legacy"}
|
||||||
|
|
||||||
modes:
|
modes:
|
||||||
search: [q]
|
search: [q]
|
||||||
|
tv-search: [q, season, ep]
|
||||||
|
movie-search: [q]
|
||||||
music-search: [q]
|
music-search: [q]
|
||||||
|
book-search: [q]
|
||||||
|
|
||||||
settings:
|
settings:
|
||||||
- name: username
|
- name: username
|
||||||
@@ -80,16 +101,35 @@ settings:
|
|||||||
- name: password
|
- name: password
|
||||||
type: password
|
type: password
|
||||||
label: Password
|
label: Password
|
||||||
|
- name: twofa
|
||||||
|
type: text
|
||||||
|
label: 2FA code
|
||||||
|
- name: info_2fa
|
||||||
|
type: info
|
||||||
|
label: "About 2FA code"
|
||||||
|
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> 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:
|
login:
|
||||||
path: login.php?from=index1
|
path: login.php?from=index1
|
||||||
method: post
|
method: post
|
||||||
inputs:
|
inputs:
|
||||||
action: "login"
|
action: login
|
||||||
username: "{{ .Config.username }}"
|
username: "{{ .Config.username }}"
|
||||||
password: "{{ .Config.password }}"
|
password: "{{ .Config.password }}"
|
||||||
|
twofa: "{{ .Config.twofa }}"
|
||||||
error:
|
error:
|
||||||
- selector: ":contains(\"-WARNING-\")"
|
- selector: form#loginform:has(span.warning)
|
||||||
test:
|
test:
|
||||||
path: ajax.php
|
path: ajax.php
|
||||||
|
|
||||||
@@ -98,11 +138,12 @@ search:
|
|||||||
- path: ajax.php?action=search_torrent_cats
|
- path: ajax.php?action=search_torrent_cats
|
||||||
method: post
|
method: post
|
||||||
inputs:
|
inputs:
|
||||||
search_string: "{{ .Keywords }}"
|
# replace spaces with wildcard (percent symbol) as site's default search is exact string.
|
||||||
selected_sorting: "relevance"
|
search_string: "{{ re_replace .Keywords \"[\\s]+\" \"%\" }}"
|
||||||
|
selected_sorting: "{{ .Config.sort }}"
|
||||||
selected_group: ""
|
selected_group: ""
|
||||||
search_username: ""
|
search_username: ""
|
||||||
selected_sub[]: "{{join .Categories \",\"}}"
|
selected_sub[]: "{{ join .Categories \",\" }}"
|
||||||
error:
|
error:
|
||||||
- selector: ":contains(\"Something was wrong with your request\")"
|
- selector: ":contains(\"Something was wrong with your request\")"
|
||||||
preprocessingfilters:
|
preprocessingfilters:
|
||||||
@@ -116,32 +157,123 @@ search:
|
|||||||
args: "<table>"
|
args: "<table>"
|
||||||
- name: append
|
- name: append
|
||||||
args: "</table>"
|
args: "</table>"
|
||||||
|
|
||||||
rows:
|
rows:
|
||||||
selector: table > tbody > tr
|
selector: table > tbody > tr
|
||||||
|
|
||||||
fields:
|
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:
|
title:
|
||||||
selector: th:nth-child(2) > a[href]
|
selector: a[href^="/torrents.php?id="]
|
||||||
details:
|
details:
|
||||||
selector: th:nth-child(2) > a[href]
|
selector: a[href^="/torrents.php?id="]
|
||||||
attribute: href
|
attribute: href
|
||||||
files:
|
|
||||||
selector: th:nth-child(8)
|
|
||||||
# no standard for categories yet :(
|
|
||||||
download:
|
download:
|
||||||
selector: th:nth-child(5) > a[href]
|
selector: a[href^="/torrents.php?action=download&id="]
|
||||||
attribute: href
|
attribute: href
|
||||||
filters:
|
filters:
|
||||||
- name: prepend
|
- name: prepend
|
||||||
args: "{{ .Config.sitelink }}"
|
args: "{{ .Config.sitelink }}"
|
||||||
grabs:
|
|
||||||
selector: th:nth-child(11)
|
|
||||||
size:
|
size:
|
||||||
selector: th:nth-child(7)
|
selector: th:nth-child(7)
|
||||||
|
files:
|
||||||
|
selector: th:nth-child(8)
|
||||||
seeders:
|
seeders:
|
||||||
selector: th:nth-child(9)
|
selector: th:nth-child(9)
|
||||||
leechers:
|
leechers:
|
||||||
selector: th:nth-child(10)
|
selector: th:nth-child(10)
|
||||||
|
grabs:
|
||||||
|
# issue #9849 the ajax stream contains <th>27</th<th>2020-10-05 03:55:34</th> (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:
|
downloadvolumefactor:
|
||||||
text: "0"
|
text: 0
|
||||||
uploadvolumefactor:
|
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
|
||||||
|
133
src/Jackett.Common/Definitions/morethantv.yml
Normal file
133
src/Jackett.Common/Definitions/morethantv.yml
Normal file
@@ -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
|
Reference in New Issue
Block a user