From 56a63bf560ab54d085def17d88785ca9b82a9d12 Mon Sep 17 00:00:00 2001 From: bakerboy448 <55419169+bakerboy448@users.noreply.github.com> Date: Mon, 18 Apr 2022 07:21:51 -0500 Subject: [PATCH] jackett recon 20220418 - v5 api have json attributes --- definitions/v3/Bittorrentfiles.yml | 240 +++++++++++++++++++++++ definitions/v3/arabp2p.yml | 172 +++++++++++++++++ definitions/v5/brsociety-api.yml | 133 +++++++++++++ definitions/v5/hdonly.yml | 294 ++++++++++++++++------------- definitions/v5/lat-team-api.yml | 169 +++++++++++++++++ definitions/v5/reelflix-api.yml | 142 ++++++++++++++ definitions/v5/skipthetrailers.yml | 143 ++++++++++++++ definitions/v5/xthor-api.yml | 154 +++++++-------- 8 files changed, 1239 insertions(+), 208 deletions(-) create mode 100644 definitions/v3/Bittorrentfiles.yml create mode 100644 definitions/v3/arabp2p.yml create mode 100644 definitions/v5/brsociety-api.yml create mode 100644 definitions/v5/lat-team-api.yml create mode 100644 definitions/v5/reelflix-api.yml create mode 100644 definitions/v5/skipthetrailers.yml diff --git a/definitions/v3/Bittorrentfiles.yml b/definitions/v3/Bittorrentfiles.yml new file mode 100644 index 000000000..07ebcf5a3 --- /dev/null +++ b/definitions/v3/Bittorrentfiles.yml @@ -0,0 +1,240 @@ +--- +id: Bittorrentfiles +name: Bittorrentfiles +description: "Bittorrentfiles is a Private GERMAN tracker" +language: de-DE +type: private +encoding: UTF-8 +links: + - https://bittorrentfiles.me/ +legacylinks: + - https://www.Bittorrentfiles.me/ + +caps: + categorymappings: + # Movie + - {id: 48, cat: Movies/HD, desc: "Movie 1080p"} + - {id: 31, cat: Movies/3D, desc: "Movie 3D"} + - {id: 21, cat: Movies/HD, desc: "Movie 720p"} + - {id: 28, cat: Movies/SD, desc: "Movie AVI"} + - {id: 20, cat: Movies/DVD, desc: "Movie DVD-R"} + - {id: 40, cat: Movies/HD, desc: Movie "h264/x264"} + - {id: 30, cat: Movies/HD, desc: "Movie HD/BD"} + - {id: 49, cat: Movies/Foreign, desc: "Movie International"} + - {id: 78, cat: Movies/UHD, desc: "Movie UHD"} + - {id: 85, cat: Movies/HD, desc: "Movie x265"} + # Serien + - {id: 79, cat: TV/HD, desc: "Staffeln HD"} + - {id: 56, cat: TV/SD, desc: "Staffeln SD"} + - {id: 88, cat: TV/UHD, desc: "Staffeln UHD"} + - {id: 86, cat: TV/UHD, desc: "Folgen UHD"} + - {id: 54, cat: TV/HD, desc: "Folgen HD"} + - {id: 80, cat: TV/HD, desc: "Folgen HD/BD"} + - {id: 7, cat: TV/SD, desc: "Folgen SD"} + - {id: 55, cat: TV/Foreign, desc: "Folgen International"} + # Doku + - {id: 91, cat: TV/Documentary, desc: "Doku UHD"} + - {id: 64, cat: TV/Documentary, desc: "Doku HD"} + - {id: 36, cat: TV/Documentary, desc: "Doku SD"} + - {id: 81, cat: TV/Documentary, desc: "Doku 3D"} + - {id: 82, cat: TV/Documentary, desc: "Doku Packs"} + # Spiele + - {id: 4, cat: PC/Games, desc: "Spiele Windows"} + - {id: 92, cat: PC/Mac, desc: "Spiele Mac"} + - {id: 93, cat: PC, desc: "Spiele Linux"} + - {id: 97, cat: Console/XBox, desc: "Spiele XBOX"} + - {id: 94, cat: PC/Mobile-Other, desc: "Spiele Mobile"} + - {id: 95, cat: Console/NDS, desc: "Spiele Nintendo"} + - {id: 96, cat: Console/PSP, desc: "Spiele Playstation"} + - {id: 42, cat: Console/Other, desc: "Spiele Andere"} + # Musik + - {id: 66, cat: Audio, desc: "Musik Alben"} + - {id: 75, cat: Audio, desc: "Musik Singles"} + - {id: 50, cat: Audio, desc: "Musik Charts"} + - {id: 52, cat: Audio, desc: "Musik Packs"} + - {id: 53, cat: Audio/Video, desc: "Musik Video"} + - {id: 61, cat: Audio/Video, desc: "Musik DVD-R"} + - {id: 83, cat: Audio/Lossless, desc: "Musik Flac"} + - {id: 68, cat: Audio, desc: "Musik Live"} + - {id: 6, cat: Audio, desc: "Musik Misc"} + - {id: 51, cat: Audio, desc: "Musik OST"} + - {id: 67, cat: Audio, desc: "Musik Sampler"} + # App + - {id: 98, cat: PC/0day, desc: "App Windows"} + - {id: 62, cat: PC/Mac, desc: "App Mac OS"} + - {id: 63, cat: PC/0day, desc: "App Linux"} + - {id: 34, cat: PC, desc: "App Andere"} + # Sport + - {id: 74, cat: TV/Sport, desc: "Sport HD"} + - {id: 39, cat: TV/Sport, desc: "Sport SD"} + # Sonstiges + - {id: 41, cat: Audio/Audiobook, desc: "Sonstiges A-Book"} + - {id: 33, cat: TV/Anime, desc: "Sonstiges Anime"} + - {id: 35, cat: Books/EBook, desc: "Sonstiges e-Book-DE"} + - {id: 90, cat: Books/EBook, desc: "Sonstiges e-Book-INT"} + - {id: 65, cat: Other, desc: "Sonstiges E-Learning"} + - {id: 37, cat: PC, desc: "Sonstiges Mobile"} + - {id: 87, cat: Books/Mags, desc: "Sonstiges E-Paper"} + - {id: 38, cat: Other, desc: "Sonstiges Kids"} + - {id: 47, cat: Other, desc: "Sonstiges Line"} + - {id: 9, cat: Other, desc: "Sonstiges Andere"} + # XXX + - {id: 58, cat: XXX/x264, desc: "XXX HD"} + - {id: 46, cat: XXX, desc: "XXX Hentai"} + - {id: 59, cat: XXX/Pack, desc: "XXX Pack"} + - {id: 27, cat: XXX/SD, desc: "XXX SD"} + - {id: 76, cat: XXX, desc: "XXX Andere"} + + + modes: + search: [q] + tv-search: [q, season, ep, imdbid] + movie-search: [q, imdbid] + music-search: [q] + book-search: [q] + +settings: + - name: user + type: text + label: Username + - name: pass + type: password + label: Password + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: sort + type: select + label: Sort requested from site + default: added + options: + added: created + seeds: seeders + size: size + name: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_account + type: info + label: Account Settings + default: In order to see the correct date and size in the torrent rows, change the Torrentliste: setting to Modern on your account profile. + - 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: signin.php + method: form + form: form + inputs: + user: "{{ .Config.user }}" + pass: "{{ .Config.pass }}" + error: + - selector: .error + test: + path: browse.php + +search: + path: browse.php + inputs: + $raw: "{{ range .Categories }}c{{.}}=1&{{end}}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" + # 0=title, 1=descr, 2=nfo, 3=all, 4=imdb + search_where: "{{ if .Query.IMDBID }}3{{ else }}0{{ end }}" + # 0=active, 1=all, 2=onlydead, 4=only upload, 5=doubleup, 6=halfdown, 7=highlight, 8=request + status: "{{ if .Config.freeleech }}4{{ else }}1{{ end }}" + orderby: "{{ .Config.sort }}" + sort: "{{ .Config.type }}" + + rows: + selector: table.tableinborder > tbody > tr:has(a[href^="/download.php"]) + + fields: + title: + selector: a[href^="details.php"] + attribute: title + category: + selector: a[href^="/browse.php?cat="] + attribute: href + filters: + - name: querystring + args: cat + details: + selector: a[href^="details.php"] + attribute: href + download: + selector: a[href^="/download.php"] + attribute: href + grabs_optional: + selector: a[title="Snatcher"] + optional: true + grabs: + text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}" + files_optional: + selector: a[title="Files"] + optional: true + files: + text: "{{ if .Result.files_optional }}{{ .Result.files_optional }}{{ else }}0{{ end }}" + size: + selector: td:nth-child(6) + seeders_optional: + selector: a[title="Seeder"] + optional: true + seeders: + text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}" + leechers_optional: + selector: a[title="Leecher"] + optional: true + leechers: + text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}" + # 2 flavours of dates + date_day: + # Heute 13:30:04 + # Gestern 09:10:10 + selector: td:nth-child(10):contains("Heute"), td:nth-child(10):contains("Gestern") + optional: true + filters: + - name: split + args: ["b", 0] + - name: replace + args: ["Heute", "Today"] + - name: replace + args: ["Gestern", "Yesterday"] + - name: append + args: " +01:00" # CET + date_year: + # 30.02.2018 23:12:50 + selector: td:nth-child(10):contains("."):contains(":") + optional: true + filters: + - name: split + args: ["b", 0] + - name: append + args: " +01:00" # CET + - name: dateparse + args: "02.01.2006 15:04:05 -07:00" + date: + text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}" + downloadvolumefactor: + case: + img[alt="OU"]: 0 + img[alt="D/2"]: 0.5 + img[alt="D / 2"]: 0.5 + "*": 1 + uploadvolumefactor: + case: + img[alt="2xU"]: 2 + "*": 1 + minimumratio: + text: 0.8 + minimumseedtime: + # 60 hours (as seconds = 60 x 60 x 60) + text: 216000 +# engine n/a diff --git a/definitions/v3/arabp2p.yml b/definitions/v3/arabp2p.yml new file mode 100644 index 000000000..520071478 --- /dev/null +++ b/definitions/v3/arabp2p.yml @@ -0,0 +1,172 @@ +--- +id: arabp2p +name: ArabP2P +description: "ArabP2P is an ARABIC Private Torrent Tracker for MOVIES / TV / GENERAL" +language: ar-AR +type: private +encoding: UTF-8 +links: + - https://www.arabp2p.com/ +legacylinks: + - http://www.arabp2p.com/ + +settings: + - name: username + type: text + label: Username + - name: password + type: password + label: Password + - name: sort + type: select + label: Sort requested from site + default: 3 + options: + 3: created + 5: seeders + 4: size + 2: title + - name: type + type: select + label: Order requested from site + default: 2 + options: + 2: desc + 1: asc + +caps: + categorymappings: + # المرئيات العربية Arabic Movies + - {id: 14, cat: Movies, desc: "اسلامي (Islamic)"} + - {id: 19, cat: TV/Documentary, desc: "وثائقي (Documentary)"} + - {id: 70, cat: TV, desc: "تعليمي (Educational)"} + - {id: 41, cat: Movies, desc: "افلام عربيه (Arabic Movies)"} + - {id: 88, cat: Movies, desc: "افلام مدبلجه عربي (Arabic Dubbed Movies)"} + - {id: 44, cat: TV, desc: "مسلسلات عربية (Arabic Series)"} + - {id: 89, cat: TV, desc: "مسلسلات عربية كامله (Full Arabic Series)"} + - {id: 52, cat: TV, desc: "مسرحيات (Plays)"} + - {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"} + - {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"} + - {id: 111, cat: TV, desc: "2022 رمضان (2022 Ramadan)"} + # المرئيات الاجنبية Foreign Movies + - {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"} + - {id: 93, cat: TV/Documentary, desc: "وثائقي (Documentary)"} + - {id: 45, cat: TV/Foreign, desc: "مسلسلات وبرامج اجنبيه (Serials)"} + - {id: 57, cat: TV/Foreign, desc: "مسلسلات آسيوية (Asian Series)"} + - {id: 42, cat: Movies/Foreign, desc: "افلام اجنبيه (Foreign)"} + - {id: 76, cat: Movies/3D, desc: "&ثلاثي الابعاد 3D (3D)"} + - {id: 74, cat: Movies/HD, desc: "جودة عالية HD"} + - {id: 59, cat: Movies/Foreign, desc: "افلام آسيوية (Asian Movies)"} + - {id: 86, cat: Movies/Foreign, desc: "افلام هنديه (Indian Movies)"} + # انمي مدبلج عربي Anime Arabic dubbed + - {id: 98, cat: TV/Anime, desc: "افلام (Movies)"} + - {id: 100, cat: TV/Anime, desc: "مسلسلات (Series)"} + - {id: 102, cat: TV/Anime, desc: "حلقات (Episdoes)"} + # انمي مترجم عربي Anime Arabic translator + - {id: 99, cat: TV/Anime, desc: "افلام (Movies)"} + - {id: 101, cat: TV/Anime, desc: "مسلسلات (Series)"} + - {id: 103, cat: TV/Anime, desc: "حلقات (Episodes)"} + - {id: 85, cat: TV/Anime, desc: "الكارتون الصامت والكلاسيكي (Cartoons)"} + # صوتيات Audio + - {id: 25, cat: Audio, desc: "القران الكريم (The Holy Quran)"} + - {id: 27, cat: Audio, desc: "محاضرات (Lectures)"} + - {id: 26, cat: Audio, desc: "اناشيد (Chants)"} + # برامج Software + - {id: 22, cat: PC, desc: "برامج عربية (Arabic Software)"} + - {id: 23, cat: PC, desc: "برامج عامه (Public Software)"} + - {id: 78, cat: PC/Mobile-iOS, desc: "iPad/iPhone"} + - {id: 79, cat: PC/Mobile-Android, desc: "android"} + # العاب Games + - {id: 30, cat: PC/Games, desc: "PC"} + - {id: 31, cat: Console/PS3, desc: "PS2"} + - {id: 53, cat: Console/Wii, desc: "wii"} + - {id: 55, cat: Console/PSP, desc: "PSP"} + - {id: 63, cat: Console/XBox, desc: "XBOX"} + - {id: 64, cat: Console/PS3, desc: "PS3"} + # اخرى Other + - {id: 17, cat: Books, desc: "كتب (Books)"} + - {id: 65, cat: Other, desc: "صور (Images)"} + - {id: 56, cat: Other, desc: "رياضي (Sport)"} + - {id: 46, cat: Other, desc: "منوع (Misc)"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + music-search: [q] + book-search: [q] + +login: + path: index.php?page=login + method: form + form: form[action^="index.php?page=login"] + inputs: + uid: "{{ .Config.username }}" + pwd: "{{ .Config.password }}" + error: + - selector: tr td span[style="color:#FF0000;"] + test: + path: index.php + selector: a[href^="logout.php?t="] + +search: + paths: + # https://www.arabp2p.com/index.php?page=torrents&search=&category=0&active=0&internel=0 + - path: index.php + inputs: + page: torrents + search: "{{ .Keywords }}" + category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}" + # 0 all 1 activeonly 2 deadonly + active: 0 + # 0 all 1 internal 2 external + internel: 0 + order: "{{ .Config.sort }}" + by: "{{ .Config.type }}" + # does not support imdbid search or provide imdb link in results + + rows: + selector: table.torrent tr.torrent + filters: + - name: andmatch + + fields: + category: + selector: td a[href^="index.php?page=torrents&category="] + attribute: href + filters: + - name: querystring + args: category + title: + selector: td a[href^="index.php?page=torrent-details"] + details: + selector: td a[href^="index.php?page=torrent-details"] + attribute: href + download: + selector: td a[href^="download.php"] + attribute: href + date: + selector: td:nth-child(4) span + attribute: title + filters: + - name: append + args: " +00:00" # auto adjusted by site account profile + - name: dateparse + args: "2006-01-02 15:04:05 -07:00" + seeders: + selector: td:nth-child(5) + leechers: + selector: td:nth-child(6) + size: + selector: td:nth-child(7) + downloadvolumefactor: + case: + span.free: 0 + "*": 1 + uploadvolumefactor: + text: 1 + minimumratio: + text: 0.8 + minimumseedtime: + text: 259200 # 3 days +# xbtit diff --git a/definitions/v5/brsociety-api.yml b/definitions/v5/brsociety-api.yml new file mode 100644 index 000000000..7ee609b65 --- /dev/null +++ b/definitions/v5/brsociety-api.yml @@ -0,0 +1,133 @@ +--- +id: brsociety-api +name: BrSociety (API) +description: "BrSociety (SemeandoCC) is a BRAZILIAN Private Torrent Tracker for E-LEARNING" +language: pt-BR +type: private +encoding: UTF-8 +links: + - https://brsociety.club/ + +caps: + categorymappings: + - {id: 1, cat: TV, desc: "Cursos"} + - {id: 2, cat: Books/EBook, desc: "eBooks"} + - {id: 5, cat: Books/Mags, desc: "Revistas"} + - {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"} + - {id: 4, cat: Other, desc: "Arquivos de Auxilio"} + - {id: 6, cat: Other, desc: "Graduação"} + + modes: + search: [q] + tv-search: [q] + book-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 BrSociety 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?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ 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 }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}" + response: + type: json + + rows: + selector: data + attribute: attributes + count: + selector: meta.total + + fields: + categorydesc: + selector: category + title: + selector: name + details: + selector: details_link + download: + selector: download_link + size: + selector: size + magnet: + selector: magnet_link + optional: true + poster: + selector: poster + filters: + - name: replace + args: ["https://via.placeholder.com/90x135", ""] + - name: replace + args: ["https://via.placeholder.com/400x600", ""] + 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 + downloadvolumefactor: + # api returns 0=false, 1=true + selector: freeleech + case: + 0: 1 # not free + 1: 0 # freeleech + uploadvolumefactor: + # api returns 0=false, 1=true + selector: double_upload + case: + 0: 1 # normal + 1: 2 # double + minimumratio: + text: 1.0 + minimumseedtime: + # 5 days (as seconds = 5 x 24 x 60 x 60) + text: 432000 +# json UNIT3D 5.3.0 diff --git a/definitions/v5/hdonly.yml b/definitions/v5/hdonly.yml index 7318bf43d..264b15ce2 100644 --- a/definitions/v5/hdonly.yml +++ b/definitions/v5/hdonly.yml @@ -5,19 +5,16 @@ description: "HD-Only (HD-O) is a FRENCH Private Torrent Tracker for HD MOVIES / language: fr-FR type: private encoding: UTF-8 -followredirect: false -allowdownloadredirect: false -protocol: torrent -testlinktorrent: true links: - https://hd-only.org/ caps: categorymappings: - - {id: 1, cat: Movies, desc: "Film", default: true} + - {id: 1, cat: Movies, desc: "Film"} - {id: 3, cat: TV/Anime, desc: "Dessin animé"} + - {id: 4, cat: Movies, desc: "Concert"} - {id: 5, cat: TV, desc: "Série"} - - {id: 6, cat: TV/Anime, desc: "Série animé"} + - {id: 6, cat: TV/Anime, desc: "Série anim"} - {id: 7, cat: Movies/Other, desc: "Film d'animation"} - {id: 9, cat: Audio/Video, desc: "Concert"} - {id: 11, cat: TV/Documentary, desc: "Documentaire"} @@ -39,74 +36,17 @@ settings: - name: password type: password label: Password - - name: info_search - type: info - label: Search Tweak - default: You can tweak the search query by using the following parameters. - - name: scene - type: checkbox - label: Scene Release only - default: false - - name: bitrate - type: select - label: Bitrate - default: all - options: - all: all - 4320p: 4320p - 2160p: 2160p - 1440p: 1440p - 1080p: 1080p - 1080i: 1080i - 720p: 720p - - name: format - type: select - label: Format - default: all - options: - all: all - x264: x264 - VC-1: VC-1 - AVC: AVC - MPEG-2: MPEG-2 - x265: x265 - HEVC: HEVC - VP9: VP9 - Autre: others - - name: sort - type: select - label: Sort by - default: time - options: - time: created - year: year - size: size - snatched: snatched - seeders: seeders - leechers: leechers - random: random - - name: type - type: select - label: Order type - default: desc - options: - desc: descendant - asc: ascendant - name: freeleech type: checkbox - label: Freeleech only + label: Search freeleech only default: false - - name: info_replacement - type: info - label: Replacements - default: You can replace some values by using the following parameters. - name: multilang type: checkbox - label: Replace MULTI in release name + label: Replace MULTI by another language in release name default: false - name: multilanguage type: select - label: ... by this language + label: Replace MULTI by this language default: FRENCH options: FRENCH: FRENCH @@ -119,6 +59,25 @@ settings: type: checkbox label: Replace VOSTFR with ENGLISH 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 + - name: info_radarr + type: info + label: About Radarr + default: The HD-Only web site cannot find movies if you use the release year in a title search. When you define your Radarr v3 Indexer remember to tick the Remove year from search string checkbox. login: path: login.php @@ -134,18 +93,19 @@ login: selector: a[href^="logout.php?auth="] search: + # https://hd-only.org/torrents.php?groupname=blood&freetorrent=1&order_by=time&order_way=desc&action=advanced&searchsubmit=1 path: torrents.php inputs: - searchstr: "{{ .Keywords }}" + # does not support categories, uses releasetype for single filter so we canot do multi releasetype filtering either. + # $raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}" + groupname: "{{ .Keywords }}" order_by: "{{ .Config.sort }}" order_way: "{{ .Config.type }}" - group_results: 0 - encoding: "{{ if ne .Config.bitrate \"all\" }}{{ .Config.bitrate }}{{ else }}{{ end }}" - format: "{{ if ne .Config.format \"all\" }}{{ .Config.format }}{{ else }}{{ end }}" - freetorrent: "{{ if .Config.freeleech }}1{{ else }}{{ end }}" - scene: "{{ if .Config.scene }}1{{ else }}0{{ end }}" action: advanced searchsubmit: 1 + # 1 freeleech, 2 neutral, 3 both, 0 normal + freetorrent: "{{ if .Config.freeleech }}1{{ else }}{{ end }}" + # site does not support imdbid search or display imdb links in results rows: selector: table#torrent_table > tbody > tr.torrent @@ -154,73 +114,145 @@ search: download: selector: a[href^="torrents.php?action=download&"] attribute: href - # title > step 1 - grab orginal title and normalize - title_result: - selector: div.group_info > a + title_phase1: + selector: div.group_info + remove: span:nth-child(1), div.tags filters: + - name: replace + args: ["\n", ""] + - name: re_replace + args: ["^(.+) (.+)", "$2-$1"] + - name: replace + args: [" ", " "] + - name: replace + args: ["Blu-Ray Original", "Complete.BluRay"] + - name: replace + args: ["Blu-Ray Remux", "Remux"] + - name: replace + args: ["Blu-Ray Rip", "BluRay.Rip"] + - name: replace + args: ["mHD", "mHD.BluRay.Rip"] + - name: replace + args: ["/ DC", "/ Directors.Cut"] + - name: replace + args: ["/ VL", "/ Extended"] + - name: replace + args: ["/ RM", "/ Remastered"] + - name: replace + args: ["/ UC", "/ Uncut"] + - name: replace + args: ["/ ES", "/ Special.Edition"] + - name: replace + args: [" / Cust_sub", ""] + - name: replace + args: [" / Cust", ""] + - name: replace + args: ["/ UN", "/ Unrated"] + - name: replace + args: [" / Crit", ""] + - name: replace + args: [" / WAC", ""] + - name: replace + args: [" / MoC", ""] + - name: replace + args: [" / BFI", ""] + - name: replace + args: [" / MUET", ""] + - name: replace + args: ["/ Exc NF", "/ NF"] + - name: replace + args: ["/ Exc AMZ", "/ AMZ"] + - name: replace + args: ["/ Exc YOU", "/ YT"] + - name: replace + args: [" / Freeleech!", ""] + - name: replace + args: [" / Complété!", ""] + - name: replace + args: [" / ", "."] - name: trim + - name: replace + args: [".VFF.VFQ.stFR.MULTI", ".MULTI.VFF.VFQ"] + - name: replace + args: [".VFF.VFQ.VO.stFR.MULTI", ".MULTI.VFF.VFQ"] + - name: replace + args: [".VFF.VFQ.VO.stFR", ".MULTI.VFF.VFQ"] + - name: replace + args: [".VFQ.VO.stFR", ".MULTI.VFQ"] + - name: replace + args: [".VO.VFI.stFR", ".MULTI"] + - name: replace + args: [".VO.VF?.stFR", ".MULTI"] + - name: replace + args: [".VFF.VO.stFR", ".MULTI.VFF"] + - name: replace + args: [".VOF.stFR", ".FRENCH"] + - name: replace + args: [".VFQ.stFR", ".FRENCH"] + - name: replace + args: [".VFF.stFR.MULTI", ".MULTI.VFF"] + - name: replace + args: [".VFF.stFR", ".FRENCH"] + - name: replace + args: [".VFI.MULTI", ".MULTI"] + - name: replace + args: [".VO.stFR", ".VOSTFR"] + - name: replace + args: [".VFQ.VO", ".MULTI.VFQ"] + - name: replace + args: [".VFF.VO", ".MULTI.VFF"] + - name: replace + args: [".VO.VF?.stFR", ".MULTI"] + - name: replace + args: [".VFI.stFR", ".FRENCH"] + - name: replace + args: [".VOF.MULTI", ".MULTI.FRENCH"] + - name: replace + args: [".VOF", ".FRENCH"] + - name: replace + args: [".VFQ.MULTI", ".MULTI.VFQ"] + - name: replace + args: ["[Film]", ""] + - name: replace + args: ["[Dessin animé]", ""] + - name: replace + args: ["[Film d'animation]", ""] + - name: replace + args: ["[Concert]", ""] + - name: replace + args: ["[Documentaire]", ""] + - name: replace + args: ["[Court-métrage]", ""] + - name: replace + args: ["[Clip]", ""] + - name: replace + args: ["[Démonstration]", ""] + - name: replace + args: ["[Bonus de BD]", ""] + - name: replace + args: ["[Autre]", ""] + - name: replace + args: ["[Série Animée]", ""] + - name: replace + args: ["[Série]", ""] - name: re_replace - args: ["\\s:\\s", " "] - - name: re_replace - args: ["\\s", "."] - - name: append - args: "." - # title > step 2 - grab movie year - title_year: - selector: div.group_info.clear + args: ["\\[(\\d{4})\\]", "$1"] + title_multilang: + text: "{{ .Result.title_phase1 }}" filters: - - name: regexp - args: "\\s\\[(\\d{4})\\]\\s" - - name: append - args: "." - # title > step 3 - grab release group - title_group: - selector: div.group_info.clear > div.torrent_info > strong:last-child - attribute: title - # title > step 4 - grab release infos and normalize - title_infos: - selector: div.group_info.clear > div.torrent_info - remove: strong + - name: re_replace + args: ["(?i)([\\s|\\.|-]*multi[\\s|\\.|-]*)", ".{{ .Config.multilanguage }}."] + title_phase2: + text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase1 }}{{ end }}" + title_vostfr: + text: "{{ .Result.title_phase2 }}" filters: - - name: toupper - name: re_replace - args: ["\\sBLU-RAY\\s(ORIGINAL|4K|HD)\\s", "COMPLETE.BLURAY"] + args: ["(?i)([\\s|\\.|-]*vostfr[\\s|\\.|-]*)", ".ENGLISH."] - name: re_replace - args: ["\\sBLU-RAY\\sREMUX\\s(4K|HD)\\s", "BLURAY.REMUX"] - - name: re_replace - args: ["\\sBLU-RAY\\sRIP\\s(4K|HD)\\s", "BLURAY"] - - name: re_replace - args: ["\\sWEB-DL/RIP\\s(4K|HD)\\s", "WEBDL"] - - name: re_replace - args: ["\\s(CUST_SUB|CUST|CRIT|WAC|MOC|BFI|MUET|EXC\\sNF|EXC\\sAMZ|EXC\\sYOU)\\s", ""] - - name: re_replace - args: ["\\s(VOF|STFR)\\s", ""] - - name: re_replace - args: ["\\sVO\\s", "MULTI"] - - name: re_replace - args: ["\\s(UN)\\s", "UNRATED"] - - name: re_replace - args: ["\\s(ES)\\s", "SPECIAL.EDITION"] - - name: re_replace - args: ["\\s(UC)\\s", "UNCUT"] - - name: re_replace - args: ["\\s(RM)\\s", "REMASTERED"] - - name: re_replace - args: ["\\s(VL)\\s", "EXTENDED"] - - name: re_replace - args: ["\\s(DC)\\s", "DIRECTORS.CUT"] - - name: re_replace - args: ["\\s+", ""] - - name: re_replace - args: ["\/+", "."] - - name: trim - args: "." - - name: re_replace - args: ["VFF.VFQ", "VFF"] - # title > step 5 - finale concatenation + args: ["(?i)([\\s|\\.|-]*subfrench[\\s|\\.|-]*)", ".ENGLISH."] title: - text: "{{ .Result.title_result }}{{ .Result.title_year }}{{ .Result.title_infos }}{{ if .Result.title_group }}-{{ .Result.title_group }}{{ else }}-HDO{{ end }}" - ### NEXT + text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase2 }}{{ end }}" description: selector: div.group_info poster: diff --git a/definitions/v5/lat-team-api.yml b/definitions/v5/lat-team-api.yml new file mode 100644 index 000000000..a847ee392 --- /dev/null +++ b/definitions/v5/lat-team-api.yml @@ -0,0 +1,169 @@ +--- +id: lat-team-api +name: Lat-Team (API) +description: "Lat-Team is a SPANISH Private Torrent Tracker for MOVIES / TV" +language: es-ES +type: private +encoding: UTF-8 +links: + - https://lat-team.com/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Peliculas"} + - {id: 2, cat: TV, desc: "TV Series"} + - {id: 3, cat: Audio, desc: "Musica"} + - {id: 4, cat: Console, desc: "Juegos"} + - {id: 5, cat: TV/Anime, desc: "Anime"} + - {id: 6, cat: Movies/Other, desc: "Retro Pelicula"} + - {id: 7, cat: TV/Other, desc: "Retro Serie TV"} + - {id: 8, cat: TV/Foreign, desc: "Telenovelas y Teleseries"} + - {id: 9, cat: Audio/Video, desc: "Conciertos"} + - {id: 10, cat: TV/Documentary, desc: "Documentales"} + - {id: 11, cat: Other, desc: "Videotutoriales y Educativo"} + - {id: 12, cat: XXX, desc: "XXX"} + - {id: 16, cat: TV/Sport, desc: "Deportes"} + - {id: 17, cat: PC, desc: "Sistemas Operativos"} + - {id: 18, cat: Books, desc: "E-Books"} + - {id: 19, cat: Audio/Audiobook, desc: "Audiolibros"} + - {id: 20, cat: Movies/Other, desc: "Películas Oscars"} + - {id: 21, cat: Audio/Video, desc: "VideoMixes"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid] + movie-search: [q, imdbid, tmdbid] + music-search: [q] + book-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 Lat-Team 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?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ 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 }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}" + response: + type: json + keywordsfilters: + - name: re_replace + args: ["(?i)\\bS(\\d+)", "T$1"] + + rows: + selector: data + attribute: attributes + count: + selector: meta.total + + fields: + categorydesc: + selector: category + title_vose: + selector: name:contains(VOSE) + optional: true + filters: + - name: re_replace + args: ["^ *\\[[^\\]]*\\] *", ""] # Remove prefix tags + - name: re_replace + args: ["(?i)\\bT(\\d+)", "S$1"] + - name: re_replace + args: ["UHDRip", "BDRip"] # Fix for Radarr + - name: append + args: " ENGLiSH" + title_notvose: + selector: name:not(:contains(VOSE)) + optional: true + filters: + - name: re_replace + args: ["^ *\\[[^\\]]*\\] *", ""] # Remove prefix tags + - name: re_replace + args: ["(?i)\\bT(\\d+)", "S$1"] + - name: re_replace + args: ["UHDRip", "BDRip"] # Fix for Radarr + - name: append + args: " SPANiSH" + title: + text: "{{ if .Result.title_vose }}{{ .Result.title_vose }}{{ else }}{{ .Result.title_notvose }}{{ end }}" + 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=false, 1=true + selector: freeleech + case: + 0: 1 # not free + 1: 0 # freeleech + uploadvolumefactor: + # api returns 0=false, 1=true + selector: double_upload + case: + 0: 1 # normal + 1: 2 # double + minimumratio: + text: 1.0 + minimumseedtime: + # 4 days (as seconds = 4 x 24 x 60 x 60) + text: 345600 +# json UNIT3D 5.3.0 diff --git a/definitions/v5/reelflix-api.yml b/definitions/v5/reelflix-api.yml new file mode 100644 index 000000000..f5b2e5677 --- /dev/null +++ b/definitions/v5/reelflix-api.yml @@ -0,0 +1,142 @@ +--- +id: reelflix-api +name: ReelFLiX (API) +description: "ReelFLiX (HD4Free,LegacyHD) is a Private Torrent Tracker for HD MOVIES" +language: en-US +type: private +encoding: UTF-8 +links: + - https://reelflix.xyz/ +legacylinks: + - https://legacyhd.org/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Movie"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid] + movie-search: [q, imdbid, tmdbid] + music-search: [q] + book-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 ReelFlix 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 + minimumratio: + text: 1.0 +# json UNIT3D 6.0.6 diff --git a/definitions/v5/skipthetrailers.yml b/definitions/v5/skipthetrailers.yml new file mode 100644 index 000000000..8d038282f --- /dev/null +++ b/definitions/v5/skipthetrailers.yml @@ -0,0 +1,143 @@ +--- +id: skipthetrailers +name: SkipTheTrailers +description: "SkipTheTrailers (STT) is a Private Torrent Tracker for MOVIES" +language: en-US +type: private +encoding: UTF-8 +links: + - https://skipthetrailers.xyz/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Movies"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid] + movie-search: [q, imdbid, tmdbid] + music-search: [q] + book-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 SkipTheTrailers 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 + minimumratio: + text: 1.0 + minimumseedtime: + # 7 days (as seconds = 2 x 24 x 60 x 60) + text: 172800 +# json UNIT3D 6.0.6 diff --git a/definitions/v5/xthor-api.yml b/definitions/v5/xthor-api.yml index f58f01cb3..0c46862ec 100644 --- a/definitions/v5/xthor-api.yml +++ b/definitions/v5/xthor-api.yml @@ -7,95 +7,96 @@ type: private encoding: windows-1252 requestDelay: 2.5 links: - - https://xthor.tk + - https://xthor.tk/ legacylinks: - - https://xthor.to + - https://xthor.bz/ + - https://xthor.to/ caps: categorymappings: # Movies / Films - - { id: 118, cat: Movies/BluRay, desc: "Films/2160p/Bluray" } - - { id: 119, cat: Movies/UHD, desc: "Films/2160p/Remux" } - - { id: 107, cat: Movies/UHD, desc: "Films/2160p/x265" } - - { id: 1, cat: Movies/BluRay, desc: "Films/1080p/BluRay" } - - { id: 2, cat: Movies/HD, desc: "Films/1080p/Remux" } - - { id: 100, cat: Movies/HD, desc: "Films/1080p/x265" } - - { id: 4, cat: Movies/HD, desc: "Films/1080p/x264" } - - { id: 5, cat: Movies/HD, desc: "Films/720p/x264" } - - { id: 7, cat: Movies/SD, desc: "Films/SD/x264" } - - { id: 3, cat: Movies/3D, desc: "Films/3D" } - - { id: 6, cat: Movies/SD, desc: "Films/XviD" } - - { id: 8, cat: Movies/DVD, desc: "Films/DVD" } - - { id: 122, cat: Movies/HD, desc: "Films/HDTV" } - - { id: 94, cat: Movies/WEB-DL, desc: "Films/WEBDL" } - - { id: 95, cat: Movies/WEB-DL, desc: "Films/WEBRiP" } - - { id: 12, cat: TV/Documentary, desc: "Films/Documentaire" } - - { id: 31, cat: Movies/Other, desc: "Films/Animation" } - - { id: 33, cat: Movies/Other, desc: "Films/Spectacle" } - - { id: 125, cat: TV/Sport, desc: "Films/Sports" } - - { id: 20, cat: Audio/Video, desc: "Films/Concerts, Clips" } - - { id: 9, cat: Movies/Other, desc: "Films/VOSTFR" } + - {id: 118, cat: Movies/BluRay, desc: "Films/2160p/Bluray"} + - {id: 119, cat: Movies/UHD, desc: "Films/2160p/Remux"} + - {id: 107, cat: Movies/UHD, desc: "Films/2160p/x265"} + - {id: 1, cat: Movies/BluRay, desc: "Films/1080p/BluRay"} + - {id: 2, cat: Movies/HD, desc: "Films/1080p/Remux"} + - {id: 100, cat: Movies/HD, desc: "Films/1080p/x265"} + - {id: 4, cat: Movies/HD, desc: "Films/1080p/x264"} + - {id: 5, cat: Movies/HD, desc: "Films/720p/x264"} + - {id: 7, cat: Movies/SD, desc: "Films/SD/x264"} + - {id: 3, cat: Movies/3D, desc: "Films/3D"} + - {id: 6, cat: Movies/SD, desc: "Films/XviD"} + - {id: 8, cat: Movies/DVD, desc: "Films/DVD"} + - {id: 122, cat: Movies/HD, desc: "Films/HDTV"} + - {id: 94, cat: Movies/WEB-DL, desc: "Films/WEBDL"} + - {id: 95, cat: Movies/WEB-DL, desc: "Films/WEBRiP"} + - {id: 12, cat: TV/Documentary, desc: "Films/Documentaire"} + - {id: 31, cat: Movies/Other, desc: "Films/Animation"} + - {id: 33, cat: Movies/Other, desc: "Films/Spectacle"} + - {id: 125, cat: TV/Sport, desc: "Films/Sports"} + - {id: 20, cat: Audio/Video, desc: "Films/Concerts, Clips"} + - {id: 9, cat: Movies/Other, desc: "Films/VOSTFR"} # TV Series / Series TV - - { id: 104, cat: TV/Other, desc: "Series/BluRay" } - - { id: 13, cat: TV, desc: "Series/Pack VF" } - - { id: 15, cat: TV/HD, desc: "Series/HD VF" } - - { id: 14, cat: TV/SD, desc: "Series/SD VF" } - - { id: 98, cat: TV/Other, desc: "Series/Pack VOSTFR" } - - { id: 17, cat: TV/HD, desc: "Series/HD VOSTFR" } - - { id: 16, cat: TV/SD, desc: "Series/SD VOSTFR" } - - { id: 101, cat: TV/Anime, desc: "Series/Packs Anime" } - - { id: 32, cat: TV/Anime, desc: "Series/Animes" } - - { id: 110, cat: TV/Anime, desc: "Series/Anime VOSTFR" } - - { id: 123, cat: TV/Other, desc: "Series/Animation" } - - { id: 109, cat: TV/Documentary, desc: "Series/DOC" } - - { id: 34, cat: TV/Sport, desc: "Series/Sport" } - - { id: 30, cat: TV/Other, desc: "Series/Emission TV" } + - {id: 104, cat: TV/Other, desc: "Series/BluRay"} + - {id: 13, cat: TV, desc: "Series/Pack VF"} + - {id: 15, cat: TV/HD, desc: "Series/HD VF"} + - {id: 14, cat: TV/SD, desc: "Series/SD VF"} + - {id: 98, cat: TV/Other, desc: "Series/Pack VOSTFR"} + - {id: 17, cat: TV/HD, desc: "Series/HD VOSTFR"} + - {id: 16, cat: TV/SD, desc: "Series/SD VOSTFR"} + - {id: 101, cat: TV/Anime, desc: "Series/Packs Anime"} + - {id: 32, cat: TV/Anime, desc: "Series/Animes"} + - {id: 110, cat: TV/Anime, desc: "Series/Anime VOSTFR"} + - {id: 123, cat: TV/Other, desc: "Series/Animation"} + - {id: 109, cat: TV/Documentary, desc: "Series/DOC"} + - {id: 34, cat: TV/Sport, desc: "Series/Sport"} + - {id: 30, cat: TV/Other, desc: "Series/Emission TV"} # Porn / XxX - - { id: 36, cat: XXX, desc: "MISC/XxX/Films" } - - { id: 105, cat: XXX, desc: "MISC/XxX/Séries" } - - { id: 114, cat: XXX, desc: "MISC/XxX/Lesbiennes" } - - { id: 115, cat: XXX, desc: "MISC/XxX/Gays" } - - { id: 113, cat: XXX, desc: "MISC/XxX/Hentai" } - - { id: 120, cat: XXX, desc: "MISC/XxX/Magazines" } + - {id: 36, cat: XXX, desc: "MISC/XxX/Films"} + - {id: 105, cat: XXX, desc: "MISC/XxX/Séries"} + - {id: 114, cat: XXX, desc: "MISC/XxX/Lesbiennes"} + - {id: 115, cat: XXX, desc: "MISC/XxX/Gays"} + - {id: 113, cat: XXX, desc: "MISC/XxX/Hentai"} + - {id: 120, cat: XXX, desc: "MISC/XxX/Magazines"} # Books / Livres - - { id: 24, cat: Books/EBook, desc: "Livres/Romans" } - - { id: 124, cat: Audio/Audiobook, desc: "Livres/Audio Books" } - - { id: 96, cat: Books/Mags, desc: "Livres/Magazines" } - - { id: 99, cat: Books/Other, desc: "Livres/Bandes dessinées" } - - { id: 116, cat: Books/EBook, desc: "Livres/Romans Jeunesse" } - - { id: 102, cat: Books/Comics, desc: "Livres/Comics" } - - { id: 103, cat: Books/Other, desc: "Livres/Mangas" } + - {id: 24, cat: Books/EBook, desc: "Livres/Romans"} + - {id: 124, cat: Audio/Audiobook, desc: "Livres/Audio Books"} + - {id: 96, cat: Books/Mags, desc: "Livres/Magazines"} + - {id: 99, cat: Books/Other, desc: "Livres/Bandes dessinées"} + - {id: 116, cat: Books/EBook, desc: "Livres/Romans Jeunesse"} + - {id: 102, cat: Books/Comics, desc: "Livres/Comics"} + - {id: 103, cat: Books/Other, desc: "Livres/Mangas"} # Softwares / Logiciels - - { id: 25, cat: PC/Games, desc: "Logiciels/Jeux PC" } - - { id: 27, cat: Console/PS3, desc: "Logiciels/Playstation" } - - { id: 111, cat: PC/Mac, desc: "Logiciels/Jeux MAC" } - - { id: 26, cat: Console/XBox 360, desc: "Logiciels/XboX" } - - { id: 112, cat: PC, desc: "Logiciels/Jeux Linux" } - - { id: 28, cat: Console/Wii, desc: "Logiciels/Nintendo" } - - { id: 29, cat: Console/NDS, desc: "Logiciels/NDS" } - - { id: 117, cat: PC, desc: "Logiciels/ROM" } - - { id: 21, cat: PC, desc: "Logiciels/Applis PC" } - - { id: 22, cat: PC/Mac, desc: "Logiciels/Applis Mac" } - - { id: 23, cat: PC/Mobile-Android, desc: "Logiciels/Smartphone" } + - {id: 25, cat: PC/Games, desc: "Logiciels/Jeux PC"} + - {id: 27, cat: Console/PS3, desc: "Logiciels/Playstation"} + - {id: 111, cat: PC/Mac, desc: "Logiciels/Jeux MAC"} + - {id: 26, cat: Console/XBox 360, desc: "Logiciels/XboX"} + - {id: 112, cat: PC, desc: "Logiciels/Jeux Linux"} + - {id: 28, cat: Console/Wii, desc: "Logiciels/Nintendo"} + - {id: 29, cat: Console/NDS, desc: "Logiciels/NDS"} + - {id: 117, cat: PC, desc: "Logiciels/ROM"} + - {id: 21, cat: PC, desc: "Logiciels/Applis PC"} + - {id: 22, cat: PC/Mac, desc: "Logiciels/Applis Mac"} + - {id: 23, cat: PC/Mobile-Android, desc: "Logiciels/Smartphone"} modes: - search: [ q ] - movie-search: [ q, tmdbid ] - tv-search: [ q, season, ep ] - book-search: [ q ] + search: [q] + movie-search: [q, tmdbid] + tv-search: [q, season, ep] + book-search: [q] settings: - - name: apikey + - name: passkey type: text - label: PassKey + label: Passkey - name: info_key type: info label: About your Passkey - default: "Find your PassKey on Xthor > API page." + default: "Find your Passkey on Xthor > API page." - name: freeleech type: checkbox label: Search freeleech only @@ -107,14 +108,14 @@ settings: - name: subfrench type: text label: Replace "VOSTFR/SUBFRENCH" by - default: + default: "" search: paths: # https://api.xthor.tk/?passkey=&search=&category=&freeleech=&tmdbid=&size=&accent=&price=&page= - path: "https://api.xthor.tk/" inputs: - passkey: "{{ .Config.apikey }}" + passkey: "{{ .Config.passkey }}" category: "{{ if .Categories }}{{ range .Categories }}{{.}}+{{end}}{{ else }}{{ end }}" search: "{{ if .Query.TMDBID }}{{ else }}{{ .Keywords }}{{ end }}" tmdbid: "{{ .Query.TMDBID }}" @@ -138,27 +139,27 @@ search: text: "{{ .Result.title_original }}" filters: - name: re_replace - args: [ "(?i)[\\.\\s\\[\\-]multi[\\.\\s\\]\\-]", ".{{ .Config.multilanguage }}." ] + args: ["(?i)[\\.\\s\\[\\-]multi[\\.\\s\\]\\-]", ".{{ .Config.multilanguage }}."] title_multi_out: text: "{{ if .Config.multilanguage }}{{ .Result.title_multi }}{{ else }}{{ .Result.title_original }}{{ end }}" title_vostfr: text: "{{ .Result.title_multi_out }}" filters: - name: re_replace - args: [ "(?i)[\\.\\s\\[\\-]vostfr[\\.\\s\\]\\-]", ".{{ .Config.subfrench }}." ] + args: ["(?i)[\\.\\s\\[\\-]vostfr[\\.\\s\\]\\-]", ".{{ .Config.subfrench }}."] - name: re_replace - args: [ "(?i)[\\.\\s\\[\\-]subfrench[\\.\\s\\]\\-]", ".{{ .Config.subfrench }}." ] + args: ["(?i)[\\.\\s\\[\\-]subfrench[\\.\\s\\]\\-]", ".{{ .Config.subfrench }}."] title: text: "{{ if .Config.subfrench }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_multi_out }}{{ end }}" details: - text: "{{ .Config.sitelink }}/details.php?id={{ .Result.id }}" + text: "{{ .Config.sitelink }}details.php?id={{ .Result.id }}" download: selector: download_link poster: selector: descr filters: - name: regexp - args: ["({{ .Config.sitelink }}/info_images\\/allocine\\/covers\\/film\\/small_\\d+?\\.jpg)"] + args: ["({{ .Config.sitelink }}info_images\\/allocine\\/covers\\/film\\/small_\\d+?\\.jpg)"] tmdbid: selector: tmdb_id files: @@ -179,13 +180,12 @@ search: case: 0: 1 # not free 1: 0 # freeleech - text: 0 uploadvolumefactor: text: 1 minimumseedtime: # 24 hours (as seconds = 1 x 24 x 60 x 60) text: 86400 minimumratio: - # minimum ratio per torrent is 0.8 + # minimum ratio per torrent is 0.8 text: 0.8 # json api