---
id: hebits
name: Hebits
description: "Hebits (HB) is an ISRAELI Private Torrent Tracker for MOVIES / TV / GENERAL."
language: he-IL
type: private
encoding: UTF-8
# Status: https://status.hebits.net/
links:
  - https://hebits.net/

caps:
  categorymappings:
    - {id: 1, cat: Movies, desc: "סרטים (Movies)"}
    - {id: 2, cat: TV, desc: "סדרות (TV)"}
    - {id: 3, cat: TV/Other, desc: "הצגות והופעות (Theater)"}
    - {id: 4, cat: PC/0day, desc: "תוכנות (Apps)"}
    - {id: 5, cat: PC/Games, desc: "משחקים (Games)"}
    - {id: 6, cat: Audio, desc: "מוזיקה (Music)"}
    - {id: 7, cat: Books, desc: "ספרים (Books)"}
    - {id: 8, cat: Movies/Other, desc: "חבילות סרטים (Movies Packs)"}
    - {id: 9, cat: XXX, desc: "פורנו (Porn)"}
    - {id: 10, cat: Other, desc: "שונות (Other)"}

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

settings:
  - name: cookie
    type: text
    label: Cookie
  - name: info_cookie
    type: info_cookie
  - name: freeleech
    type: checkbox
    label: Search freeleech only
    default: false
  - name: sort
    type: select
    label: Sort requested from site
    default: time
    options:
      time: created
      seeders: seeders
      size: size
  - 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: "There is an automatic system for blocking inactive accounts. The system will block any account below Heb Prophet rank without activity for at least 90 days."
  - name: info_results
    type: info
    label: Search results
    default: "If you are getting the error <b>Login failed: Selector \"a[href*=\"/logout.php?auth=\"]\" didn't match</b> then first access the site with your browser and check that you are not being forced to change your password because it has expired after 180 days."

login:
  # using cookie method because login page has a custom captcha with multiple possible answers on individual radio buttons not supported via yaml
  method: cookie
  inputs:
    cookie: "{{ .Config.cookie }}"
  test:
    path: /
    selector: a[href*="/logout.php?auth="]

search:
  paths:
    - path: ajax.php
      response:
        type: json

  inputs:
    searchstr: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }} {{ else }}{{ end }}{{ .Keywords }}"
    order_by: "{{ .Config.sort }}"
    order_way: "{{ .Config.type }}"
    imdbgt: 0
    imdblt: 10
    # 1 freeleech, 2 neutral, 3 50%, 4 2x, 5 3x, 9 75%, 11 only perks, 0 normal
    freetorrent: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
    action: browse
    group_results: 0
    $raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"

  rows:
    selector: response.results
    attribute: torrents
    multiple: true

  fields:
    _id:
      selector: torrentId
    category:
      selector: ..categoryID
    title_notenglish:
      selector: release:not(:contains("a")):not(:contains("e")):not(:contains("i")):not(:contains("o")):not(:contains("u")):not(:contains("y"))
      optional: true
      filters:
        # space out the book language at the end of the title
        # everything within the outermost quotes below is right to left
        - name: re_replace
          args: ["(אנגלית)$", " - אנגלית"] # English
        - name: re_replace
          args: ["(עברית)$", " - עברית"] # Hebrew
    title_english:
      selector: release
      optional: true
      filters:
        - name: append
          args: "א" # catch English only results
        - name: regexp
          args: "(.+?[a-zA-Z0-9\\]\\)\\}])[א-ת].*" # remove Hebrew labels from end of title, account for titles ending in letters, numbers, and brackets
    title:
      text: "{{ if .Result.title_notenglish }}{{ .Result.title_notenglish }}{{ else }}{{ .Result.title_english }}{{ end }}"
    details:
      text: "/torrents.php?torrentid={{ .Result._id }}"
    download:
      text: "/torrents.php?action=download&id={{ .Result._id }}"
    poster:
      selector: ..cover
    imdbid:
      selector: ..catalogue
    files:
      selector: fileCount
    date:
      selector: time
      filters:
        - name: append
          args: " +02:00" # IST
        - name: dateparse
          args: "yyyy-MM-dd HH:mm:ss zzz"
    size:
      selector: size
    grabs:
      selector: snatches
    seeders:
      selector: seeders
    leechers:
      selector: leechers
    description:
      selector: ..tags
    _half:
      selector: isHalfFreeleech
    _free:
      selector: isFreeleech
    _x2:
      selector: isUploadX2
    _x3:
      selector: isUploadX3
    _quarter:
      selector: isQuarterLeech
    _neutral:
      selector: isNeutralLeech
    _personal:
      selector: isPersonalFreeleech
    downloadvolumefactor_special:
      optional: true
      text: "{{ if eq .Result._half \"True\" }}0.5{{ else }}{{ end }}{{ if eq .Result._quarter \"True\" }}0.25{{ else }}{{ end }}{{ if eq .Result._neutral \"True\" }}0{{ else }}{{ end }}{{ if eq .Result._free \"True\" }}0{{ else }}{{ end }}{{ if eq .Result._personal \"True\" }}0{{ else }}{{ end }}"
    downloadvolumefactor:
      text: "{{ if .Result.downloadvolumefactor_special }}{{ .Result.downloadvolumefactor_special }}{{ else }}1{{ end }}"
    uploadvolumefactor_special:
      optional: true
      text: "{{ if eq .Result._x3 \"True\" }}3{{ else }}{{ end }}{{ if eq .Result._x2 \"True\" }}2{{ else }}{{ end }}{{ if eq .Result._neutral \"True\" }}0{{ else }}{{ end }}"
    uploadvolumefactor:
      text: "{{ if .Result.uploadvolumefactor_special }}{{ .Result.uploadvolumefactor_special }}{{ else }}1{{ end }}"
    minimumratio:
      text: 1.0
    minimumseedtime:
      # 7 days (as seconds = 7 x 24 x 60 x 60)
      text: 604800
# JSON Gazelle
