--- id: keepfriends name: Keep Friends description: "Keep Friends is a CHINESE Private Torrent Tracker for HD MOVIES / TV" language: zh-CN type: private encoding: UTF-8 links: - https://pt.keepfrds.com/ caps: categorymappings: - {id: 401, cat: Movies, desc: "Movies/电影"} - {id: 301, cat: Movies, desc: "Movie Packs/电影(合集)"} - {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"} - {id: 304, cat: TV/Documentary, desc: "Documentary Packs/纪录片(合集)"} - {id: 405, cat: TV/Anime, desc: "Animations/动漫"} - {id: 305, cat: TV/Anime, desc: "Animation Packs/动漫(合集)"} - {id: 402, cat: TV, desc: "TV Series/剧集"} - {id: 302, cat: TV, desc: "TV Serie Packs/剧集(合集)"} - {id: 403, cat: TV, desc: "TV Shows/综艺"} - {id: 303, cat: TV, desc: "TV Show Packs/综艺(合集)"} - {id: 407, cat: TV/Sport, desc: "Sports/体育"} - {id: 307, cat: TV/Sport, desc: "Sport Packs/体育(合集)"} - {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐录影带"} - {id: 306, cat: Audio/Video, desc: "MusicVideo Packs/音乐录影带(合集)"} - {id: 408, cat: Audio, desc: "Music/音乐"} - {id: 308, cat: Audio, desc: "Music Packs/音乐(合集)"} - {id: 409, cat: Other, desc: "Misc/其他"} - {id: 309, cat: Other, desc: "Misc Packs/其他(合集)"} - {id: 300, cat: Other, desc: "Recycle Bin/回收站"} 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 type: info label: How to get the Cookie default: "
  1. Login to this tracker with your browser
  2. Open the DevTools panel by pressing F12
  3. Select the Network tab
  4. Click on the Doc button (Chrome Browser) or HTML button (FireFox)
  5. Refresh the page by pressing F5
  6. Click on the first row entry
  7. Select the Headers tab on the Right panel
  8. Find 'cookie:' in the Request Headers section
  9. Select and Copy the whole cookie string (everything after 'cookie: ') and Paste here.
" - name: freeleech type: checkbox label: Search freeleech only default: false - 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 10: 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: method: cookie inputs: cookie: "{{ .Config.cookie }}" test: path: index.php selector: a[onclick="document.getElementById('logout').submit();"] search: paths: - path: torrents.php inputs: $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" # currently supports only one query id at one time. 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, 5 doubankeywords (not working) 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, 1 OR, 2 exact search_mode: 0 sort: "{{ .Config.sort }}" type: "{{ .Config.type }}" notnewword: 1 # supports imdbid searches but does not display imdb links in results. rows: selector: table.torrents > tbody > tr:has(table.torrentname) fields: category: selector: a[href^="?cat="] attribute: href filters: - name: querystring args: cat title_default: selector: a[href^="details.php?id="] title_raw: selector: a[title][href^="details.php?id="] attribute: title optional: true default: "{{ .Result.title_default }}" # note: final title processing is at the bottom after descriptions is fetched. details: selector: a[href^="details.php?id="] attribute: href download: selector: a[href^="download.php?id="] attribute: href imdbid: selector: a[href*="imdb.com/title/tt"] attribute: href doubanid: selector: a[href*="movie.douban.com/subject/"] attribute: href _staff_edit: selector: a[href^="edit.php?"] attribute: href optional: true date_elapsed: # time type: time elapsed (default) selector: "{{ if .Result._staff_edit }}td:nth-child(5) > span[title]{{ else }}td:nth-child(4) > span[title]{{ end }}" 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: "{{ if .Result._staff_edit }}td:nth-child(5):not(:has(span)){{ else }}td:nth-child(4):not(:has(span)){{ end }}" 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: "{{ if .Result._staff_edit }}td:nth-child(6){{ else }}td:nth-child(5){{ end }}" seeders: selector: "{{ if .Result._staff_edit }}td:nth-child(7){{ else }}td:nth-child(6){{ end }}" leechers: selector: "{{ if .Result._staff_edit }}td:nth-child(8){{ else }}td:nth-child(7){{ end }}" grabs: selector: "{{ if .Result._staff_edit }}td:nth-child(9){{ else }}td:nth-child(8){{ end }}" 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: "{{ if .Result._staff_edit }}td:nth-child(3){{ else }}td:nth-child(2){{ end }}" remove: a, b, font, img, span title_english: selector: table.torrentname > tbody > tr > td.embedded title: text: "{{ if and .Config.english_title .Result.title_english }}{{ .Result.title_english }}{{ else }}{{ .Result.title_raw }}{{ end }}" # NexusPHP Standard v1.5 Beta 4 (custom title search)