--- id: uhdbits name: UHDBits description: "UHDBits is a Private Torrent Tracker for UHD Movies / TV" language: en-US type: private encoding: UTF-8 links: - https://uhdbits.org/ caps: categorymappings: - {id: 1, cat: Movies, desc: Movies} - {id: 2, cat: Audio, desc: Music} - {id: 3, cat: TV, desc: TV} modes: search: [q] tv-search: [q, season, imdbid] movie-search: [q, imdbid] music-search: [q] settings: - name: username type: text label: Username - name: password type: password label: Password - name: 2facode type: text label: 2FA code - name: info_2fa type: info label: "About 2FA code" default: "Only fill in the 2FA code box if you have enabled 2FA on the UHDBits Web Site. Otherwise just leave it empty." - 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 login: path: login.php form: form.auth_form inputs: username: "{{ .Config.username }}" password: "{{ .Config.password }}" two_step: "{{ .Config.2facode }}" keeplogged: 1 error: - selector: .auth_form > .warning test: path: index.php selector: a[href^="logout.php?auth="] search: paths: # https://uhdbits.org/torrents.php?groupname=&filelist=&description=&artistname=&recordlabel=&remastertitle=&remasterrecordlabel=&rating=0&rating1=10&freetorrent=1&searchstr=&taglist=&tags_type=1&order_by=time&order_way=desc&action=advanced&searchsubmit=1 - path: torrents.php inputs: $raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}" searchstr: "{{ .Keywords }}" imdbid: "{{ .Query.IMDBIDShort }}" tags_type: 1 freetorrent: "{{ if .Config.freeleech }}1{{ else }}{{ end }}" order_by: "{{ .Config.sort }}" order_way: "{{ .Config.type }}" action: advanced searchsubmit: 1 keywordsfilters: - name: re_replace args: ["\\.", " "] # if searching for season packs switch S01 to season 1 #10423 - name: re_replace args: ["(?i)\\bS(\\d{1,3})(E\\d+)?$", "season $1"] rows: selector: table#torrent_table > tbody > tr.torrent fields: # note: there are optional extra colums category_id: selector: a[href^="torrents.php?filter_cat"] attribute: href filters: - name: regexp args: "\\[(\\d+)\\]" category: text: "{{ .Result.category_id }}" download: selector: a[href^="torrents.php?action=download&id="] attribute: href filters: - name: replace args: ["\t", " "] details: selector: a.torrent_name attribute: href filters: - name: replace args: ["\t", " "] - name: regexp args: (.*)#torrent\d+$ size: selector: td[class="number_column nobr"] grabs: selector: td[class="number_column nobr"] ~ td files: selector: td:nth-child(3) seeders: selector: td[class="number_column nobr"] ~ td ~ td leechers: selector: td[class="number_column nobr"] ~ td ~ td ~ td date: selector: td:nth-child(5) > span[title] attribute: title filters: - name: replace args: [",", ""] - name: append args: " +07:00" # ICT - name: dateparse args: "MMM dd yyyy HH:mm zzz" downloadvolumefactor: case: "strong.blink_me:contains(\"Free\")": 0 "strong.blink_me:contains(\"50\")": 0.5 "strong.blink_me:contains(\"25\")": 0.75 "strong.blink_me:contains(\"75\")": 0.25 "*": 1 uploadvolumefactor: case: "strong.blink_me:contains(\"2x\")": 2 "*": 1 minimumratio: text: 0.6 _release_info: selector: div.torrent_info remove: .torrent_label.red, .torrent_label.blink_me, .torrent_label:contains("User"), .torrent_label:contains("ViE"), .torrent_label:contains("Exclusive") filters: - name: re_replace args: ["[\\s\\/]+$", ""] - name: replace args: [" / ", " "] - name: re_replace args: ["\\s+([\\w@\\.\\[\\]\\$\\-\\!\\u2122]+)$", " -$1"] - name: re_replace args: ["\\bEncode\\b", "Blu-Ray"] - name: re_replace args: ["\\bBlu-ray\\b", "BR-Disk"] - name: re_replace args: ["\\bRemux\\b", "Blu-Ray Remux"] - name: re_replace args: ["\\s+", " "] _release_info_music: selector: div.torrent_info remove: .torrent_label.red, .torrent_label.blink_me filters: - name: re_replace args: ["[\\s\\/]+$", ""] - name: replace args: [" / ", " "] - name: re_replace args: ["\\s+", " "] title: selector: div.group_info remove: span, div.tags, div.torrent_info filters: - name: re_replace args: ["(?i)\\bSeason (\\d+)\\b", "S$1"] - name: trim - name: append args: " {{ if eq .Result.category_id \"2\" }}{{ .Result._release_info_music }}{{ else }}{{ .Result._release_info }}{{ end }}" # Gazelle