---
id: Bittorrentfiles
name: Bittorrentfiles
description: "Bittorrentfiles is a Private GERMAN tracker"
language: de-DE
type: private
encoding: UTF-8
links:
  - https://bittorrentfiles.me/
legacylinks:
  - https://www.Bittorrentfiles.me/

caps:
  categorymappings:
    # Movie
    - {id: 48, cat: Movies/HD, desc: "Movie 1080p"}
    - {id: 31, cat: Movies/3D, desc: "Movie 3D"}
    - {id: 21, cat: Movies/HD, desc: "Movie 720p"}
    - {id: 28, cat: Movies/SD, desc: "Movie AVI"}
    - {id: 20, cat: Movies/DVD, desc: "Movie DVD-R"}
    - {id: 40, cat: Movies/HD, desc: Movie "h264/x264"}
    - {id: 30, cat: Movies/HD, desc: "Movie HD/BD"}
    - {id: 49, cat: Movies/Foreign, desc: "Movie International"}
    - {id: 78, cat: Movies/UHD, desc: "Movie UHD"}
    - {id: 85, cat: Movies/HD, desc: "Movie x265"}
    # Serien
    - {id: 79, cat: TV/HD, desc: "Staffeln HD"}
    - {id: 56, cat: TV/SD, desc: "Staffeln SD"}
    - {id: 88, cat: TV/UHD, desc: "Staffeln UHD"}
    - {id: 86, cat: TV/UHD, desc: "Folgen UHD"}
    - {id: 54, cat: TV/HD, desc: "Folgen HD"}
    - {id: 80, cat: TV/HD, desc: "Folgen HD/BD"}
    - {id: 7, cat: TV/SD, desc: "Folgen SD"}
    - {id: 55, cat: TV/Foreign, desc: "Folgen International"}
    # Doku
    - {id: 91, cat: TV/Documentary, desc: "Doku UHD"}
    - {id: 64, cat: TV/Documentary, desc: "Doku HD"}
    - {id: 36, cat: TV/Documentary, desc: "Doku SD"}
    - {id: 81, cat: TV/Documentary, desc: "Doku 3D"}
    - {id: 82, cat: TV/Documentary, desc: "Doku Packs"}
    # Spiele
    - {id: 4, cat: PC/Games, desc: "Spiele Windows"}
    - {id: 92, cat: PC/Mac, desc: "Spiele Mac"}
    - {id: 93, cat: PC, desc: "Spiele Linux"}
    - {id: 97, cat: Console/XBox, desc: "Spiele XBOX"}
    - {id: 94, cat: PC/Mobile-Other, desc: "Spiele Mobile"}
    - {id: 95, cat: Console/NDS, desc: "Spiele Nintendo"}
    - {id: 96, cat: Console/PSP, desc: "Spiele Playstation"}
    - {id: 42, cat: Console/Other, desc: "Spiele Andere"}
    # Musik
    - {id: 66, cat: Audio, desc: "Musik Alben"}
    - {id: 75, cat: Audio, desc: "Musik Singles"}
    - {id: 50, cat: Audio, desc: "Musik Charts"}
    - {id: 52, cat: Audio, desc: "Musik Packs"}
    - {id: 53, cat: Audio/Video, desc: "Musik Video"}
    - {id: 61, cat: Audio/Video, desc: "Musik DVD-R"}
    - {id: 83, cat: Audio/Lossless, desc: "Musik Flac"}
    - {id: 68, cat: Audio, desc: "Musik Live"}
    - {id: 6, cat: Audio, desc: "Musik Misc"}
    - {id: 51, cat: Audio, desc: "Musik OST"}
    - {id: 67, cat: Audio, desc: "Musik Sampler"}
    # App
    - {id: 98, cat: PC/0day, desc: "App Windows"}
    - {id: 62, cat: PC/Mac, desc: "App Mac OS"}
    - {id: 63, cat: PC/0day, desc: "App Linux"}
    - {id: 34, cat: PC, desc: "App Andere"}
    # Sport
    - {id: 74, cat: TV/Sport, desc: "Sport HD"}
    - {id: 39, cat: TV/Sport, desc: "Sport SD"}
    # Sonstiges
    - {id: 41, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
    - {id: 33, cat: TV/Anime, desc: "Sonstiges Anime"}
    - {id: 35, cat: Books/EBook, desc: "Sonstiges e-Book-DE"}
    - {id: 90, cat: Books/EBook, desc: "Sonstiges e-Book-INT"}
    - {id: 65, cat: Other, desc: "Sonstiges E-Learning"}
    - {id: 37, cat: PC, desc: "Sonstiges Mobile"}
    - {id: 87, cat: Books/Mags, desc: "Sonstiges E-Paper"}
    - {id: 38, cat: Other, desc: "Sonstiges Kids"}
    - {id: 47, cat: Other, desc: "Sonstiges Line"}
    - {id: 9, cat: Other, desc: "Sonstiges Andere"}
    # XXX
    - {id: 58, cat: XXX/x264, desc: "XXX HD"}
    - {id: 46, cat: XXX, desc: "XXX Hentai"}
    - {id: 59, cat: XXX/Pack, desc: "XXX Pack"}
    - {id: 27, cat: XXX/SD, desc: "XXX SD"}
    - {id: 76, cat: XXX, desc: "XXX Andere"}

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

settings:
  - name: user
    type: text
    label: Username
  - name: pass
    type: password
    label: Password
  - name: freeleech
    type: checkbox
    label: Search freeleech only
    default: false
  - name: sort
    type: select
    label: Sort requested from site
    default: added
    options:
      added: created
      seeds: seeders
      size: size
      name: title
  - name: type
    type: select
    label: Order requested from site
    default: desc
    options:
      desc: desc
      asc: asc
  - name: info_account
    type: info
    label: Account Settings
    default: In order to see the correct date and size in the torrent rows, change the <b>Torrentliste:</b> setting to <b>Modern</b> on your account profile.
  - 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_activity
    type: info
    label: Account Inactivity
    default: "Inactive accounts of users, power users and mega users will be permanently deleted from the database after 125 days! Torrents in your share don't count as activity - only logging in again counts! You can extend this period to 250 days by setting your account to parking. You can find the option to do this under Edit Profile."

login:
  path: signin.php
  method: post
  inputs:
    user: "{{ .Config.user }}"
    pass: "{{ .Config.pass }}"
    returnto: "%2Fbrowse.php"
  error:
    - selector: .error
  test:
    path: index.php
    selector: a[href^="/logout.php?c="]

search:
  path: browse.php
  inputs:
    $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
    search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
    # 0=title, 1=descr, 2=nfo, 3=all, 4=imdb
    search_where: "{{ if .Query.IMDBID }}3{{ else }}0{{ end }}"
    # 0=active, 1=all, 2=onlydead, 4=only upload, 5=doubleup, 6=halfdown, 7=highlight, 8=request
    status: "{{ if .Config.freeleech }}4{{ else }}1{{ end }}"
    orderby: "{{ .Config.sort }}"
    sort: "{{ .Config.type }}"

  rows:
    selector: table.tableinborder > tbody > tr:has(a[href^="/download.php"])

  fields:
    category:
      selector: a[href^="/browse.php?cat="]
      attribute: href
      filters:
        - name: querystring
          args: cat
    title:
      selector: a[href^="details.php"]
      attribute: title
    details:
      selector: a[href^="details.php"]
      attribute: href
    download:
      selector: a[href^="/download.php"]
      attribute: href
    grabs:
      selector: a[title="Snatcher"]
      optional: true
      default: 0
    files:
      selector: a[title="Files"]
      optional: true
      default: 0
    size:
      selector: td:nth-child(6)
    seeders:
      selector: a[title="Seeder"]
      optional: true
      default: 0
    leechers:
      selector: a[title="Leecher"]
      optional: true
      default: 0
      # 2 flavours of dates
    date_day:
      # Heute 13:30:04
      # Gestern 09:10:10
      selector: td:nth-child(10):contains("Heute"),  td:nth-child(10):contains("Gestern")
      optional: true
      filters:
        - name: split
          args: ["b", 0]
        - name: replace
          args: ["Heute", "Today"]
        - name: replace
          args: ["Gestern", "Yesterday"]
        - name: append
          args: "+01:00" # CET
    date_year:
      # 30.02.2018 23:12:50
      selector: td:nth-child(10):contains("."):contains(":")
      optional: true
      filters:
        - name: split
          args: ["b", 0]
        - name: append
          args: "+01:00" # CET
        - name: dateparse
          args: "dd.MM.yyyy HH:mm:ss zzz"
    date:
      text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
    downloadvolumefactor:
      case:
        img[alt="OU"]: 0
        img[alt="D/2"]: 0.5
        img[alt="D / 2"]: 0.5
        "*": 1
    uploadvolumefactor:
      case:
        img[alt="2xU"]: 2
        "*": 1
    minimumratio:
      text: 0.8
    minimumseedtime:
      # 60 hours (as seconds = 60 x 60 x 60)
      text: 216000
# engine n/a
