From 088bd66f7ceeee33ecb08877add90de055462e29 Mon Sep 17 00:00:00 2001 From: Garfield69 Date: Mon, 30 Dec 2024 10:57:26 +1300 Subject: [PATCH] add samaritano a Brazilian private site. resolves #15786 --- README.md | 1 + src/Jackett.Common/Definitions/samaritano.yml | 196 ++++++++++++++++++ 2 files changed, 197 insertions(+) create mode 100644 src/Jackett.Common/Definitions/samaritano.yml diff --git a/README.md b/README.md index 36be2bee5..b0028ffd4 100644 --- a/README.md +++ b/README.md @@ -532,6 +532,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht * Romanian Metal Torrents (RMT) * RoTorrent * Rousi + * SAMARITANO * SATClubbing * SceneHD [![(invite needed)][inviteneeded]](#) * SceneRush diff --git a/src/Jackett.Common/Definitions/samaritano.yml b/src/Jackett.Common/Definitions/samaritano.yml new file mode 100644 index 000000000..f80a470d2 --- /dev/null +++ b/src/Jackett.Common/Definitions/samaritano.yml @@ -0,0 +1,196 @@ +--- +id: samaritano +name: SAMARITANO (API) +description: "SAMARITANO is a BRAZILIAN Private tracker for MOVIES / TV / GENERAL" +language: pt-BR +type: private +encoding: UTF-8 +links: + - https://samaritano.cc/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Filmes"} + - {id: 2, cat: TV, desc: "Séries"} + - {id: 3, cat: TV/Anime, desc: "Animes"} + - {id: 4, cat: Other, desc: "Cursos"} + - {id: 5, cat: Console, desc: "Games"} + - {id: 6, cat: Books, desc: "Livros"} + - {id: 7, cat: Audio, desc: "HQs"} + - {id: 8, cat: Audio/Audiobook, desc: "AudioBooks"} + - {id: 9, cat: PC, desc: "Programas"} + - {id: 10, cat: Other, desc: "Materiais de Apoio"} + + 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 SAMARITANO account My Settings page and clicking on the API Key tab." + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: single_file_release_use_filename + type: checkbox + label: Use filename as title for single file releases + 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 + - name: info_activity + type: info + label: Account Inactivity + default: "Your account will be considered inactive if you have not logged in to the site for more than 90 days. After 30 days of inactivity (i.e. 30 days without logging in), your account will be removed from the tracker. Please note: The groups that suffer from inactivity are: User and Leech." + +login: + path: /api/torrents + method: get + error: + - selector: a[href*="/login"] + message: + text: "The API key was not accepted by {{ .Config.sitelink }}." + - selector: :root:contains("Account is Banned") + +search: + paths: + # https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x) + # https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476 + - path: "/api/torrents/filter" + response: + type: json + + headers: + Authorization: ["Bearer {{ .Config.apikey }}"] + + 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 + $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_optional: + selector: name + title_filename: + selector: "files[0].name" + optional: true + files: + selector: num_file + title: + text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}" + 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)(Cinema TV)", "Cinema_TV"] + - name: re_replace + args: ["(?i)(Ficção científica)", "Ficção_científica"] + - name: replace + args: [" & ", "_&_"] + description: + text: "{{ .Result.genre }}" + 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 + _featured: + selector: featured + case: + False: "{{ .False }}" + True: "{{ .True }}" + downloadvolumefactor_freeleech: + # 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 + downloadvolumefactor: + text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}" + uploadvolumefactor_double_upload: + # api returns False, True + selector: double_upload + case: + False: 1 # normal + True: 2 # double + uploadvolumefactor: + text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}" +# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio +# minimumratio: +# text: 0.4 + minimumseedtime: + # 7 days (as seconds = 7 x 24 x 60 x 60) + text: 604800 +# json UNIT3D 8.2.0