---
id: torrentz2k
name: Torrentz2k
description: "Torrentz2k is a Public torrent indexer"
language: en-us
type: public
encoding: UTF-8
links:
  - https://torrentz2is.me/
legacylinks:
  - https://torrentz2k.xyz/
  - https://torrentz2k.pw/

caps:
  categorymappings:
    - {id: book, cat: Books, desc: Books}
    - {id: film, cat: Movies, desc: Movies}
    - {id: gamepad, cat: PC/Games, desc: Games}
    - {id: list, cat: Other, desc: Other}
    - {id: close, cat: XXX, desc: XXX}
    - {id: music, cat: Audio, desc: "Music MP3"}
    - {id: sellsy, cat: Audio/Lossless, desc: "Music Lossless"}
    - {id: play-circle, cat: TV, desc: WEBTV}
    - {id: smile-o, cat: TV/Anime, desc: Anime}
    - {id: television, cat: TV, desc: TV}
    - {id: wrench, cat: PC, desc: Apps}

  modes:
    search: [q]
    tv-search: [q, season, ep]
    movie-search: [q]
    music-search: [q]
    book-search: [q]

settings:
  - name: flaresolverr
    type: info
    label: FlareSolverr
    default: This site may use Cloudflare DDoS Protection, therefore Jackett requires <a href="https://github.com/Jackett/Jackett#configuring-flaresolverr" target="_blank">FlareSolver</a> to access it.

search:
  # https://torrentz2is.me/search/
  paths:
    - path: search/
      method: post
    - path: "search/{{ if .Keywords }}{{ .Keywords }}{{ else }}:latest:{{ end }}/category/all/page/2"
      method: post
      inputs:
        page: 2
  inputs:
    q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}:latest:{{ end }}"
    category: all
  keywordsfilters:
    # the site uses % for wildcard
    - name: re_replace
      args: ["[^a-zA-Z0-9]+", "%"]

  rows:
    selector: table > tbody > tr:has(i)
    filters:
      - name: andmatch

  fields:
    category:
      selector: i
      attribute: class
      filters:
        - name: append
          args: " list"
        # extract the second class
        - name: split
          args: [" ", 1]
        # remove fa- prefix
        - name: replace
          args: ["fa-", ""]
    title:
      selector: div.btntitle a
      attribute: title
    details:
      # details page is only accessible via form and post which Cardigann does not support.
      text: "{{ .Config.sitelink }}"
    infohash:
      selector: input[name="id"]
      attribute: value
    date:
      selector: td:nth-child(6)
      filters:
        - name: re_replace
          args: ["(?i)sec", "seconds"]
        - name: re_replace
          args: ["(?i)min", "minutes"]
        - name: re_replace
          args: ["(?i)hr", "hours"]
        - name: re_replace
          args: ["(?i)yr", "years"]
        - name: append
          args: " ago"
        - name: timeago
    _size:
      selector: td:nth-child(5)
    size:
      text: "{{ if .Result._size }}{{ .Result._size }}{{ else }}0 B{{ end }}"
    seeders:
      selector: td:nth-child(3)
    leechers:
      selector: td:nth-child(4)
    downloadvolumefactor:
      text: 0
    uploadvolumefactor:
      text: 1
# engine n/a
