---
id: torrentleech
name: TorrentLeech
description: "TorrentLeech (TL) is a Private Torrent Tracker for 0DAY / GENERAL. not here _ not scene"
language: en-US
type: private
encoding: UTF-8
requestDelay: 4.1 # #13796
links:
  - https://www.torrentleech.org/
  - https://www.torrentleech.cc/
  - https://www.torrentleech.me/
  - https://www.tleechreload.org/
  - https://www.tlgetin.cc/
  - https://rss.torrentleech.cc/
legacylinks:
  - https://v4.torrentleech.org/

caps:
  categorymappings:
    - {id: 8, cat: Movies/SD, desc: "Movies Cam"}
    - {id: 9, cat: Movies/SD, desc: "Movies TS/TC"}
    - {id: 11, cat: Movies/SD, desc: "Movies DVDRip/DVDScreener"}
    - {id: 37, cat: Movies/WEB-DL, desc: "Movies WEBRip"}
    - {id: 43, cat: Movies/HD, desc: "Movies HDRip"}
    - {id: 14, cat: Movies/HD, desc: "Movies BlurayRip"}
    - {id: 12, cat: Movies/DVD, desc: "Movies DVD-R"}
    - {id: 13, cat: Movies/BluRay, desc: "Movies Bluray"}
    - {id: 47, cat: Movies/UHD, desc: "Movies 4K"}
    - {id: 15, cat: Movies, desc: "Movies Boxsets"}
    - {id: 29, cat: Movies/Other, desc: "Documentaries"}

    - {id: 26, cat: TV/SD, desc: "TV Episodes"}
    - {id: 32, cat: TV/HD, desc: "TV Episodes HD"}
    - {id: 27, cat: TV, desc: "TV Boxsets"}

    - {id: 17, cat: PC/Games, desc: "Games PC"}
    - {id: 42, cat: PC/Mac, desc: "Games Mac"}
    - {id: 18, cat: Console/XBox, desc: "Games XBOX"}
    - {id: 19, cat: Console/XBox 360, desc: "Games XBOX360"}
    - {id: 40, cat: Console/XBox One, desc: "Games XBOXONE"}
    - {id: 20, cat: Console/PS3, desc: "Games PS2"}
    - {id: 21, cat: Console/PS3, desc: "Games Mac"}
    - {id: 39, cat: Console/PS4, desc: "Games PS4"}
    - {id: 49, cat: Console/PS4, desc: "Games PS5"}
    - {id: 22, cat: Console/PSP, desc: "Games PSP"}
    - {id: 28, cat: Console/Wii, desc: "Games Wii"}
    - {id: 30, cat: Console/NDS, desc: "Games Nintendo DS"}
    - {id: 48, cat: Console/Other, desc: "Games Nintendo Switch"}

    - {id: 23, cat: PC/ISO, desc: "PC ISO"}
    - {id: 24, cat: PC/Mac, desc: "PC Mac"}
    - {id: 25, cat: PC/Mobile-Other, desc: "PC Mobile"}
    - {id: 33, cat: PC/0day, desc: "PC 0-day"}
    - {id: 38, cat: Other, desc: "Education"}

    - {id: 34, cat: TV/Anime, desc: "TV Anime"}
    - {id: 35, cat: TV, desc: "TV Cartoons"}

    - {id: 45, cat: Books/EBook, desc: "Books EBooks"}
    - {id: 46, cat: Books/Comics, desc: "Books Comics"}

    - {id: 31, cat: Audio, desc: "Audio"}
    - {id: 16, cat: Audio/Video, desc: "Music videos"}

    - {id: 36, cat: Movies/Foreign, desc: "Movies Foreign"}
    - {id: 44, cat: TV/Foreign, desc: "TV Foreign"}

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

settings:
  - name: username
    type: text
    label: Username
  - name: password
    type: password
    label: Password
  - name: alt2fatoken
    type: text
    label: Alt 2FA Token
  - name: info_alt2fatoken
    type: info
    label: "About Alt 2FA Token"
    default: "(Site Profile => Alt 2FA Token) Only fill in the <b>Alt 2FA Token</b> if you have enabled <b>2FA</b> on the TorrentLeech Web Site. Otherwise just leave it empty."
  - name: freeleech
    type: checkbox
    label: Search freeleech only
    default: false
  - name: exclude_scene
    type: checkbox
    label: Exclude SCENE torrents from results
    default: false
  - name: exclude_archives
    type: checkbox
    label: Exclude torrents with the tag RAR from results (does not support IMDBID search)
    default: false
  - name: sort
    type: select
    label: Sort requested from site
    default: added
    options:
      added: created
      seeders: seeders
      size: size
      nameSort: 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 <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
  - name: info_flaresolverr
    type: info_flaresolverr

login:
  path: user/account/login/
  method: form
  form: form[name="login-form"]
  inputs:
    username: "{{ .Config.username }}"
    password: "{{ .Config.password }}"
    alt2FAToken: "{{ .Config.alt2fatoken }}"
  error:
    - selector: p.text-danger
    - selector: .login-container h2:contains("One Time Password")
      message:
        text: "Your TorrentLeech account has 2FA enabled. Please recheck your indexer settings."
    - selector: form[name="login-form"]
      message:
        text: "Login page detected at {{ .Config.sitelink }}."
  test:
    path: /
    selector: a[href="/user/account/logout"]

search:
  paths:
    # "newfilter/2" include 0day and music
    # https://www.torrentleech.org/torrents/browse/list/categories/29,2,26,27,32,44,7,34,35/facets/tags:FREELEECH,nonscene/exact/1/query/friends/orderby/added/order/desc
    - path: "torrents/browse/list{{ if .Categories }}/categories/{{ join .Categories \",\" }}{{ else }}{{ end }}{{ if or .Config.freeleech .Config.exclude_scene }}/facets/tags:{{ else }}{{ end }}{{ if .Config.freeleech }}FREELEECH{{ else }}{{ end }}{{ if and .Config.freeleech .Config.exclude_scene }},{{ else }}{{ end }}{{ if .Config.exclude_scene }}nonscene{{ else }}{{ end }}/{{ if .Query.IMDBID }}imdbID/{{ .Query.IMDBID }}/{{ else }}exact/1/query/{{ .Keywords }}/{{ end }}{{ if .Keywords }}{{ else }}newfilter/2/{{ end }}orderby/{{ .Config.sort }}/order/{{ .Config.type }}"
      response:
        type: json

  keywordsfilters:
    # remove dashes at the beginning of keywords as they exclude search strings (see issue #3096)
    - name: re_replace
      args: ["(^|\\s)-", " "]
    - name: append
      args: "{{ if .Config.exclude_archives }} -tags:rar{{ else }}{{ end }}"
  rows:
    selector: torrentList
    count:
      selector: $.numFound

  fields:
    category:
      selector: categoryID
    title_test: # title can be null #13736
      selector: name
      optional: true
      filters:
        # remove [REQ]/[REQUEST]
        - name: re_replace
          args: ["(?i)^\\[REQ(UEST(ED)?)?\\]\\s*", ""]
    title:
      text: "{{ if .Result.title_test }}{{ .Result.title_test }}{{ else }}TorrentLeech did not provide a title{{ end }}"
    _id:
      selector: fid
    _filename:
      selector: filename
    details:
      text: "/torrent/{{ .Result._id }}"
    download:
      text: "/download/{{ .Result._id }}/{{ .Result._filename }}"
    genre:
      selector: tags
      filters:
        - name: validate
          args: "Action, Adventure, Animation, Biography, Comedy, Crime, Documentary, Drama, Family, Fantasy, Game-Show, History, Horror, Kids, Music, Musical, Mystery, News, Reality-TV, Romance, Sci-Fi, Science-Fiction, Sport, Soap, Talk-Show, Thriller, War, Western"
    description:
      text: "{{ .Result.genre }}"
    imdbid:
      selector: imdbID
    seeders:
      selector: seeders
    leechers:
      selector: leechers
    grabs:
      selector: completed
    date:
      # 2021-10-25 02:18:31
      selector: addedTimestamp
      # auto adjusted by site account profile
      filters:
        - name: dateparse
          args: "yyyy-MM-dd HH:mm:ss"
    size:
      selector: size
    downloadvolumefactor:
      # freeleech #6579 #6624 #7367
      selector: download_multiplier
      case:
        0: 0 # freeleech
        "*": 1 # not free
    uploadvolumefactor:
      text: 1
    minimumratio:
      text: 1.0
    minimumseedtime:
      # 10 days for registered users, less for upgraded users
      # 10 day (as seconds = 7 x 24 x 60 x 60)
      text: 864000
# json engine n/a
