--- id: torrent9 name: Torrent9 description: "Torrent9 is a FRENCH Public site for TV / MOVIES / GENERAL" language: fr-FR type: public encoding: UTF-8 followredirect: true testlinktorrent: false links: - https://www.torrent9.se/ - https://torrent9.ninjaproxy1.com/ - https://torrent9.proxyninja.org/ legacylinks: - https://ww1.torrent9.uno/ - https://wvw.t9.pe/ - https://www4.torrent9.to/ - https://www.torrent9.cat/ - https://www.torrent09.uno/ - https://www.torrent9.pl/ # this is a proxy for torrent9clone - https://torrent9.black-mirror.xyz/ # this is a proxy for torrent9clone - https://torrent9.unblocked.casa/ # this is a proxy for torrent9clone - https://torrent9.proxyportal.fun/ # this is a proxy for torrent9clone - https://torrent9.uk-unblock.xyz/ # this is a proxy for torrent9clone - https://torrent9.ind-unblock.xyz/ # this is a proxy for torrent9clone - https://ww1.torrent9.is/ - https://ww1.torrent9.to/ - https://www.torrent9.is/ - https://torrent9.li/ # not a proxy for torrent9 or torrent9clone - https://www.oxtorrent.me/ - https://www.torrent9.gg/ - https://www.torrent9.fi/ # this is the torrent9clone domain - https://torrent9.unblockninja.com/ # is a proxy for torrent9clone - https://www.torrent9.fm/ - https://torrent9.to/ # no response data - https://torrent9.se/ # redirect to www. caps: # dont forget to update the search fields category case block categorymappings: - {id: films, cat: Movies, desc: "Movies"} - {id: series, cat: TV, desc: "TV"} - {id: musique, cat: Audio, desc: "Music"} - {id: ebook, cat: Books, desc: "Books"} - {id: logiciels, cat: PC, desc: "Software"} - {id: jeux-pc, cat: PC/Games, desc: "PC Games"} - {id: other, cat: Other, desc: "Other"} # dummy cat for results missing icon modes: search: [q] tv-search: [q, season, ep] movie-search: [q] music-search: [q] book-search: [q] allowrawsearch: true settings: - name: multilang type: checkbox label: Replace MULTi by another language in release name default: false - name: multilanguage type: select label: Replace MULTi by this language default: FRENCH options: FRENCH: FRENCH MULTi FRENCH: MULTi FRENCH ENGLISH: ENGLISH MULTi ENGLISH: MULTi ENGLISH VOSTFR: VOSTFR MULTi VOSTFR: MULTi VOSTFR - name: vostfr type: checkbox label: Replace VOSTFR and SUBFRENCH with ENGLISH default: false - name: sort type: select label: Sort requested from site (Only works for searches with Keywords) default: ".html" options: ".html": best ".html,trie-date-d": created desc ".html,trie-date-a": created asc ".html,trie-seeds-d": seeders desc ".html,trie-seeds-a": seeders asc ".html,trie-poid-d": size desc ".html,trie-poid-a": size asc ".html,trie-nom-d": title desc ".html,trie-nom-a": title asc download: selectors: - selector: a:has(i.fa-magnet) attribute: href search: paths: - path: "{{ if .Keywords }}/search_torrent/{{ .Keywords }}{{ .Config.sort }}{{ else }}{{ end }}" keywordsfilters: # if searching for season packs with S01 to saison 1 #9712 - name: re_replace args: ["(?i)(S0)(\\d{1,2})$", "saison $2"] - name: re_replace args: ["(?i)(S)(\\d{1,3})$", "saison $2"] - name: replace args: [" ", "-"] headers: # site blocks all Linux User-Agents, so use a slightly altered Windows Jackett UA here (e.g. Safari/537.36 > Safari/537.35) User-Agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.35"] rows: selector: table.table-striped > tbody > tr filters: - name: andmatch fields: category_optional: selector: td:nth-child(1) i optional: true case: i[class="fa fa-video-camera"]: films i[class="fa fa-tv"]: series # search by name i[class="fa fa-desktop"]: series # keywordless search i[class="fa fa-music"]: musique i[class="fa fa-gamepad"]: jeux-pc i[class="fa fa-laptop"]: logiciels i[class="fa fa-book"]: ebook category: text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}other{{ end }}" title_default: selector: td:nth-child(1) a title_optional: selector: td:nth-child(1) a[title] attribute: title optional: true title_phase1: text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}" filters: - name: re_replace args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"] title_vostfr: text: "{{ .Result.title_phase1 }}" filters: - name: re_replace args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"] title_phase2: text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}" title_multilang: text: "{{ .Result.title_phase2 }}" filters: - name: re_replace args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"] title: text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}" details: selector: td:nth-child(1) a attribute: href download: selector: td:nth-child(1) a attribute: href date: selector: td:nth-child(2):contains("/") optional: true default: now filters: - name: dateparse args: "dd/MM/yyyy" size: selector: "{{ if .Keywords }}td:nth-child(3){{ else }}td:nth-child(2){{ end }}" filters: - name: re_replace args: ["(\\w)o", "$1B"] seeders: selector: "{{ if .Keywords }}td:nth-child(4){{ else }}td:nth-child(3){{ end }}" optional: true default: 0 leechers: selector: "{{ if .Keywords }}td:nth-child(5){{ else }}td:nth-child(4){{ end }}" optional: true default: 0 downloadvolumefactor: text: 0 uploadvolumefactor: text: 1 # engine n/a