From 1d2f7f36d8242287897e6944534fd5c63f39f2b3 Mon Sep 17 00:00:00 2001 From: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com> Date: Sat, 11 Nov 2023 00:37:04 +0000 Subject: [PATCH] kinozal: add separate magnet indexer. resolves #14835 (#14840) --- .../Definitions/kinozal-magnet.yml | 311 ++++++++++++++++++ src/Jackett.Common/Definitions/kinozal.yml | 6 +- 2 files changed, 316 insertions(+), 1 deletion(-) create mode 100644 src/Jackett.Common/Definitions/kinozal-magnet.yml diff --git a/src/Jackett.Common/Definitions/kinozal-magnet.yml b/src/Jackett.Common/Definitions/kinozal-magnet.yml new file mode 100644 index 000000000..73fba1e21 --- /dev/null +++ b/src/Jackett.Common/Definitions/kinozal-magnet.yml @@ -0,0 +1,311 @@ +--- +id: kinozal-magnet +name: Kinozal (M) +description: "Kinozal is a RUSSIAN Semi-Private Torrent Tracker for MOVIES / TV / MUSIC. This indexer uses magnet links." +language: ru-RU +type: semi-private +encoding: windows-1251 +links: + - https://kinozal.tv/ + - https://kinozal.guru/ + - https://kinozal-guru.appspot.com/ +legacylinks: + - https://kinozal-tv.appspot.com/ + - http://kinozal.tv/ + +caps: + categorymappings: + # TV + - {id: 1001, cat: TV, desc: "All TV Shows"} + - {id: 45, cat: TV, desc: "Russian TV Series"} + - {id: 46, cat: TV, desc: "TV Series"} + # Movies + - {id: 1002, cat: Movies, desc: "All Movies"} + - {id: 8, cat: Movies, desc: "Movies - Comedy"} + - {id: 6, cat: Movies, desc: "Movies - Action / War"} + - {id: 15, cat: Movies, desc: "Movies - Thriller / Detective"} + - {id: 17, cat: Movies, desc: "Movies - Drama"} + - {id: 35, cat: Movies, desc: "Movies - Melodrama"} + - {id: 39, cat: Movies, desc: "Movies - Indian"} + - {id: 13, cat: Movies, desc: "Movies - Science Fiction"} + - {id: 14, cat: Movies, desc: "Movies - Fantasy"} + - {id: 24, cat: Movies, desc: "Movies - Horror / Mystery"} + - {id: 11, cat: Movies, desc: "Movies - Adventure"} + - {id: 10, cat: Movies, desc: "Movies - Russian Movies"} + - {id: 9, cat: Movies, desc: "Movies - Historical"} + - {id: 47, cat: Movies, desc: "Movies - Asian"} + - {id: 18, cat: Movies, desc: "Movies - Documentaries"} + - {id: 37, cat: Movies, desc: "Movies - Sport"} + - {id: 12, cat: Movies, desc: "Movies - Kids / Family"} + - {id: 7, cat: Movies, desc: "Movies - Classic"} + - {id: 48, cat: Movies, desc: "Movies - Concerts"} + - {id: 49, cat: Movies, desc: "Movies - Shows / TV Shows"} + - {id: 50, cat: Movies, desc: "Movies - TV Show Mir"} + - {id: 38, cat: Movies, desc: "Movies - Theatre, Opera, Ballet"} + - {id: 16, cat: Movies, desc: "Movies - Erotica"} + # Cartoons + - {id: 1003, cat: TV/Anime, desc: "All Cartoons/Anime"} + - {id: 21, cat: TV/Anime, desc: "Cartoons"} + - {id: 22, cat: TV/Anime, desc: "Cartoons - Russian"} + - {id: 20, cat: TV/Anime, desc: "Cartoons - Anime"} + # Music + - {id: 1004, cat: Audio, desc: "All Music"} + - {id: 3, cat: Audio, desc: "Music"} + - {id: 4, cat: Audio, desc: "Music - Russian"} + - {id: 5, cat: Audio, desc: "Music - Collections"} + - {id: 42, cat: Audio, desc: "Music - Classical"} + # Other + - {id: 1006, cat: TV/Other, desc: "Shows, Concerts, Sports"} + - {id: 2, cat: Audio/Audiobook, desc: "Other - AudioBooks"} + - {id: 1, cat: Audio/Video, desc: "Other - Music Video's"} + - {id: 23, cat: Console, desc: "Other - Games"} + - {id: 32, cat: PC, desc: "Other - Programs"} + - {id: 40, cat: Other, desc: "Other - Design / Graphics"} + - {id: 41, cat: Books, desc: "Other - Library"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + music-search: [q] + book-search: [q] + +settings: + - name: username + type: text + label: Username + - name: password + type: password + label: Password + - name: info_sid + type: info + label: How to get your SID + default: "This is only needed when using *.appspot.com mirrors, otherwise just leave blank. Access the tracker's Раздачи page in browser, and in the address bar you will see something like ?sid=abC1de2F. Those last 8 characters are your SID." + - name: sid + type: text + label: SID + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: striprussian + type: checkbox + label: Strip Russian Letters + default: true + - name: addrussian + type: checkbox + label: Add RUSSIAN to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified. + default: true + - name: sort + type: select + label: Sort requested from site + default: 0 + options: + 0: created + 1: seeders + 3: size + - name: type + type: select + label: Order requested from site + default: 0 + options: + 0: desc + 1: asc + - name: info_magnets + type: info + label: Magnets + default: "This tracker limits the number of torrents a user can download each day without paying. This indexer uses magnet links to bypass that limit, however this doesn't include the passkey, so any download/upload is not recorded. To download with torrents, use Kinozal." + +login: + path: takelogin.php + method: post + inputs: + username: "{{ .Config.username }}" + password: "{{ .Config.password }}" + error: + - selector: div.bx1:has(div.red) + message: + selector: div.bx1 div.red + test: + path: my.php + selector: a[href*="logout.php?hash4u="] + +download: + before: + path: get_srv_details.php + inputs: + action: 2 + id: "{{ .DownloadUri.Query.id }}" + infohash: + usebeforeresponse: true + hash: + selector: li:first-child + filters: + - name: regexp + args: ([A-F|a-f|0-9]{40}) + title: + selector: div.b + filters: + - name: trim + - name: validfilename + +search: + paths: + # http://kinozal.tv/browse.php?s=lucifer+2017&g=0&c=0&v=0&d=0&w=0&t=0&f=0 + - path: browse.php + # required for the appspot domain. + followredirect: true + keywordsfilters: +# - name: diacritics # 8686 +# args: replace + - name: re_replace + args: ["[^a-zA-Zа-яА-Я0-9]+", " "] + - name: re_replace # S01 to 1 + args: ["(?i)\\bS0*(\\d+)\\b", "$1"] + - name: re_replace # S01E01 to 1 1 + args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"] + inputs: + # multi cat is not supported. so defaulting to ALL + c: 0 + s: "{{ .Keywords }}" + # where 0 title, 1 person, 2 genres, 3 regular expression + g: 0 + # format 0 all + v: 0 + # released 0 all + d: 0 + # filter 0 all, 1 today, 2 yesterday, 3 in 3 days, 4 this week, 5 per month, 6-10 size rages, 11 gold, 12 silver + w: "{{ if .Config.freeleech }}11{{ else }}0{{ end }}" + t: "{{ .Config.sort }}" + f: "{{ .Config.type }}" + sid: "{{ if .Config.sid }}{{ .Config.sid }}{{ else }}{{ end }}" + + rows: + selector: table > tbody > tr:has(td.bt) + + fields: + title: + selector: td.nam a[href^="/details.php?"] + filters: + # normalize to SXXEYY format + - name: replace + args: ["Кураж-Бамбей", "kurazh"] + - name: replace + args: ["Кубик в Кубе", "Kubik"] + - name: replace + args: ["Кравец", "Kravec"] + - name: replace + args: ["Пифагор", "Pifagor"] + - name: replace + args: ["Невафильм", "Nevafilm"] + - name: replace + args: ["АП", "AVO"] + - name: replace + args: ["ЛО", "VO"] + - name: replace + args: ["ЛД", "DVO"] + - name: replace + args: ["ЛМ", "MVO"] + - name: replace + args: ["ПО", "VO"] + - name: replace + args: ["ПД", "DVO"] + - name: replace + args: ["ПМ", "MVO"] + - name: replace + args: ["ДБ", "DUB"] + - name: replace + args: ["СТ", "Sub"] + - name: re_replace + args: ["\\((\\d+-*\\d*)\\s+[Сс]езоны?:?\\s+(?:(\\d+-*\\d*)\\s+(?:[Сс]ери[ийя]|выпуски?(?:ов)?)(?:.*\\d+)?)?\\)(.*)\\s+((?:[12][0-9]{3}-?){1,})(.*)", "$3 - S$1E$2 - $4 $5"] + - name: re_replace + args: ["\\((?:(\\d+-*\\d*)\\s+(?:[Сс]ери[ийя]|выпуски?(?:ов)?)(?:.*\\d+)?)?\\)(.*)\\s+((?:[12][0-9]{3}-?){1,})(.*)", "$2 - E$1 - $3 $4"] + - name: re_replace + args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ ((?:[12][0-9]{3}-?){1,}))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$0{{ end }}"] + - name: replace + args: [" / ", " "] + - name: re_replace + args: ["^-\\s+", " "] + - name: re_replace + args: ["\\((\\d+[pi])\\)", "$1"] + - name: re_replace + args: ["(.*)(Blu-Ray\\s*(?:Disc|EUR|CEE)?)\\s*(\\d+[pi])", "$1 BR-DISK $3"] + - name: append + args: "{{ if .Config.addrussian }} - RUSSIAN{{ else }}{{ end }}" + - name: replace + args: ["-Rip", "Rip"] + - name: replace + args: ["WEB-DL", "WEBDL"] + - name: replace + args: ["WEBDLRip", "WEBDL"] + - name: replace + args: ["HDTVRip", "HDTV"] + details: + selector: td.nam a[href^="/details.php?"] + attribute: href + category: + selector: td.bt img + attribute: onclick + filters: + - name: re_replace + args: ["[^\\d+]", ""] + download: + selector: td.nam a[href^="/details.php?"] + attribute: href + filters: + - name: replace + args: ["details", "download"] + size: + selector: td:nth-child(4) + filters: + - name: replace + args: ["ТБ", "TB"] + - name: replace + args: ["ГБ", "GB"] + - name: replace + args: ["МБ", "MB"] + - name: replace + args: ["КБ", "KB"] + seeders: + selector: td:nth-child(5) + leechers: + selector: td:nth-child(6) + # dates come in four flavours: + date_day: + # now + # Today 09:10 + # Yesterday 13:04 + selector: td:nth-child(7):not(:contains(".")) + # auto adjusted by site account profile + optional: true + filters: + - name: replace + args: [" в", ""] + - name: replace + args: ["сейчас", "now"] + - name: replace + args: ["сегодня", "Today"] + - name: replace + args: ["вчера", "Yesterday"] + date_year: + # 24.10.2017 at 23:44 + selector: td:nth-child(7):contains(".") + # auto adjusted by site account profile + optional: true + filters: + - name: replace + args: [" в", ""] + - name: dateparse + args: "dd.MM.yyyy HH:mm" + date: + text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}" + downloadvolumefactor: + case: + a.r1: 0 # gold + a.r2: 0.5 # silver + "*": 1 + uploadvolumefactor: + text: 1 + minimumratio: + text: 1.0 +# engine n/a diff --git a/src/Jackett.Common/Definitions/kinozal.yml b/src/Jackett.Common/Definitions/kinozal.yml index 6bff36cb8..fc04a516d 100644 --- a/src/Jackett.Common/Definitions/kinozal.yml +++ b/src/Jackett.Common/Definitions/kinozal.yml @@ -1,7 +1,7 @@ --- id: kinozal name: Kinozal -description: "Kinozal is a RUSSIAN Semi-Private Torrent Tracker for MOVIES / TV / MUSIC" +description: "Kinozal is a RUSSIAN Semi-Private Torrent Tracker for MOVIES / TV / MUSIC. This indexer uses torrents." language: ru-RU type: semi-private encoding: windows-1251 @@ -111,6 +111,10 @@ settings: options: 0: desc 1: asc + - name: info_torrent + type: info + label: Torrents + default: "This tracker limits the number of torrents a user can download each day without paying. This indexer uses torrent files with the user's passkey, so any download/upload is recorded. If you receive errors when downloading torrent files, you may have reached this limit. To bypass the limit with magnet links, use Kinozal (M)." login: path: takelogin.php