---
id: nostradamus
name: Nostradamus
description: "Nostradamus is a ratioless FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-FR
type: private
encoding: UTF-8
links:
  - https://nostradamus.foo/

caps:
  categorymappings:
    # from https://nostradamus.foo/api?t=caps&apikey=YOUR-API-KEY
    - {id: 2000, cat: Movies, desc: "Films"}
    - {id: 2020, cat: Movies, desc: "Films/Film"}
    - {id: 2010, cat: Movies/Other, desc: "Films/Animation"}
    - {id: 2030, cat: TV/Documentary, desc: "Films/Documentaire"}
    - {id: 2040, cat: Audio/Video, desc: "Films/Spectacle"}
    - {id: 2060, cat: Audio/Video, desc: "Films/Concert"}
    - {id: 2510, cat: Movies/Other, desc: "Films/Court-métrage"}
    - {id: 5000, cat: TV, desc: "Séries TV"}
    - {id: 5040, cat: TV, desc: "Séries TV/Série TV"}
    - {id: 5070, cat: TV/Anime, desc: "Séries TV/Animation Série"}
    - {id: 5080, cat: TV, desc: "Séries TV/Emission TV"}
    - {id: 5090, cat: Audio/Video, desc: "Vidéo"}
    - {id: 5060, cat: TV/Sport, desc: "Vidéo/Sport"}
    - {id: 5091, cat: Audio/Video, desc: "Vidéo/Vidéo-clips"}
    - {id: 5092, cat: Audio/Video, desc: "Vidéo/Autre"}
    - {id: 7000, cat: Books, desc: "eBook"}
    - {id: 7010, cat: Audio/Audiobook, desc: "eBook/Audio"}
    - {id: 7030, cat: Books/Comics, desc: "eBook/BDs"}
    - {id: 7040, cat: Books/Comics, desc: "eBook/Comics"}
    - {id: 7020, cat: Books/EBook, desc: "eBook/Livres"}
    - {id: 7050, cat: Books/Comics, desc: "eBook/Mangas"}
    - {id: 7060, cat: Books/Mags, desc: "eBook/Presse"}
    - {id: 3000, cat: Audio, desc: "Audio"}
    - {id: 3030, cat: Audio/Other, desc: "Audio/Karaoke"}
    - {id: 3010, cat: Audio, desc: "Audio/Musique"}
    - {id: 3040, cat: Audio/Other, desc: "Audio/Podcast Radio"}
    - {id: 3050, cat: Audio/Other, desc: "Audio/Samples"}
    - {id: 1000, cat: Console, desc: "Jeu vidéo"}
    - {id: 1099, cat: Console/Other, desc: "Jeu vidéo/Autre"}
    - {id: 1091, cat: PC/Games, desc: "Jeu vidéo/Linux"}
    - {id: 1092, cat: PC/Games, desc: "Jeu vidéo/MacOS"}
    - {id: 1040, cat: PC/Games, desc: "Jeu vidéo/Microsoft"}
    - {id: 1030, cat: Console/NDS, desc: "Jeu vidéo/Nintendo"}
    - {id: 1060, cat: Console/Other, desc: "Jeu vidéo/Smartphone"}
    - {id: 1080, cat: Console/PS4, desc: "Jeu vidéo/Sony"}
    - {id: 1061, cat: Console/Other, desc: "Jeu vidéo/Tablette"}
    - {id: 1090, cat: PC/Games, desc: "Jeu vidéo/Windows"}
    - {id: 8000, cat: Other, desc: "eBook/Littérature & Audio/Autre & Séries TV/Documentaire"}

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

settings:
  - name: apikey
    type: text
    label: API Key
  - name: info_key
    type: info
    label: About your API Key
    default: "You can find your API Key by accessing the <a href=\"https://nostradamus.foo/api-access\" target=\"_blank\">Nostradamus API access</a> page and scrolling down to the <b>API Credentials</b> section."
  - name: multilang
    type: checkbox
    label: Replace MULTi by another language in release name
    default: false
  - name: multilanguage
    type: select
    label: Replace MULTi by this language
    default: FRENCH
    options:
      FRENCH: FRENCH
      MULTi.FRENCH: MULTi.FRENCH
      ENGLISH: ENGLISH
      MULTi.ENGLISH: MULTi.ENGLISH
      VOSTFR: VOSTFR
      MULTi.VOSTFR: MULTi.VOSTFR
  - name: vostfr
    type: checkbox
    label: Replace VOSTFR and SUBFRENCH with ENGLISH
    default: false

login:
  # returns "401 Unauthorized, check your credentials" if passkey is invalid
  path: api
  method: get
  inputs:
    apikey: "{{ .Config.apikey }}"
    t: search
    limit: 1

search:
  paths:
    - path: api
      response:
        type: xml

  inputs:
    apikey: "{{ .Config.apikey }}"
    t: "{{ if .Query.IMDBID }}movie{{ else }}{{ end }}{{ if .Query.TVDBID }}tvsearch{{ else }}{{ end }}{{ if or .Query.TVDBID .Query.IMDBID }}{{ else }}search{{ end }}"
    q: "{{ .Keywords }}"
    cat: "{{ join .Categories \",\" }}"
    season: "{{ .Query.Season }}"
    ep: "{{ .Query.Ep }}"
    imdbid: "{{ .Query.IMDBID }}"
    tvdbid: "{{ .Query.TVDBID }}"
    limit: 100

  keywordsfilters:
    # replace spaces between words with percent wildcard
    - name: re_replace
      args: ["\\W+", "%"]

  rows:
    selector: rss > channel > item

  fields:
    category:
      selector: "[name=category]"
      attribute: value
    title_phase1:
      selector: title
    title_vostfr:
      text: "{{ .Result.title_phase1 }}"
      filters:
        - name: re_replace
          args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
    title_phase2:
      text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
    title_multilang:
      text: "{{ .Result.title_phase2 }}"
      filters:
        - name: re_replace
          args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR|VF2|VFF|VFQ|VOQ|VFI|VOF)))\\b", "{{ .Config.multilanguage }}"]
    title:
      text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
    details:
      selector: link
    download:
      selector: enclosure
      attribute: url
    infohash:
      selector: "[name=infohash]"
      attribute: value
    date:
      # Thu, 15 Jan 2026 16:24:34 +0000
      selector: pubDate
      filters:
        - name: dateparse
          args: "ddd, dd MMM yyyy HH:mm:ss zzz"
    size:
      selector: "[name=size]"
      attribute: value
    imdbid:
      selector: "[name=imdbid]"
      attribute: value
    tmdbid:
      selector: "[name=tmdbid]"
      attribute: value
    seeders:
      selector: "[name=seeders]"
      attribute: value
    leechers:
      selector: "[name=leechers]"
      attribute: value
    grabs:
      selector: "[name=grabs]"
      attribute: value
    downloadvolumefactor:
      text: 0
    uploadvolumefactor:
      text: 1
    minimumseedtime:
      # 3 days (as seconds = 3 x 24 x 60 x 60)
      text: 259200
# torznab xml
