From ef152595c503190101684801b07fd63bcdd4fb7d Mon Sep 17 00:00:00 2001 From: Garfield69 Date: Mon, 29 Apr 2024 07:21:25 +1200 Subject: [PATCH] turkseed: a Turkish private site. resolves #7753 --- README.md | 1 + .../Definitions/turkseed-api.yml | 182 ++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 src/Jackett.Common/Definitions/turkseed-api.yml diff --git a/README.md b/README.md index 7f8dbe4bc..09fda8533 100644 --- a/README.md +++ b/README.md @@ -604,6 +604,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht * TranceTraffic * Trellas (Magico) [![(invite needed)][inviteneeded]](#) * TreZzoR + * TurkSeed * TurkTorrent (TT) * TV Chaos UK (TVCUK) * TvRoad diff --git a/src/Jackett.Common/Definitions/turkseed-api.yml b/src/Jackett.Common/Definitions/turkseed-api.yml new file mode 100644 index 000000000..125016f65 --- /dev/null +++ b/src/Jackett.Common/Definitions/turkseed-api.yml @@ -0,0 +1,182 @@ +--- +id: turkseed-api +name: TurkSeed +description: "TurkSeed is a TURKISH Private Torrent Tracker for MOVIES / TV / GENERAL" +language: tr-TR +type: private +encoding: UTF-8 +links: + - https://turkseed.com/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Film"} + - {id: 6, cat: TV, desc: "Dizi Show"} + - {id: 2, cat: Movies, desc: "Yerli Film"} + - {id: 5, cat: TV/Foreign, desc: "Yabanci Dizi"} + - {id: 3, cat: Console, desc: "Oyunlar"} + - {id: 13, cat: TV, desc: "AMAZON"} + - {id: 14, cat: TV, desc: "NETFLİX"} + - {id: 15, cat: TV, desc: "DİSNEY+"} + - {id: 16, cat: TV, desc: "TODD"} + - {id: 17, cat: TV, desc: "TV+"} + - {id: 18, cat: TV, desc: "BLUTV"} + - {id: 19, cat: TV, desc: "EXXEN"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] + movie-search: [q, imdbid, tmdbid] + +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 TurkSeed 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: true + - 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: "Accounts that do not download a 15GB torrent from our site within a month will receive a warning (will be closed)! Accounts that do not upload (seed, share) 20gb on our site within a month will receive a warning (will be closed)! The account that receives three warnings will be automatically closed! No objections are accepted to the deletion of accounts that have not been on our site for six months and have not been active in any way!" + +login: + path: /api/torrents + method: get + error: + - selector: a[href*="/login"] + message: + text: "The API key was not accepted by {{ .Config.sitelink }}." + +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: 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 + 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 False, True + selector: double_upload + case: + False: 1 # normal + True: 2 # double + minimumratio: + text: 0.5 + minimumseedtime: + # 36 hours (as seconds = 36 x 60 x 60) + text: 129600 +# json UNIT3D 8.1.0 \ No newline at end of file