--- id: uploadcx name: upload.cx description: "upload.cx (ULCX) is a Private Torrent Tracker for MOVIES / TV" language: en-US type: private encoding: UTF-8 links: - https://upload.cx/ caps: categorymappings: - {id: 1, cat: Movies, desc: "Movies"} - {id: 2, cat: TV, desc: "TV"} modes: search: [q] tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] movie-search: [q, imdbid, tmdbid] 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 upload.cx account My Settings page and clicking on the API Key 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: "All members of ULCX must engage with the site, through either logging in or navigating upload.cx. Any account that remains inactive for over four months will be deactivated and pruned after an additional four months of deactivation." 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: # if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6 $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}" name: "{{ .Keywords }}" seasonNumber: "{{ .Query.Season }}" episodeNumber: "{{ .Query.Ep }}" imdbId: "{{ .Query.IMDBIDShort }}" tmdbId: "{{ .Query.TMDBID }}" tvdbId: "{{ .Query.TVDBID }}" "free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}" sortField: "{{ .Config.sort }}" sortDirection: "{{ .Config.type }}" perPage: 100 keywordsfilters: - name: re_replace args: ["\\.", " "] rows: selector: data attribute: attributes fields: category: selector: category_id title: selector: name details: selector: details_link download: selector: download_link infohash: selector: info_hash poster: selector: meta.poster filters: - name: replace args: ["https://via.placeholder.com/90x135", ""] imdbid: selector: imdb_id tmdbid: selector: tmdb_id tvdbid: selector: tvdb_id genre: selector: meta.genres filters: - name: re_replace args: ["(?i)^None$", ""] - name: re_replace args: ["(?i)(Science Fiction)", "Science_Fiction"] - name: re_replace args: ["(?i)(TV Movie)", "TV_Movie"] - name: replace args: [" & ", "_&_"] description: text: "{{ .Result.genre }}" 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%, 25%, 50%, 75%, 100% selector: freeleech case: 0%: 1 # not free 25%: 0.75 50%: 0.5 75%: 0.25 100%: 0 # freeleech "*": 0 # catch errors uploadvolumefactor: # api returns False, True selector: double_upload case: False: 1 # normal True: 2 # double # global MR is 0.6 but torrents must be seeded for 2 days regardless of ratio # minimumratio: # text: 0.6 minimumseedtime: # 2 day (as seconds = 2 x 24 x 60 x 60) text: 172800 # json UNIT3D 7.2.5