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: "" - name: append 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 272020-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