---
  site: btnext
  name: BTNext
  description: "BTNext (BTNT) is a PORTUGUESE Private Torrent Tracker for 0DAY / GENERAL"
  language: pt-pt
  type: private
  encoding: UTF-8
  links:
    - http://tracker.btnext.com/

  caps:
    categorymappings:
      - {id: 86, cat: Other, desc: "Freeleech"}
      - {id: 88, cat: Movies, desc: "Movies"}
      - {id: 89, cat: Console, desc: "Games"}
      - {id: 87, cat: TV, desc: "Series"}
      - {id: 93, cat: Audio, desc: "Musica"}
      - {id: 1, cat: Movies, desc: "Movies"}
      - {id: 70, cat: Movies/3D, desc: "3D"}
      - {id: 71, cat: Movies/Sd, desc: "480p"}
      - {id: 72, cat: Movies/BluRay, desc: "BD-R"}
      - {id: 31, cat: Movies/HD, desc: "BDRIP/BRRip"}
      - {id: 16, cat: Movies/SD, desc: "CAM"}
      - {id: 74, cat: Movies/DVD, desc: "DvD-R"}
      - {id: 17, cat: Movies/HD, desc: "HD"}
      - {id: 91, cat: Movies/Other, desc: "Kids"}
      - {id: 76, cat: Movies, desc: "Packs"}
      - {id: 77, cat: Movies/WEBDL, desc: "WEB-DL"}
      - {id: 14, cat: Movies/SD, desc: "DVDRip/XViD"}
      - {id: 85, cat: Movies/DVD, desc: "Custom-DVDR"}
      - {id: 96, cat: Movies/HD, desc: "4K"}
      - {id: 6, cat: PC, desc: "Applications"}
      - {id: 18, cat: PC/ISO, desc: "PC Applications"}
      - {id: 19, cat: PC/Mac, desc: "Macintosh Applications"}
      - {id: 34, cat: PC/ISO, desc: "Linux Applications"}
      - {id: 7, cat: Audio, desc: "Music"}
      - {id: 20, cat: Audio/Video, desc: "MVideo"}
      - {id: 21, cat: Audio/MP3, desc: "Mp3"}
      - {id: 33, cat: Audio/Other, desc: "Mp4"}
      - {id: 32, cat: Audio/Lossless, desc: "FLAC"}
      - {id: 2, cat: Console, desc: "Games"}
      - {id: 78, cat: PC/Games, desc: "Linux"}
      - {id: 79, cat: PC/Mac, desc: "MacOSX"}
      - {id: 28, cat: Console/NDS, desc: "Nintendo DS"}
      - {id: 27, cat: PC/Games, desc: "PC/Windows"}
      - {id: 80, cat: Console/PS3, desc: "PS2"}
      - {id: 81, cat: Console/PS3, desc: "PS3"}
      - {id: 82, cat: Console/PS4, desc: "PS4"}
      - {id: 83, cat: Console/PSP, desc: "PSP"}
      - {id: 95, cat: Console/PSVita, desc: "PSVITA"}
      - {id: 4, cat: Console/Wii, desc: "Wii"}
      - {id: 26, cat: Console/Xbox360, desc: "XBOX360"}
      - {id: 84, cat: Console/Xbox, desc: "XONE"}
      - {id: 42, cat: TV, desc: "TV Series"}
      - {id: 45, cat: TV/Documentary, desc: "Documentaries"}
      - {id: 46, cat: TV/Sport, desc: "Sports"}
      - {id: 47, cat: TV/HD, desc: "TV-Bluray"}
      - {id: 48, cat: TV/SD, desc: "TV-Dvd-R"}
      - {id: 49, cat: TV/SD, desc: "TV-DVDRiP"}
      - {id: 50, cat: TV, desc: "TV-Packs"}
      - {id: 92, cat: TV/Anime, desc: "TV-Kids"}
      - {id: 52, cat: TV/SD, desc: "TV-SDx264"}
      - {id: 53, cat: TV/WEB-DL, desc: "TV-WEB-DL"}
      - {id: 55, cat: TV/HD, desc: "TV-X264"}
      - {id: 56, cat: TV/SD, desc: "TV-XViD"}
      - {id: 44, cat: TV, desc: "Miscellaneous"}
      - {id: 51, cat: TV/Anime, desc: "Anime"}
      - {id: 54, cat: Audio/Audiobook, desc: "Audiobook"}
      - {id: 57, cat: Books, desc: "E-Books"}
      - {id: 58, cat: Books/Comics, desc: "Comics"}
      - {id: 59, cat: Books, desc: "Educational"}
      - {id: 60, cat: Books, desc: "Magazines/Journals"}
      - {id: 61, cat: Other, desc: "Pics/Wallpapers"}
      - {id: 62, cat: PC/Phone-Android, desc: "Android"}
      - {id: 63, cat: PC/Phone-IOS, desc: "iOS"}
      - {id: 66, cat: PC/Phone-Other, desc: "WindowsPhone"}
      - {id: 90, cat: Other, desc: "GPS"}
      - {id: 68, cat: Other, desc: "Others"}
      - {id: 41, cat: XXX, desc: "XXX"}
      - {id: 64, cat: XXX, desc: "XXX-Magazines"}
      - {id: 65, cat: XXX, desc: "XXX-Movies"}
      - {id: 67, cat: XXX/Packs, desc: "XXX-Packs"}
      - {id: 69, cat: XXX/Imageset, desc: "XXX-Pics/Wallpapers"}

    modes:
      search: [q]
      tv-search: [q, season, ep]

  login:
    path: /?p=home&pid=1
    method: form
    form: form#loginbox_form
    submitpath: /ajax/login.php
    inputs:
      action: "login"
      loginbox_membername: "{{ .Config.username }}"
      loginbox_password: "{{ .Config.password }}"
      loginbox_remember: "true"
    selectorinputs:
      securitytoken:
        selector: "script:contains(\"stKey: \")"
        filters:
          - name: regexp
            args: "stKey: \"(.+?)\","
    error:
      - selector: ":contains(\"-ERROR-\")"
    test:
      path: /?p=torrents&pid=32
      selector: a#logout

  search:
    paths:
      - path: /
    keywordsfilters: 
      - name: re_replace
        args: ["[^a-zA-Z0-9]+", "%25"]
    inputs:
      p: "torrents"
      pid: "32"
      $raw: "{{range .Categories}}cid[]={{.}}&{{end}}"
      keywords: "{{ .Keywords }}"
      search_type: "name"
      searchin: "title"
    error:
      - selector: div.error:not(:contains("Não existem resultados encontrados."))
    rows:
      selector: table#torrents_table_classic > tbody > tr:has(td.torrent_name)
    fields:
      title:
        selector: a[href*="?p=torrents&pid=10&action=details"]
      category:
        selector: div.category_image > a
        attribute: href
        filters:
          - name: querystring
            args: cid
      details:
        selector: a[href*="?p=torrents&pid=10&action=details"]
        attribute: href
      download:
        selector: a[href*="?p=torrents&pid=10&action=download"]
        attribute: href
      size:
        selector: a[rel="torrent_size"]
      seeders:
        selector: a[rel="torrent_seeders"]
      leechers:
        selector: a[rel="torrent_leechers"]
      grabs:
        selector: a[rel="times_completed"]
      banner:
        selector: a[rel="fancybox"]
        optional: true
        attribute: href
      downloadvolumefactor:
        case:
          "img[title=\"FREE!\"]": "0"
          "*": "1"
      uploadvolumefactor:
        case:
          "*": "1"
      date:
        selector: td.torrent_name > abbr.timeago
        optional: true
        attribute: data-time
      date:
        selector: td.torrent_name:not(:has(abbr.timeago))
        optional: true
        remove: span, a, br
        filters:
          - name: replace
            args: ["Enviado ", ""] # Uploaded
          - name: replace
            args: [" por", ""] # by
          - name: replace
            args: ["às ", ""] # at
          - name: replace
            args: ["Hoje", "Today"]
          - name: replace
            args: ["ontem", "Yesterday"]
          - name: replace
            args: ["Segunda", "Monday"]
          - name: replace
            args: ["Terça", "Tuesday"]
          - name: replace
            args: ["Quarta", "Wednesday"]
          - name: replace
            args: ["Quinta", "Thursday"]
          - name: replace
            args: ["Sexta", "Friday"]
          - name: replace
            args: ["Sábado", "Saturday"]
          - name: replace
            args: ["Domingo", "Sunday"]
          - name: dateparse
            args: "02-01-2006 15:04"
