From 36d3f67fdcf79a74fad668cb630b76134805e06d Mon Sep 17 00:00:00 2001 From: Garfield69 Date: Sat, 3 Jun 2023 19:48:01 +1200 Subject: [PATCH] add torrenteros a Spanish private site. resolves #11925 Early stages, still setting up by the looks of it, has just some movies, so cannot tell what the series filename season structure will be like. No Rules or FAQ ATM so defaulting to MR 1.0 Expect changes. --- README.md | 1 + .../Definitions/torrenteros-api.yml | 167 ++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 src/Jackett.Common/Definitions/torrenteros-api.yml diff --git a/README.md b/README.md index b756786e3..dac2d579a 100644 --- a/README.md +++ b/README.md @@ -565,6 +565,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht * TorrentBytes (TBy) * TorrentCCF (TCCF) * TorrentDay (TD) + * Torrenteros (TTR) * TorrentHeaven [![(invite needed)][inviteneeded]](#) * TorrentHR [![(invite needed)][inviteneeded]](#) * Torrenting (TT) diff --git a/src/Jackett.Common/Definitions/torrenteros-api.yml b/src/Jackett.Common/Definitions/torrenteros-api.yml new file mode 100644 index 000000000..2edaad6f8 --- /dev/null +++ b/src/Jackett.Common/Definitions/torrenteros-api.yml @@ -0,0 +1,167 @@ +--- +id: torrenteros-api +name: Torrenteros (API) +description: "Torrenteros (TTR) is a SPANISH site for MOVIES / TV / GENERAL" +language: es-ES +type: private +encoding: UTF-8 +links: + - https://torrenteros.org/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Movies"} + - {id: 2, cat: TV, desc: "TV"} + - {id: 3, cat: Audio, desc: "Music"} + - {id: 4, cat: Console, desc: "Game"} + - {id: 5, cat: PC, desc: "Application"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] + movie-search: [q, imdbid, tmdbid] + music-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 TTR 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 }}" + $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}" + name: "{{ .Keywords }}" + seasonNumber: "{{ .Query.Season }}" + episodeNumber: "{{ .Query.Ep }}" + imdbId: "{{ .Query.IMDBIDShort }}" + tmdbId: "{{ .Query.TMDBID }}" + tvdbId: "{{ .Query.TVDBID }}" + "free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}" + sortField: "{{ .Config.sort }}" + sortDirection: "{{ .Config.type }}" + perPage: 100 + + keywordsfilters: + - name: re_replace + args: ["\\.", " "] + + rows: + selector: data + attribute: attributes + + fields: + category: + selector: category_id + title: + selector: name + details: + selector: details_link + download: + selector: download_link + infohash: + selector: info_hash + poster: + selector: meta.poster + filters: + - name: replace + args: ["https://via.placeholder.com/90x135", ""] + imdbid: + selector: imdb_id + tmdbid: + selector: tmdb_id + tvdbid: + selector: tvdb_id + genre: + selector: meta.genres + filters: + - name: re_replace + args: ["(?i)(Ciencia ficción)", "Ciencia_ficción"] + - name: replace + args: [" & ", "_&_"] + description: + text: "{{ .Result.genre }}" + files: + selector: num_file + seeders: + selector: seeders + leechers: + selector: leechers + grabs: + selector: times_completed + date: + # "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50 + selector: created_at + filters: + - name: append + args: " +00:00" # GMT + - name: dateparse + args: "MM/dd/yyyy HH:mm:ss zzz" + 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 +# no rules or FAQ atm so lets default to a safe MR + minimumratio: + text: 1.0 +# minimumseedtime: +# # 4 days (as seconds = 4 x 24 x 60 x 60) +# text: 345600 +# json UNIT3D 6.5.0 +