diff --git a/README.md b/README.md index cc68685e7..efd06f4c0 100644 --- a/README.md +++ b/README.md @@ -437,6 +437,7 @@ Prior versions of Jackett are no longer supported. * Locadora * LosslessClub [![(invite needed)][inviteneeded]](#) * LST + * LuckPT [![(invite needed)][inviteneeded]](#) * M-Team TP (MTTP) [![(invite needed)][inviteneeded]](#) * MaDs Revolution * Majomparádé (TurkDepo) diff --git a/src/Jackett.Common/Definitions/luckpt.yml b/src/Jackett.Common/Definitions/luckpt.yml new file mode 100644 index 000000000..a41602dc4 --- /dev/null +++ b/src/Jackett.Common/Definitions/luckpt.yml @@ -0,0 +1,186 @@ +--- +id: luckpt +name: LuckPT +description: "LuckPT is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://pt.luckpt.de/ + +caps: + categorymappings: + - {id: 401, cat: Movies, desc: "电影 / Movies"} + - {id: 402, cat: TV, desc: "电视剧 / TV Series"} + - {id: 405, cat: TV/Anime, desc: "动漫 / Animations"} + - {id: 406, cat: Audio/Video, desc: "演唱会、MV / Music Videos"} + - {id: 408, cat: Audio, desc: "音乐 / Music"} + - {id: 409, cat: Other, desc: "其他 / Other"} + - {id: 410, cat: TV, desc: "综艺 / TV Shows"} + - {id: 411, cat: TV/Documentary, desc: "纪录片 / Documentary"} + - {id: 412, cat: TV/Sport, desc: "体育 / Sports"} + - {id: 413, cat: TV/Other, desc: "短剧 / Playlet"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, doubanid] + movie-search: [q, imdbid, doubanid] + music-search: [q] + +settings: + - name: cookie + type: text + label: Cookie + - name: info_cookie + type: info_cookie + - name: freeleech + type: checkbox + label: Search freeleech only + 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. + - name: info_activity + type: info + label: Account Inactivity + default: "Account retention rules:
  1. If there is no valid traffic within 100 days of registration (participation in the calculation of sharing rate), the account will be blocked
  2. After the level is reduced to \"Peasant\", if the sharing rate is not improved within 30 days, the account will be blocked
  3. Long-term non-login:
" + +login: + # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}" + # 0 incldead, 1 active, 2 dead + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% + spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + # 0 title, 1 descr, 3 uploader, 4 imdburl + search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}" + # 0 AND, 2 exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + notnewword: 1 + + rows: + selector: table.torrents > tbody > tr:has(a[href^="download.php?id="]) + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_default: + selector: a[href^="details.php?id="] + title: + selector: a[title][href^="details.php?id="] + attribute: title + optional: true + default: "{{ .Result.title_default }}" + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + poster: + selector: img[data-src] + attribute: data-src + imdbid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="imdb.com/title/tt"] + attribute: href + doubanid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="movie.douban.com/subject/"] + attribute: href + date_elapsed: + # time type: time elapsed (default) + selector: td.rowfollow:nth-child(4) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + date_added: + # time added + selector: td.rowfollow:nth-child(4):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + date: + text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" + size: + selector: td.rowfollow:nth-child(5) + optional: true + default: 512MB + seeders: + selector: td.rowfollow:nth-child(6) + optional: true + default: 0 + leechers: + selector: td.rowfollow:nth-child(7) + optional: true + default: 0 + grabs: + selector: td.rowfollow:nth-child(8) + optional: true + default: 0 + 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 + minimumratio: + text: 2.0 + minimumseedtime: + # 1 day (as seconds = 24 x 60 x 60) + text: 86400 + description: + selector: td.rowfollow:nth-child(2) + remove: a, b, font, img, span + +# NexusPHP v1.9.6 2025-06-25