---
id: hydracker-api
replaces:
  - darkiworld-api
name: Hydracker (API)
description: "Hydracker is a FRENCH Semi-Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-FR
type: semi-private
encoding: UTF-8
links:
  - https://hydracker.com/
legacylinks:
  - https://darkiworld16.com/
  - https://darkiworld.com/

caps:
  categorymappings:
    # from https://hydracker.com/api/v1/torznab/api?apikey=YOUR-API-KEY&t=caps
    - {id: 1000, cat: Console, desc: "Games"}
    - {id: 2000, cat: Movies, desc: "Movies"}
    - {id: 2010, cat: Movies/Foreign, desc: "Movies Foreign"}
    - {id: 2020, cat: Movies/Other, desc: "Movies Other"}
    - {id: 2030, cat: Movies/SD, desc: "Movies SD"}
    - {id: 2040, cat: Movies/HD, desc: "Movies HD"}
    - {id: 2045, cat: Movies/UHD, desc: "Movies UHD"}
    - {id: 2050, cat: Movies/BluRay, desc: "Movies BluRay"}
    - {id: 2060, cat: Movies/3D, desc: "Movies 3D"}
    - {id: 3000, cat: Audio, desc: "Music"}
    - {id: 3030, cat: Audio/Audiobook, desc: "Audiobook"}
    - {id: 3040, cat: Audio/Lossless, desc: "Music Lossless"}
    - {id: 4000, cat: PC, desc: "Applications"}
    - {id: 5000, cat: TV, desc: "TV"}
    - {id: 5020, cat: TV/Foreign, desc: "TV Foreign"}
    - {id: 5030, cat: TV/SD, desc: "TV SD"}
    - {id: 5040, cat: TV/HD, desc: "TV HD"}
    - {id: 5045, cat: TV/UHD, desc: "TV UHD"}
    - {id: 5050, cat: TV/WEB-DL, desc: "TV WEB-DL"}
    - {id: 5070, cat: TV/Anime, desc: "Anime"}
    - {id: 5080, cat: TV/Documentary, desc: "Documentary"}
    - {id: 7000, cat: Books, desc: "E-Books"}
    - {id: 8000, cat: Other, desc: "Other"}

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

settings:
  - name: apikey
    type: text
    label: APIKey
  - name: info_key
    type: info
    label: About your API key
    default: "Find or generate your API Key by logging in to <a href=\"https://hydracker.com/account-settings\" target=\"_blank\">Hydracker Account Settings</a>, scrolling down to <b>Torznab / *arr integration</b>, and clicking <b>Generate my Torznab API key</b>."
  - 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 apikey is invalid
  path: api/v1/torznab/api
  method: get
  inputs:
    t: caps
    apikey: "{{ .Config.apikey }}"

search:
  paths:
    - path: api/v1/torznab/api
      response:
        type: xml

  inputs:
    t: "{{ .Query.Type }}"
    apikey: "{{ .Config.apikey }}"
    q: "{{ .Keywords }}"
#    cat: "{{ join .Categories \",\" }}" # cat is not supported
#    season: "{{ .Query.Season }}"
#    ep: "{{ .Query.Episode }}"
    imdbid: "{{ .Query.IMDBIDShort }}"
    tmdbid: "{{ .Query.TMDBID }}"
    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: comments
    download:
      selector: enclosure
      attribute: url
    size:
      selector: size
    seeders:
      selector: "[name=seeders]"
      attribute: value
    leechers:
      selector: "[name=peers]"
      attribute: value
    imdbid:
      selector: "[name=imdbid]"
      attribute: value
    tmdbid:
      selector: "[name=tmdbid]"
      attribute: value
    date:
      # Fri, 10 Apr 2026 06:33:59 +0200
      selector: pubDate
      filters:
        - name: dateparse
          args: "ddd, dd MMM yyyy HH:mm:ss zzz"
    downloadvolumefactor:
      selector: "[name=downloadvolumefactor]"
      attribute: value
    uploadvolumefactor:
      selector: "[name=uploadvolumefactor]"
      attribute: value
    minimumseedtime:
      # 24 hours (as seconds = 24 x 60 x 60)
      text: 86400
# Torznab xml
