From 665c3db4af5d26c9e9201f791ae6946dbb6bea96 Mon Sep 17 00:00:00 2001 From: Garfield69 Date: Mon, 31 Mar 2025 06:07:39 +1300 Subject: [PATCH] add afun a Chinese private site. resolves #15940 --- README.md | 1 + src/Jackett.Common/Definitions/afun.yml | 202 ++++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 src/Jackett.Common/Definitions/afun.yml diff --git a/README.md b/README.md index adadc409e..d98071243 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,7 @@ Prior versions of Jackett are no longer supported. * ABtorrents (ABT + RNS) * AcrossTheTasman [![(invite needed)][inviteneeded]](#) * Aftershock + * AFUN * AGSVPT (Arctic Global Seed Vault) * Aidoru!Online * Aither diff --git a/src/Jackett.Common/Definitions/afun.yml b/src/Jackett.Common/Definitions/afun.yml new file mode 100644 index 000000000..3e1bc4e75 --- /dev/null +++ b/src/Jackett.Common/Definitions/afun.yml @@ -0,0 +1,202 @@ +--- +id: afun +name: AFUN +description: "AFUN is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://www.ptlover.cc/ + +caps: + categorymappings: + - {id: 407, cat: TV/Sport, desc: "Sports/赛事"} + - {id: 414, cat: TV, desc: "TV Shows/综艺"} + - {id: 408, cat: Audio, desc: "HQ Audio/HQ音频"} + - {id: 409, cat: Other, desc: "Misc/其他"} + - {id: 407, cat: TV/Sport, desc: "TV Sport/体育"} + - {id: 406, cat: Audio/Video, desc: "Music Videos/MV"} + - {id: 403, cat: TV, desc: "TV Talk Shows/脱口秀"} + - {id: 402, cat: TV, desc: "TV Series/电视剧"} + - {id: 405, cat: TV/Anime, desc: "Anime/动画"} + - {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"} + - {id: 401, cat: Movies, desc: "Movies/电影"} + + modes: + search: [q] + 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: 2facode + type: text + label: 2FA code + - name: info_2fa + type: info + label: "About 2FA code" + default: "Only fill in the 2FA code box if you have enabled 2FA on the HDBao Web Site. Otherwise just leave it empty." + - 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: "Cherish your user account. Inactive accounts would be deleted based on the following rules:
  1. Veteran User or above would never be deleted.
  2. Elite User or above would never be deleted if parked (at User CP).
  3. Parked accounts would be deleted if users have not logged in for more than 400 days in a row.
  4. Unparked accounts would be deleted if users have not logged in for more than 150 days in a row.
" + +login: + path: login.php + method: form + form: form[action="takelogin.php"] + captcha: + type: image + selector: img[alt="CAPTCHA"] + input: imagestring + inputs: + secret: "" + username: "{{ .Config.username }}" + password: "{{ .Config.password }}" + two_step_code: "{{ .Config.2facode }}" + logout: "" + securelogin: "" + ssl: yes + trackerssl: yes + error: + - selector: td.embedded:contains("失败") + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + # searching in description causes HTTP 500 so we will not support doubanid searching + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" + # 0: include dead, 1: alive, 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: description, 3: uploader, 4: imdburl + search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}" + # 0: AND, 2: exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + # Support in NexusPHP so bots don't pollute trending searches: + 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: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: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:nth-child(5) + seeders: + selector: td:nth-child(6) + leechers: + selector: td:nth-child(7) + grabs: + selector: td:nth-child(8) + 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, b, font, img, span + minimumratio: + text: 1.0 + minimumseedtime: + # 2 days (as seconds = 2 x 24 x 60 x 60) + text: 172800 +# NexusPHP v1.9.0 2025-02-06