diff --git a/README.md b/README.md index 890a65bc2..166950622 100644 --- a/README.md +++ b/README.md @@ -548,6 +548,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/ * XtreMeZone (MYXZ) * XtremeFile * YDYPT + * YingK * Zamunda.net * Zelka.org diff --git a/src/Jackett.Common/Definitions/yingk.yml b/src/Jackett.Common/Definitions/yingk.yml new file mode 100644 index 000000000..96f57abec --- /dev/null +++ b/src/Jackett.Common/Definitions/yingk.yml @@ -0,0 +1,178 @@ +--- +id: yingk +name: YingK +description: "YingK is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL" +language: zh-cn +type: private +encoding: UTF-8 +links: + - https://yingk.com/ + +caps: + categorymappings: + - {id: 401, cat: Movies, desc: "Movies/电影"} + - {id: 402, cat: TV, desc: "TV Series/电视剧"} + - {id: 403, cat: TV, desc: "TV Shows/综艺"} + - {id: 405, cat: TV/Anime, desc: "Animations/动漫"} + - {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"} + - {id: 408, cat: Audio, desc: "Music/音乐"} + - {id: 407, cat: TV/Sport, desc: "Sports/体育"} + - {id: 406, cat: Audio/Video, desc: "MusicVideo/MV"} + - {id: 412, cat: Books, desc: "Study/学习"} + - {id: 409, cat: Other, desc: "Misc/其他"} + + modes: + search: [q, imdbid] + tv-search: [q, season, ep, imdbid] + movie-search: [q, imdbid] + music-search: [q] + +settings: + - name: username + type: text + label: Username + - name: password + type: password + label: Password + - name: english_title + type: checkbox + label: "Use English titles instead of Chinese ones (when available)." + default: false + - name: sort + type: select + label: Sort requested from site + default: "4" + options: + "4": "created" + "7": "seeders" + "5": "size" + "1": "title" + - name: type + type: select + label: Order requested from site + default: "desc" + options: + "desc": "desc" + "asc": "asc" + - 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: login.php + method: form + form: form[action="takelogin.php"] + inputs: + logintype: username + username: "{{ .Config.username }}" + password: "{{ .Config.password }}" + logout: "" + thispagewidth: yes + error: + - selector: td.embedded:has(h2:contains("姿势不正确")) + test: + path: index.php + selector: a[href^="userdetails.php?id="] # no logout link anyplace? + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}" + # 0 incldead, 1 active, 2 dead, 3 no rating + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%, 8 all promotions + spstate: 0 + # 0 all, 1 popular, 2 classic, 3 recomended, 4 normal + picktype: 0 + # 0 title, 3 uploader, 4 movie info, 5 movie number, 6 torrent hash, 7 active + search_area: "{{ if .Query.IMDBID }}5{{else}}0{{end}}" + # 0 AND, 1 OR, 2 exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + # supports imdbid searches but does not display imdb links in results. + + rows: + selector: table.torrents > tbody > tr:not(:has(td[class="colhead"])) + after: 1 + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_raw: + selector: a[href^="details.php?id="] + title_raw: + optional: true + selector: a[title][href^="details.php?id="] + attribute: title + # note: final title processing is at the bottom after descrptions is fetched. + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + imdb: + optional: true + selector: a[href*="imdb.com/title/tt"] + attribute: href + seeders: + selector: td:nth-child(3) + leechers: + selector: td:nth-child(4) + filters: + - name: replace + args: ["-1", "0"] + grabs: + selector: td:nth-child(5) + date: + # time type: time elapsed (default) + selector: td:nth-child(9) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" + - name: dateparse + args: "2006-01-02 15:04:05 -07:00" + date: + # time added + selector: td:nth-child(9):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" + - name: dateparse + args: "2006-01-0215:04:05 -07:00" + size: + selector: td:nth-child(10) + downloadvolumefactor: + case: + img.pro_free: 0 + img.pro_free2up: 0 + img.pro_50pctdown: 0.5 + img.pro_50pctdown2up: 0.5 + img.pro_30pctdown: 0.3 + "*": 1 + uploadvolumefactor: + case: + img.pro_50pctdown2up: 2 + img.pro_free2up: 2 + img.pro_2up: 2 + "*": 1 + description: + selector: td:nth-child(2) + remove: a, img + title_english: + remove: a, img, b, span + selector: td:nth-child(2) + title: + text: "{{ if and .Config.english_title .Result.title_english }}{{ .Result.title_english }}{{ else }}{{ .Result.title_raw }}{{ end }}" +# engine n/a (likely based on NexusPHP)