---
id: world-of-tomorrow
name: World-of-Tomorrow
description: "World-of-Tomorrow is a GERMAN Private tracker"
language: de-DE
type: private
encoding: UTF-8
links:
  - https://w-o-t.pro/
legacylinks:
  - https://world-of-tomorrow.eu/
  - https://wotreworked.xyz/

caps:
  categorymappings:
    # Apps
    - {id: 1107, cat: PC/Mac, desc: "MAC"}
    - {id: 1018, cat: PC, desc: "Sonstige"}
    - {id: 1028, cat: PC/0day, desc: "Windows"}
    # Audio
    - {id: 1036, cat: Audio/Audiobook, desc: "Hörbücher"}
    - {id: 1072, cat: Audio, desc: "Musik-Packs"}
    - {id: 1093, cat: Audio/Video, desc: "Musik-Videos"}
    - {id: 1070, cat: Audio/Lossless, desc: "Musik/Flac"}
    - {id: 1014, cat: Audio/MP3, desc: "Musik/MP3"}
    - {id: 1071, cat: Audio, desc: "Soundtracks"}
    - {id: 1110, cat: Audio, desc: "WOTT"}
    # Filme
    - {id: 1049, cat: Movies/HD, desc: "1080p"}
    - {id: 1090, cat: Movies/3D, desc: "3D"}
    - {id: 1048, cat: Movies/HD, desc: "720p"}
    - {id: 1087, cat: TV/Anime, desc: "Anime"}
    - {id: 1047, cat: Movies/BluRay, desc: "BluRay"}
    - {id: 1011, cat: Movies/DVD, desc: "DVD"}
    - {id: 1060, cat: Movies/HD, desc: "HDTV"}
    - {id: 1091, cat: Movies, desc: "Packs"}
    - {id: 1062, cat: Movies/SD, desc: "SD"}
    - {id: 1089, cat: Movies/UHD, desc: "UHD"}
    - {id: 1089, cat: Movies/UHD, desc: "2160p"}
    - {id: 1108, cat: Movies, desc: "WOTT"}
    # Serien
    - {id: 1079, cat: TV/HD, desc: "1080p"}
    - {id: 1095, cat: TV/UHD, desc: "2160p"}
    - {id: 1078, cat: TV/HD, desc: "720p"}
    - {id: 1105, cat: TV/Anime, desc: "Anime"}
    - {id: 1100, cat: TV/HD, desc: "Packs HD"}
    - {id: 1016, cat: TV/SD, desc: "Packs-SD"}
    - {id: 1077, cat: TV/SD, desc: "SD"}
    - {id: 1109, cat: TV, desc: "WOTT"}
    # Sonstiges
    - {id: 1064, cat: TV/Documentary, desc: "Dokus"}
    - {id: 1019, cat: Books/EBook, desc: "Ebooks"}
    - {id: 1111, cat: Books/EBook, desc: "English Section"}
    - {id: 1101, cat: TV, desc: "Kids"}
    - {id: 1096, cat: Other, desc: "Sonstiges"}
    - {id: 1092, cat: Console, desc: "Wimmelbild"}
    - {id: 1088, cat: XXX, desc: "XXX"}
    - {id: 1106, cat: XXX/ImageSet, desc: "XXX Bilder"}
    - {id: 1102, cat: XXX/Other, desc: "XXX HENTAI"}
    # Spiele
    - {id: 1005, cat: Console, desc: "Konsolen"}
    - {id: 1004, cat: PC/Games, desc: "Windows"}
    # Sport
    - {id: 1075, cat: TV/Sport, desc: "Formel 1"}
    - {id: 1074, cat: TV/Sport, desc: "Fussball"}
    - {id: 1073, cat: TV/Sport, desc: "Sport"}
    - {id: 1023, cat: TV/Sport, desc: "Wrestling"}

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

settings:
  - name: username
    type: text
    label: Username
  - name: password
    type: password
    label: Password
  - name: pin
    type: text
    label: Pin
  - name: freeleech
    type: checkbox
    label: Search FreeLeech
    default: false
  - name: onlyupload
    type: checkbox
    label: Search OnlyUpload
    default: false
  - name: info_free
    type: info
    label: About Freeleech and OnlyUpload at World-of-Tomorrow
    default: "<ul><li>FreeLeech are torrents where neither the download or upload is counted.</li><li>OnlyUpload are torrents where download is not counted but upload is. Good for building your Ratio up.</li></ul>"
  - name: sortby
    type: select
    label: Sort requested from site
    default: added
    options:
      added: created
      seeders: seeders
      size: size
      name: title
  - name: typeby
    type: select
    label: Order requested from site
    default: DESC
    options:
      DESC: desc
      ASC: asc
  - name: info_activity
    type: info
    label: Account Inactivity
    default: "All accounts up to platinum users that are inactive for more than 8 weeks will be deleted!"

login:
  path: takelogin.php
  method: post
  inputs:
    username: "{{ .Config.username }}"
    password: "{{ .Config.password }}"
    pin: "{{ .Config.pin }}"
    remember: 1
  error:
    - selector: div#loginStatus
  test:
    path: index.php
    selector: a[href="logout.php"], title:contains("APRILSCHERZ")

search:
  paths:
    # POST https://w-o-t.pro/search_query.php
    # name=&categories[]=1107&maxAge=added&sortBy=added&sortByType=DESC&myTorrents=no&highlight=no&onlyupload=no&freeleech=no&offset=0&limit=10
    - path: search_query.php
      method: post

  inputs:
    name: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
    $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
    # wildcard, partial, prefix, suffix, combined, regex, exact, uploadersu
    searchMethod: wildcard
    maxAge: added
    sortBy: "{{ .Config.sortby }}"
    sortByType: "{{ .Config.typeby }}"
    myTorrents: no
    highlight: no
    onlyupload: "{{ if .Config.onlyupload }}yes{{ else }}no{{ end }}"
    freeleech: "{{ if .Config.freeleech }}yes{{ else }}no{{ end }}"
    offset: 0
    limit: 100

  rows:
    selector: div.sr-card, div.sr-dup-item
    filters:
      - name: andmatch

  fields:
    categorydesc:
      selector: div.sr-badge-cat, div.sr-dup-meta span:nth-child(5)
      remove: span.sr-badge-lang
      filters:
        - name: re_replace
          args: ["(?i)^(Filme|Serien|Musik|Audio|Spiele|Games|Apps|Software|Sonstiges)\\s+", ""]
        - name: re_replace
          args: ["\\s*\\[[^\\]]+\\]\\s*$", ""]
        - name: trim
    title:
      selector: div.sr-title-row a[href^="torrent.php?id="], a.sr-dup-title
    details:
      selector: div.sr-title-row a[href^="torrent.php?id="], a.sr-dup-title
      attribute: href
    download:
      selector: input[data-url^="download.php?torrent="]
      attribute: data-url
    poster:
      selector: div.sr-cover img
      attribute: src
    imdbid:
      selector: a.sr-link-badge[href*="imdb.com"]
      attribute: href
    size:
      selector: span.sr-detail-size, div.sr-dup-meta span:nth-child(1)
    grabs:
      selector: span.sr-detail-dl
      optional: true
    seeders:
      selector: span.sr-detail-seed, div.sr-dup-meta span:nth-child(2)
    leechers:
      selector: span.sr-detail-leech, div.sr-dup-meta span:nth-child(3)
    date:
      selector: span.sr-detail-time, div.sr-dup-meta span:nth-child(4)
      filters:
        - name: re_replace
          args: ["(?i)^\\s*vor\\s+(.+)$", "$1 ago"]
        - name: re_replace
          args: ["(?i)\\bund\\b", ""]
        - name: re_replace
          args: ["(?i)\\bSekunde(n)?\\b", "seconds"]
        - name: re_replace
          args: ["(?i)\\bMinute(n)?\\b", "minutes"]
        - name: re_replace
          args: ["(?i)\\bStunde(n)?\\b", "hours"]
        - name: re_replace
          args: ["(?i)\\bTag(e|en)?\\b", "days"]
        - name: re_replace
          args: ["(?i)\\bWoche(n)?\\b", "weeks"]
        - name: re_replace
          args: ["(?i)\\bMonat(e|en)?\\b", "months"]
        - name: re_replace
          args: ["(?i)\\bJahr(e|en)?\\b", "years"]
        - name: trim
        - name: timeago
    downloadvolumefactor:
      case:
        span.sr-status-onlyupload: 0 # only upload is counted
        "*": 1
    uploadvolumefactor:
      case:
        span.sr-status-freeleech: 0 # nothing is counted
        "*": 1
    minimumratio:
      text: 0.7
    minimumseedtime:
      # 3 days (as seconds = 3 x 24 x 60 x 60)
      text: 259200
# WoT Reworked v9.0.0
