---
id: jptv-api
name: JPTV (API)
description: "JPTV is a JAPANESE Private Torrent Tracker for JAPANESE TV / MOVIES / GENERAL"
language: ja-JP
type: private
encoding: UTF-8
links:
  - https://jptv.club/

caps:
  categorymappings:
    - {id: 1, cat: Movies, desc: "Movies"}
    - {id: 2, cat: TV, desc: "TV Shows"}
    - {id: 6, cat: TV, desc: "TS Firehose"}
    - {id: 7, cat: Movies/Other, desc: "Anime Movies"}
    - {id: 9, cat: TV/Anime, desc: "Anime Series"}
    - {id: 8, cat: Audio, desc: "Audio"}
    - {id: 10, cat: Books, desc: "Book"}

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

settings:
  - name: apikey
    type: text
    label: APIKey
  - name: info_key
    type: info
    label: About your API key
    default: "Find or Generate a new API Token by accessing your <a href=\"https://jptv.club/\" target=\"_blank\">JPTV</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
  - name: freeleech
    type: checkbox
    label: Search freeleech only
    default: false
  - name: sort
    type: select
    label: Sort requested from site
    default: created_at
    options:
      created_at: created
      seeders: seeders
      size: size
      name: title
  - name: type
    type: select
    label: Order requested from site
    default: desc
    options:
      desc: desc
      asc: asc
  - name: info_activity
    type: info
    label: Account Inactivity
    default: "Your membership requires that you stay active at JPTVclub. In order to not be disabled, you are required to login to the site at least once every 90 days. If your account gets disabled, you will recive an email informing you about it, along with instructions on how to get enabled again."

login:
  path: /api/torrents
  method: get
  inputs: {} # TODO: remove in v10
  error:
    - selector: a[href*="/login"]
      message:
        text: "The API key was not accepted by {{ .Config.sitelink }}."

search:
  paths:
    # https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
    # https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
    - path: "/api/torrents/filter"
      response:
        type: json

  headers:
    Authorization: ["Bearer {{ .Config.apikey }}"]

  inputs:
    $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
    name: "{{ .Keywords }}"
    imdb: "{{ .Query.IMDBIDShort }}"
    tmdb: "{{ .Query.TMDBID }}"
    tvdb: "{{ .Query.TVDBID }}"
    freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
    sorting: "{{ .Config.sort }}"
    direction: "{{ .Config.type }}"
    qty: 100

  keywordsfilters:
    - name: re_replace
      args: ["\\.", " "]

  rows:
    selector: data
    attribute: attributes

  fields:
    categorydesc:
      selector: category
    title:
      selector: name
    details:
      selector: details_link
    download:
      selector: download_link
    imdbid:
      selector: imdb_id
    tmdbid:
      selector: tmdb_id
    tvdbid:
      selector: tvdb_id
    files:
      selector: num_file
    seeders:
      selector: seeders
    leechers:
      selector: leechers
    grabs:
      selector: times_completed
    date:
      # "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
      selector: created_at
      filters:
        - name: append
          args: " +00:00" # GMT
        - name: dateparse
          args: "MM/dd/yyyy HH:mm:ss zzz"
    size:
      selector: size
    downloadvolumefactor:
      # api returns 0=false, 1=true
      selector: freeleech
      case:
        0: 1 # not free
        1: 0 # freeleech
    uploadvolumefactor:
      # api returns 0=false, 1=true
      selector: double_upload
      case:
        0: 1 # normal
        1: 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
#    minimumratio:
#      text: 0.4
    minimumseedtime:
      # 7 days (as seconds = 7 x 24 x 60 x 60)
      text: 604800
# json UNIT3D 5.2.0
