--- id: freefarm name: Free Farm description: "Free Farm (自由农场) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL" language: zh-CN type: private encoding: UTF-8 requestDelay: 2 links: - https://pt.0ff.cc/ caps: categorymappings: - {id: 401, cat: Movies, desc: "Movies|电影", default: true} - {id: 402, cat: TV, desc: "TV Series|电视剧", default: true} - {id: 403, cat: TV/Documentary, desc: "Documentaries|纪录片", default: true} - {id: 404, cat: TV, desc: "TV Shows|综艺", default: true} - {id: 405, cat: TV/Anime, desc: "Animations|动漫", default: true} - {id: 406, cat: Audio/Video, desc: "Music Videos|音乐视频", default: true} - {id: 407, cat: Audio/Lossless, desc: "HD Music|无损音乐", default: true} - {id: 408, cat: TV/Sport, desc: "Sports|体育", default: true} - {id: 428, cat: Other, desc: "Others|其他", default: true} # special - {id: 413, cat: Other, desc: "Education|学习教育", default: false} - {id: 414, cat: Other, desc: "Course|网络教程", default: false} - {id: 415, cat: Books, desc: "book|书籍", default: false} - {id: 416, cat: PC/0day, desc: "Resources|网络资源", default: false} - {id: 417, cat: PC/Games, desc: "Game|游戏", default: false} - {id: 426, cat: Other, desc: "Others|其他", default: false} modes: search: [q] tv-search: [q, season, ep, imdbid, doubanid] movie-search: [q, imdbid, doubanid] music-search: [q] book-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 Free Farm 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 packed (at User CP).
  3. Packed accounts would be deleted if users have not logged in for more than 400 days in a row.
  4. Unpacked accounts would be deleted if users have not logged in for more than 150 days in a row.
  5. Accounts with both uploaded and downloaded amount being 0 would be deleted if users have not logged in for more than 100 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:has(h2:contains("失败")) test: path: index.php selector: a[href="logout.php"] search: paths: - path: torrents.php categories: [401, 402, 403, 404, 405, 406, 407, 408, 428] - path: special.php categories: [413, 414, 415, 416, 417, 426] 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) seeders: selector: td.rowfollow:nth-child(6) leechers: selector: td.rowfollow:nth-child(7) grabs: selector: td.rowfollow: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 minimumseedtime: # special 7 days (as seconds = 7 x 24 x 60 x 60) # normal 3 days (as seconds = 3 x 24 x 60 x 60) case: img[title="H&R"]: 604800 "*": 259200 description_verified: case: span[title="通过"], span[title="通過"], span[title="Allowed"]: "Verified:" span[title="未审"], span[title="未審"], span[title="Not reviewed"]: "Unverified:" span[title="拒绝"], span[title="拒絕"], span[title="Denied"]: "Banned:" description: selector: td:nth-child(2) remove: a, b, font, img, span filters: - name: prepend args: "{{ .Result.description_verified }} " # NexusPHP v1.8.9 2023-09-29