diff --git a/build.sh b/build.sh index d351b58..feca662 100755 --- a/build.sh +++ b/build.sh @@ -2,5 +2,8 @@ docker build -f radarr.Dockerfile -t darkalex17/radarr-mock:latest . docker push darkalex17/radarr-mock:latest +docker build -f sonarr.Dockerfile -t darkalex17/sonarr-mock:latest . +docker push darkalex17/sonarr-mock:latest + docker build -f prowlarr.Dockerfile -t darkalex17/prowlarr-mock:latest . docker push darkalex17/prowlarr-mock:latest diff --git a/docker-compose.yml b/docker-compose.yml index e34fa1b..b4568d5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,17 +2,17 @@ services: radarr: image: darkalex17/radarr-mock:latest - container_name: radarr + container_name: radarr-mock restart: unless-stopped sonarr: image: darkalex17/sonarr-mock:latest - container_name: sonarr + container_name: sonarr-mock restart: unless-stopped prowlarr: image: darkalex17/prowlarr-mock:latest - container_name: prowlarr + container_name: prowlarr-mock restart: unless-stopped managarr: diff --git a/mock-htpc/managarr/config.yml b/mock-htpc/managarr/config.yml index b8d3d2d..f6ec4dd 100644 --- a/mock-htpc/managarr/config.yml +++ b/mock-htpc/managarr/config.yml @@ -1,11 +1,11 @@ --- radarr: - name: Movies - host: radarr + host: radarr-mock port: 7878 api_token: 2374332474216e6720407021206b6579 sonarr: - name: TV Shows - host: sonarr + host: sonarr-mock port: 8989 api_token: 08717304eb94465f81c5129bb46cc2f9 diff --git a/mock-htpc/prowlarr/Backups/scheduled/prowlarr_backup_v1.27.0.4852_2025.11.20_17.24.18.zip b/mock-htpc/prowlarr/Backups/scheduled/prowlarr_backup_v1.27.0.4852_2025.11.20_17.24.18.zip new file mode 100644 index 0000000..fa41822 Binary files /dev/null and b/mock-htpc/prowlarr/Backups/scheduled/prowlarr_backup_v1.27.0.4852_2025.11.20_17.24.18.zip differ diff --git a/mock-htpc/prowlarr/Definitions/0magnet.yml b/mock-htpc/prowlarr/Definitions/0magnet.yml index 1e6be3c..9022436 100644 --- a/mock-htpc/prowlarr/Definitions/0magnet.yml +++ b/mock-htpc/prowlarr/Definitions/0magnet.yml @@ -6,12 +6,12 @@ language: en-US type: public encoding: UTF-8 links: - - https://0magnet.co/ - https://13mag.net/ - https://16mag.net/ legacylinks: - https://0magnet.com/ - https://9mag.net/ + - https://0magnet.co/ caps: categories: @@ -42,7 +42,7 @@ search: paths: - path: search inputs: - q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}" + q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}.{{ end }}" rows: selector: table > tbody > tr:has(td) diff --git a/mock-htpc/prowlarr/Definitions/1337x.yml b/mock-htpc/prowlarr/Definitions/1337x.yml index 800aa91..38c1591 100644 --- a/mock-htpc/prowlarr/Definitions/1337x.yml +++ b/mock-htpc/prowlarr/Definitions/1337x.yml @@ -12,14 +12,7 @@ links: - https://1337x.st/ - https://x1337x.ws/ - https://x1337x.eu/ - - https://x1337x.se/ - https://x1337x.cc/ - - https://1337x.unblockninja.com/ - - https://1337x.ninjaproxy1.com/ - - https://1337x.proxyninja.org/ - - https://1337x.proxyninja.net/ - - https://1337x.torrentbay.st/ - - https://1337x.torrentsbay.org/ legacylinks: - https://1337x.is/ - https://1337x.gd/ @@ -27,6 +20,13 @@ legacylinks: - https://1337x.abcproxy.org/ - https://1337x.so/ - https://1337x.unblockit.download/ + - https://1337x.unblockninja.com/ # keyword search not working + - https://1337x.ninjaproxy1.com/ # keyword search not working + - https://1337x.proxyninja.org/ # keyword search not working + - https://1337x.proxyninja.net/ # keyword search not working + - https://1337x.torrentbay.st/ # keyword search not working + - https://1337x.torrentsbay.org/ # keyword search not working + - https://x1337x.se/ caps: categorymappings: @@ -120,6 +120,13 @@ caps: allowrawsearch: true settings: + - name: uploader + type: text + label: Filter by Uploader + - name: info_uploader + type: info + label: About filtering by Uploader + default: "You can filter by Uploader by entering a Case Sensitive username, or leave empty to get all results.
Note: this is the username of the Uploader and not the Groupname that often show up at the end of 1337x titles, eg -GalaxyRG." - name: info_flaresolverr type: info_flaresolverr - name: downloadlink @@ -177,7 +184,7 @@ search: args: ["\\bS(20\\d{2})\\b", "$1"] rows: - selector: tr:has(a[href^="/torrent/"]) + selector: "tr:has(a[href^=\"/torrent/\"]){{ if .Config.uploader }}:has(td[class^=\"coll-5\"]:contains({{ .Config.uploader }})){{ else }}{{ end }}" fields: title_default: @@ -273,6 +280,10 @@ search: selector: td[class^="coll-2"] leechers: selector: td[class^="coll-3"] + _username: + selector: td[class^="coll-5"] + description: + text: "Uploader: {{ .Result._username }}" downloadvolumefactor: text: 0 uploadvolumefactor: diff --git a/mock-htpc/prowlarr/Definitions/13city.yml b/mock-htpc/prowlarr/Definitions/13city.yml new file mode 100644 index 0000000..fb5f2c6 --- /dev/null +++ b/mock-htpc/prowlarr/Definitions/13city.yml @@ -0,0 +1,185 @@ +--- +id: 13city +name: 13City +description: "13City is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://13city.org/ + +caps: + categorymappings: + - {id: 401, cat: Movies, desc: "电影/Movies"} + - {id: 402, cat: TV, desc: "电视剧/TVSeries"} + - {id: 403, cat: TV, desc: "综艺/TV Shows"} + - {id: 405, cat: TV/Anime, desc: "动漫/Animations"} + - {id: 406, cat: Audio/Video, desc: "演唱会、MV/Music Videos"} + - {id: 408, cat: Audio, desc: "音乐/Music"} + - {id: 409, cat: Books/EBook, desc: "电子书/E-book"} + - {id: 409, cat: Audio/Audiobook, desc: "有声读物/A-book"} + - {id: 413, cat: TV/Documentary, desc: "纪录片/Documentary"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid, doubanid] + movie-search: [q, imdbid, doubanid] + 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: 4 + options: + 4: created + 7: seeders + 5: size + 1: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrents per page: setting to 100 on your account profile. + - name: info_activity + type: info + label: Account Inactivity + default: "Account retention rules:
  1. If there is no valid traffic within 7 days of registration (participation in the calculation of sharing rate), the account will be blocked
  2. After the level is reduced to \"Peasant\", if the sharing rate is not improved within 7 days, the account will be blocked
  3. Long-term non-login:
" + +login: + # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}" + # 0 incldead, 1 active, 2 dead + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% + spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + # 0 title, 1 descr, 3 uploader, 4 imdburl + search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}" + # 0 AND, 2 exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + notnewword: 1 + + rows: + selector: table.torrents > tbody > tr:has(a[href^="download.php?id="]) + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_default: + selector: a[href^="details.php?id="] + title: + selector: a[title][href^="details.php?id="] + attribute: title + optional: true + default: "{{ .Result.title_default }}" + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + poster: + selector: img[data-src] + attribute: data-src + imdbid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="imdb.com/title/tt"] + attribute: href + doubanid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="movie.douban.com/subject/"] + attribute: href + date_elapsed: + # time type: time elapsed (default) + selector: td.rowfollow:nth-child(4) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + date_added: + # time added + selector: td.rowfollow:nth-child(4):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + date: + text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" + size: + selector: td.rowfollow:nth-child(5) + optional: true + default: 512MB + seeders: + selector: td.rowfollow:nth-child(6) + optional: true + default: 0 + leechers: + selector: td.rowfollow:nth-child(7) + optional: true + default: 0 + grabs: + selector: td.rowfollow:nth-child(8) + optional: true + default: 0 + downloadvolumefactor: + case: + img.pro_free: 0 + img.pro_free2up: 0 + img.pro_50pctdown: 0.5 + img.pro_50pctdown2up: 0.5 + img.pro_30pctdown: 0.3 + "*": 1 + uploadvolumefactor: + case: + img.pro_50pctdown2up: 2 + img.pro_free2up: 2 + img.pro_2up: 2 + "*": 1 + minimumratio: + text: 2.0 + minimumseedtime: + # 1 day (as seconds = 24 x 60 x 60) + text: 86400 + description: + selector: td.rowfollow:nth-child(2) + remove: a, b, font, img, span +# NexusPHP v1.9.10 2025-10-30 diff --git a/mock-htpc/prowlarr/Definitions/1ptbar.yml b/mock-htpc/prowlarr/Definitions/1ptbar.yml index 3bcddab..9141ad9 100644 --- a/mock-htpc/prowlarr/Definitions/1ptbar.yml +++ b/mock-htpc/prowlarr/Definitions/1ptbar.yml @@ -5,23 +5,41 @@ description: "1ptbar is a CHINESE Private Torrent Tracker for MOVIES / TV / E-LE language: zh-CN type: private encoding: UTF-8 +requestDelay: 2 links: - https://1ptba.com/ caps: + # dont forget to update the path categories in the search block categorymappings: - - {id: 401, cat: Movies, desc: "Movie(電影)"} - - {id: 402, cat: TV, desc: "TV Series(電視影劇)"} - - {id: 403, cat: TV, desc: "TV Shows(電視綜藝)"} - - {id: 404, cat: TV/Documentary, desc: "Documentaries(紀錄教育)"} - - {id: 405, cat: TV/Anime, desc: "Animations(卡通動漫)"} - - {id: 406, cat: Audio/Video, desc: "Music Videos(音樂短片/演唱會)"} - - {id: 407, cat: TV/Sport, desc: "Sports(體育賽事)"} - - {id: 408, cat: Audio, desc: "HQ Audio(高品质音频)"} - - {id: 410, cat: PC/0day, desc: "Software(軟體)"} - - {id: 411, cat: PC/Games, desc: "Games(電子遊戲)"} - - {id: 412, cat: Books/EBook, desc: "eBook(電子書)"} - - {id: 409, cat: Other, desc: "Misc(其他)"} + - {id: 401, cat: Movies, desc: "Movie(電影)", default: true} + - {id: 402, cat: TV, desc: "TV Series(電視影劇)", default: true} + - {id: 403, cat: TV, desc: "TV Shows(電視綜藝)", default: true} + - {id: 404, cat: TV/Documentary, desc: "Documentaries(紀錄教育)", default: true} + - {id: 405, cat: TV/Anime, desc: "Animations(卡通動漫)", default: true} + - {id: 406, cat: Audio/Video, desc: "Music Videos(音樂短片/演唱會)", default: true} + - {id: 407, cat: TV/Sport, desc: "Sports(體育賽事)", default: true} + - {id: 408, cat: Audio, desc: "HQ Audio(高品质音频)", default: true} + - {id: 410, cat: PC/0day, desc: "Software(軟體)", default: true} + - {id: 411, cat: PC/Games, desc: "Games(電子遊戲)", default: true} + - {id: 412, cat: Books/EBook, desc: "eBook(電子書)", default: true} + - {id: 409, cat: Other, desc: "Misc(其他)", default: true} + - {id: 610, cat: XXX/x264, desc: "AV(有碼)/HD Censored", default: false} + - {id: 611, cat: XXX/x264, desc: "AV(無碼)/HD Uncensored", default: false} + - {id: 612, cat: XXX/SD, desc: "AV(有碼)/SD Censored", default: false} + - {id: 613, cat: XXX/SD, desc: "AV(無碼)/SD Uncensored", default: false} + - {id: 614, cat: XXX/DVD, desc: "AV(無碼)/DVDiSo Uncensored", default: false} + - {id: 615, cat: XXX/DVD, desc: "AV(有碼)/DVDiSo Censored", default: false} + - {id: 616, cat: XXX/UHD, desc: "AV(有碼)/Blu-Ray Censored", default: false} + - {id: 617, cat: XXX/UHD, desc: "AV(無碼)/Blu-Ray Uncensored", default: false} + - {id: 618, cat: XXX/Pack, desc: "AV(網站)/0Day", default: false} + - {id: 619, cat: XXX/Pack, desc: "IV(寫真影集)/Video Collection", default: false} + - {id: 620, cat: XXX/ImageSet, desc: "IV(寫真圖集)/Picture Collection", default: false} + - {id: 621, cat: XXX/Other, desc: "H-Game(遊戲)", default: false} + - {id: 622, cat: XXX/Other, desc: "H-Anime(動畫)", default: false} + - {id: 623, cat: XXX/Other, desc: "H-Comic(漫畫)", default: false} + - {id: 624, cat: XXX/Other, desc: "Adult film(成人電影)", default: false} + - {id: 625, cat: XXX/Other, desc: "AV(Gay)/HD", default: false} modes: search: [q] @@ -74,6 +92,10 @@ settings: type: info label: Account Inactivity default: "Cherish your user account. Inactive accounts would be deleted based on the following rules:
  1. Veteran User or above would never be deleted.
  2. Elite User or above would never be deleted if parked (at User CP).
  3. Parked accounts would be deleted if users have not logged in for more than 400 days in a row.
  4. Unparked accounts would be deleted if users have not logged in for more than 150 days in a row.
  5. Accounts with both uploaded and downloaded amount being 0 would be deleted if users have not logged in for more than 100 days in a row.
" + - name: info_special + type: info + label: Special Categories + default: "Only Power User or above can view Special section. Searching for XXX categories by users below this class will result in search errors." login: path: login.php @@ -101,6 +123,9 @@ login: search: paths: - path: torrents.php + categories: [401, 402, 403, 404, 405, 406, 407, 408, 410, 411, 412, 409] + - path: special.php + categories: [610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625] inputs: $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}" @@ -196,4 +221,4 @@ search: description: selector: td:nth-child(2) remove: a, b, font, img, span -# NexusPHP v1.8.13 2024-07-23 +# NexusPHP v1.9.9 2025-10-02 diff --git a/mock-htpc/prowlarr/Definitions/3changtrai.yml b/mock-htpc/prowlarr/Definitions/3changtrai.yml index b1c9ec1..92f2442 100644 --- a/mock-htpc/prowlarr/Definitions/3changtrai.yml +++ b/mock-htpc/prowlarr/Definitions/3changtrai.yml @@ -18,9 +18,7 @@ caps: - {id: 406, cat: Audio/Video, desc: "Music Videos"} - {id: 407, cat: TV/Sport, desc: "Sports"} - {id: 408, cat: Audio, desc: "HQ Audio"} - - {id: 410, cat: PC, desc: "Software"} - - {id: 411, cat: Books, desc: "Documents"} - - {id: 412, cat: PC/Games, desc: "Games"} + - {id: 409, cat: Other, desc: "Misc"} modes: search: [q] @@ -30,12 +28,11 @@ caps: book-search: [q] settings: - - name: username + - name: cookie type: text - label: Username - - name: password - type: password - label: Password + label: Cookie + - name: info_cookie + type: info_cookie - name: freeleech type: checkbox label: Search freeleech only @@ -68,23 +65,10 @@ settings: default: "Cherish your account. Inactive accounts will be deleted based on the following provisions:
  1. Nexus Master or later will not be deleted account.
  2. Veteran User or higher will not be deleted if temporarily locked (at User Settings).
  3. Temporarily locked accounts will be deleted if not logged in within 90 days.
  4. Accounts that are not temporarily locked will be deleted if they do not log in within 60 days.
  5. Accounts with no storage for uploads and downloads will be deleted if they do not log in within 30 days or have registered within 14 days.
" login: - path: login.php - method: form - form: form[action="takelogin.php"] - captcha: - type: image - selector: img[alt="CAPTCHA"] - input: imagestring + # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php + method: cookie inputs: - username: "{{ .Config.username }}" - password: "{{ .Config.password }}" - logout: "" - securelogin: "" - ssl: yes - trackerssl: yes - error: - - selector: td.embedded:has(h2:contains("Đăng nhập thất bại!")) # Login failed! - - selector: td.embedded:has(h2:contains("Thất bại")) # Failure (captcha) + cookie: "{{ .Config.cookie }}" test: path: index.php selector: a[href="logout.php"] @@ -101,7 +85,7 @@ search: spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" # 0 title, 1 descr, 3 uploader, 4 imdburl search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}" - # 0 AND, 1 OR, 2 exact + # 0 AND, 2 exact search_mode: 0 sort: "{{ .Config.sort }}" type: "{{ .Config.type }}" @@ -112,23 +96,23 @@ search: fields: category: - selector: a[href^="?cat="] + selector: a[href*="?cat="] attribute: href filters: - name: querystring args: cat title_default: - selector: a[href^="details.php?id="] + selector: a[href*="details.php?id="] title: - selector: a[title][href^="details.php?id="] + selector: a[title][href*="details.php?id="] attribute: title optional: true default: "{{ .Result.title_default }}" details: - selector: a[href^="details.php?id="] + selector: a[href*="details.php?id="] attribute: href download: - selector: a[href^="download.php?id="] + selector: a[href*="download.php?id="] attribute: href poster: selector: img[data-src] @@ -138,7 +122,7 @@ search: attribute: href date_elapsed: # time type: time elapsed (default) - selector: td.rowfollow:nth-child(5) > span[title] + selector: td.rowfollow:nth-child(4) > span[title] attribute: title optional: true filters: @@ -148,7 +132,7 @@ search: args: "yyyy-MM-dd HH:mm:ss zzz" date_added: # time added - selector: td.rowfollow:nth-child(5):not(:has(span)) + selector: td.rowfollow:nth-child(4):not(:has(span)) optional: true filters: - name: append @@ -158,13 +142,13 @@ search: date: text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" size: - selector: td.rowfollow:nth-child(6) + selector: td.rowfollow:nth-child(5) seeders: - selector: td.rowfollow:nth-child(7) + selector: td.rowfollow:nth-child(6) leechers: - selector: td.rowfollow:nth-child(8) + selector: td.rowfollow:nth-child(7) grabs: - selector: td.rowfollow:nth-child(9) + selector: td.rowfollow:nth-child(8) downloadvolumefactor: case: img.pro_free: 0 @@ -180,9 +164,9 @@ search: img.pro_2up: 2 "*": 1 minimumseedtime: - # 3 days (as seconds = 3 x 24 x 60 x 60) - text: 259200 + # 5 days (as seconds = 5 x 24 x 60 x 60) + text: 432000 description: - selector: td:nth-child(3) + selector: td:nth-child(2) remove: a, b, font, img, span -# NexusPHP 3ChangTrai v3.0 2020-04-30 +# NexusPHP v1.9.9 2025-10-02 diff --git a/mock-htpc/prowlarr/Definitions/3dtorrents.yml b/mock-htpc/prowlarr/Definitions/3dtorrents.yml index 5f9f0a3..dd56e76 100644 --- a/mock-htpc/prowlarr/Definitions/3dtorrents.yml +++ b/mock-htpc/prowlarr/Definitions/3dtorrents.yml @@ -18,8 +18,10 @@ caps: - {id: 17, cat: Movies/BluRay, desc: "Movies Blu-ray"} - {id: 27, cat: Movies/BluRay, desc: "Movies BD25 Encode"} - {id: 33, cat: Movies/BluRay, desc: "Movies BD9 AVCHD"} - - {id: 22, cat: Movies, desc: "Movies 2D to 3D Conv"} - - {id: 32, cat: Movies, desc: "Bluray MKV Remux"} + - {id: 22, cat: Movies, desc: "Movies Home Conversions"} + - {id: 32, cat: Movies, desc: "Movies Bluray MKV Remux"} + - {id: 38, cat: Movies, desc: "Movies Studio Conversion"} + - {id: 39, cat: Movies/3D, desc: "Movies VR 360"} - {id: 23, cat: Movies/3D, desc: "Movies Evo 3D"} - {id: 36, cat: Movies/UHD, desc: "Movies 4K UHD Bluray"} - {id: 37, cat: Movies/UHD, desc: "Movies 4K UHD Encode"} @@ -69,6 +71,10 @@ settings: type: info label: Account Inactivity default: "Inactivity grace period is three months which means that if you do not log in to the 3Dtorrents web site for 90 days, your account will be deleted. If you are VIP your will stay until the VIP period is over." + - name: info_captcha + type: info + label: About Captcha + default: "Note that the captcha on the 3Dtorrents login page is Case Sensitive." login: path: index.php?page=login diff --git a/mock-htpc/prowlarr/Definitions/52bt.yml b/mock-htpc/prowlarr/Definitions/52bt.yml index 0ce19fe..f90db67 100644 --- a/mock-htpc/prowlarr/Definitions/52bt.yml +++ b/mock-htpc/prowlarr/Definitions/52bt.yml @@ -1,20 +1,32 @@ --- id: 52bt name: 52BT -description: "52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL" +description: "52BT is a CHINESE Public tracker for MOVIES / TV / MUSIC / GENERAL" language: zh-CN type: public encoding: UTF-8 requestDelay: 2 links: - # Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://521.52btbt.cyou/ + # Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://52btbt.icu/ + - https://www.529069.xyz/ + - https://www.529067.xyz/ +legacylinks: + - https://www.529052.xyz/ - https://www.529053.xyz/ - https://www.529055.xyz/ -legacylinks: - - https://529050.xyz/ - - https://529048.xyz/ - - https://529049.xyz/ - - https://www.529052.xyz/ + - https://www.529057.xyz/ + - https://www.529056.xyz/ + - https://www.529058.xyz/ + - https://www.52bt059.buzz/ + - https://www.529060.xyz/ + - https://www.529061.xyz/ + - https://www.529059.xyz/ + - https://www.529062.xyz/ + - https://www.529063.xyz/ + - https://www.529064.xyz/ + - https://www.529066.xyz/ + - https://www.529065.xyz/ + - https://www.529068.xyz/ caps: categorymappings: diff --git a/mock-htpc/prowlarr/Definitions/Bittorrentfiles.yml b/mock-htpc/prowlarr/Definitions/Bittorrentfiles.yml index baaadb7..ab05ff8 100644 --- a/mock-htpc/prowlarr/Definitions/Bittorrentfiles.yml +++ b/mock-htpc/prowlarr/Definitions/Bittorrentfiles.yml @@ -1,7 +1,7 @@ --- id: Bittorrentfiles name: Bittorrentfiles -description: "Bittorrentfiles is a Private GERMAN tracker" +description: "Bittorrentfiles is a Private GERMAN Torrent Tracker for MOVIES / TV / GENERAL" language: de-DE type: private encoding: UTF-8 diff --git a/mock-htpc/prowlarr/Definitions/abnormal.yml b/mock-htpc/prowlarr/Definitions/abnormal.yml index b28e93d..c213cb9 100644 --- a/mock-htpc/prowlarr/Definitions/abnormal.yml +++ b/mock-htpc/prowlarr/Definitions/abnormal.yml @@ -1,7 +1,7 @@ --- id: abnormal name: Abnormal -description: "General French Private Tracker" +description: "ABNormal (ABN) is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL" language: fr-FR type: private encoding: UTF-8 diff --git a/mock-htpc/prowlarr/Definitions/abtorrents.yml b/mock-htpc/prowlarr/Definitions/abtorrents.yml index 8e34e71..0c49fc0 100644 --- a/mock-htpc/prowlarr/Definitions/abtorrents.yml +++ b/mock-htpc/prowlarr/Definitions/abtorrents.yml @@ -8,77 +8,79 @@ language: en-US type: private encoding: UTF-8 links: + - https://usefultrash.net/ +legacylinks: - https://abtorrents.me/ + - https://abtorrents.xyz/ caps: categorymappings: - - {id: 10, cat: Audio/Audiobook, desc: "Action/Adventure"} - - {id: 20, cat: Audio/Audiobook, desc: "Biography/Memoirs"} - - {id: 30, cat: Audio/Audiobook, desc: "Business "} + - {id: 10, cat: Audio/Audiobook, desc: "Action & Adventure"} + - {id: 80, cat: Audio/Audiobook, desc: "Adult & Erotica"} + - {id: 20, cat: Audio/Audiobook, desc: "Biography & Memoirs"} + - {id: 30, cat: Audio/Audiobook, desc: "Business"} - {id: 40, cat: Audio/Audiobook, desc: "Childrens"} - - {id: 50, cat: Audio/Audiobook, desc: "Humor (Comedy)"} - - {id: 60, cat: Audio/Audiobook, desc: "Comics"} - - {id: 70, cat: Audio/Audiobook, desc: "Computers "} - - {id: 80, cat: Audio/Audiobook, desc: "Adult/Erotica"} + - {id: 70, cat: Audio/Audiobook, desc: "Computers"} + - {id: 260, cat: Audio/Audiobook, desc: "Crime & Thriller"} - {id: 90, cat: Audio/Audiobook, desc: "Fantasy-General"} - {id: 100, cat: Audio/Audiobook, desc: "Fantasy-Youth"} - - {id: 110, cat: Audio/Audiobook, desc: "Files"} - - {id: 120, cat: Audio/Audiobook, desc: "Foreign Language"} - {id: 130, cat: Audio/Audiobook, desc: "General Fiction"} - {id: 140, cat: Audio/Audiobook, desc: "Historical Fiction"} - {id: 150, cat: Audio/Audiobook, desc: "History"} - {id: 160, cat: Audio/Audiobook, desc: "Horror"} + - {id: 50, cat: Audio/Audiobook, desc: "Humor (Comedy)"} - {id: 170, cat: Audio/Audiobook, desc: "Literature"} - {id: 175, cat: Audio/Audiobook, desc: "LitRPG"} - - {id: 180, cat: Audio/Audiobook, desc: "Mystery "} - - {id: 190, cat: Audio/Audiobook, desc: "Non-Fiction"} + - {id: 180, cat: Audio/Audiobook, desc: "Mystery"} + - {id: 215, cat: Audio/Audiobook, desc: "Paranormal Romance"} - {id: 200, cat: Audio/Audiobook, desc: "Radio Drama"} + - {id: 205, cat: Audio/Audiobook, desc: "Reference & Educational"} + - {id: 207, cat: Audio/Audiobook, desc: "Religion & Spirituality"} - {id: 210, cat: Audio/Audiobook, desc: "Romance"} - - {id: 220, cat: Audio/Audiobook, desc: "Science"} - - {id: 230, cat: Audio/Audiobook, desc: "Science Fiction "} - {id: 240, cat: Audio/Audiobook, desc: "Sci-Fi Apocalypse"} + - {id: 220, cat: Audio/Audiobook, desc: "Science"} + - {id: 230, cat: Audio/Audiobook, desc: "Science Fiction"} - {id: 250, cat: Audio/Audiobook, desc: "Self Improvement"} + - {id: 265, cat: Audio/Audiobook, desc: "Sports & Fitness"} - {id: 270, cat: Audio/Audiobook, desc: "Suspense"} - {id: 280, cat: Audio/Audiobook, desc: "Talk Radio"} - - {id: 260, cat: Audio/Audiobook, desc: "Crime/Thriller/Mystery"} - - {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy"} + - {id: 285, cat: Audio/Audiobook, desc: "Travel"} + - {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy & Paranormal"} - {id: 300, cat: Audio/Audiobook, desc: "Western"} - - {id: 400, cat: Books/EBook, desc: "[E] Action/Adventure"} - - {id: 410, cat: Books/EBook, desc: "[E] Adult / Erotica"} + - {id: 310, cat: Audio/Audiobook, desc: "Young Adult"} + - {id: 400, cat: Books/EBook, desc: "[E] Action & Adventure"} + - {id: 410, cat: Books/EBook, desc: "[E] Adult & Erotica"} - {id: 420, cat: Books/EBook, desc: "[E] Arts & Crafts (Hobbies)"} - - {id: 430, cat: Books/EBook, desc: "[E] Biography/Memoirs"} - - {id: 730, cat: Books/EBook, desc: "[E] Collections"} - - {id: 440, cat: Books/EBook, desc: "[E] Comic Books"} + - {id: 430, cat: Books/EBook, desc: "[E] Biography & Memoirs"} + - {id: 435, cat: Books/EBook, desc: "[E] Business"} + - {id: 720, cat: Books/EBook, desc: "[E] Childrens"} - {id: 450, cat: Books/EBook, desc: "[E] Computer Learning"} - {id: 460, cat: Books/EBook, desc: "[E] Cookery"} - - {id: 470, cat: Books/EBook, desc: "[E] Crime/Thriller/Mystery"} + - {id: 470, cat: Books/EBook, desc: "[E] Crime & Thriller"} - {id: 480, cat: Books/EBook, desc: "[E] Fantasy"} - - {id: 490, cat: Books/EBook, desc: "[E] Forteana"} + - {id: 490, cat: Books/EBook, desc: "[E] Fantasy-Youth"} - {id: 500, cat: Books/EBook, desc: "[E] General Fiction"} - {id: 510, cat: Books/EBook, desc: "[E] Historical Fiction"} - - {id: 520, cat: Books/EBook, desc: "[E] History/Documentary"} + - {id: 520, cat: Books/EBook, desc: "[E] History & Documentary"} - {id: 530, cat: Books/EBook, desc: "[E] Horror"} - {id: 540, cat: Books/EBook, desc: "[E] Humor (Comedy)"} - - {id: 550, cat: Books/EBook, desc: "[E] LGBT"} - {id: 560, cat: Books/EBook, desc: "[E] Literary Fiction"} - {id: 565, cat: Books/EBook, desc: "[E] LitRPG"} - - {id: 570, cat: Books/EBook, desc: "[E] Magazines - all"} - - {id: 580, cat: Books/EBook, desc: "[E] Non-Fiction"} - - {id: 585, cat: Books/EBook, desc: "[E] Other Languages"} + - {id: 570, cat: Books/EBook, desc: "[E] Mystery"} - {id: 590, cat: Books/EBook, desc: "[E] Paranormal Romance"} - - {id: 600, cat: Books/EBook, desc: "[E] Reference/Educational"} - - {id: 610, cat: Books/EBook, desc: "[E] Religion and Spirituality"} + - {id: 600, cat: Books/EBook, desc: "[E] Reference & Educational"} + - {id: 610, cat: Books/EBook, desc: "[E] Religion & Spirituality"} - {id: 620, cat: Books/EBook, desc: "[E] Romance"} - {id: 630, cat: Books/EBook, desc: "[E] Sci-Fi"} - - {id: 640, cat: Books/EBook, desc: "[E] Sci-Fi/Apocalyptic"} + - {id: 640, cat: Books/EBook, desc: "[E] Sci-Fi & Apocalyptic"} + - {id: 645, cat: Books/EBook, desc: "[E] Science"} - {id: 650, cat: Books/EBook, desc: "[E] Self-Help"} - - {id: 660, cat: Books/EBook, desc: "[E] Sports/Fitness"} + - {id: 660, cat: Books/EBook, desc: "[E] Sports & Fitness"} + - {id: 665, cat: Books/EBook, desc: "[E] Suspense"} - {id: 670, cat: Books/EBook, desc: "[E] Travel"} - - {id: 680, cat: Books/EBook, desc: "[E] Unsorted"} - - {id: 690, cat: Books/EBook, desc: "[E] Urban Fantasy/Paranormal"} + - {id: 690, cat: Books/EBook, desc: "[E] Urban Fantasy & Paranormal"} - {id: 700, cat: Books/EBook, desc: "[E] Western"} - {id: 710, cat: Books/EBook, desc: "[E] Young Adult"} - - {id: 720, cat: Books/EBook, desc: "[E] Young Children"} modes: search: [q] @@ -106,6 +108,8 @@ settings: login: # using cookie method because login page simplecaptcha generates Exception: Cannot access child value on Newtonsoft.Json.Linq.JValue. method: cookie + inputs: + cookie: "{{ .Config.cookie }}" test: path: index.php selector: a[href*="logout.php?hash_please="] @@ -116,26 +120,23 @@ search: inputs: $raw: "{{ range .Categories }}c{{.}}=1&{{end}}" search: "{{ .Keywords }}" - # title, descr + # title, descr, series, additional_info, author, author, uploader searchin: title - # 0 active, 1 incldead, 2 onlydead + # 0 active, 1 incldead, 2 onlydead, 3 My Unsatisfied Torrents, 4 My Watch List, 5 My Uploads incldead: 1 - # 1 onlyfree, null all - only_free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}" + # 0 All Torrents, 1 Only Free Torrents + only_free: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}" rows: selector: table.table-striped > tbody > tr:has(a[href^="download.php?torrent="]) fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features - category: - selector: a[href^="browse.php?cat="] - attribute: href - filters: - - name: querystring - args: cat + categorydesc: + selector: img[src^="./pic/caticons"] + attribute: alt title: selector: a[href^="details.php?id="] - remove: span + remove: span.has-text-red details: selector: a[href^="details.php?id="] attribute: href @@ -166,9 +167,13 @@ search: grabs: selector: a[href^="snatches.php?id="] seeders: - selector: td:nth-last-child(3) div:nth-last-child(2) + selector: a[title="Seeders"] + optional: true + default: 0 leechers: - selector: td:nth-last-child(3) div:last-child + selector: a[title="Leechers"] + optional: true + default: 0 downloadvolumefactor: case: tr.freeleech_color: 0 diff --git a/mock-htpc/prowlarr/Definitions/acgrip.yml b/mock-htpc/prowlarr/Definitions/acgrip.yml index 42f2f39..78ea2eb 100644 --- a/mock-htpc/prowlarr/Definitions/acgrip.yml +++ b/mock-htpc/prowlarr/Definitions/acgrip.yml @@ -29,10 +29,10 @@ search: selector: tbody tr fields: - title: - selector: td.title > span.title a category: text: 1 + title: + selector: td.title > span.title a details: selector: td.title > span.title a attribute: href @@ -42,16 +42,13 @@ search: size: selector: td.size seeders: - selector: td.peers div.seed + text: 1 leechers: - selector: td.peers div.leech - grabs: - selector: td.peers div.done + text: 1 date: + # unix selector: td.date time attribute: datetime - filters: - - name: fuzzytime downloadvolumefactor: text: 0 uploadvolumefactor: diff --git a/mock-htpc/prowlarr/Definitions/acrossthetasman.yml b/mock-htpc/prowlarr/Definitions/acrossthetasman.yml index 64d6827..7dfb83f 100644 --- a/mock-htpc/prowlarr/Definitions/acrossthetasman.yml +++ b/mock-htpc/prowlarr/Definitions/acrossthetasman.yml @@ -1,7 +1,7 @@ --- id: acrossthetasman name: Across The Tasman -description: "ATT is a torrent site for Rugby and other sports played in Australia" +description: "ATT is a Private torrent site for Rugby and other sports played in Australia" language: en-AU type: private encoding: UTF-8 @@ -51,7 +51,7 @@ login: - selector: div.restore:contains("invalid username or password") test: path: torrents.php - selector: a[href*="logout.php"] + selector: a[href*="login.php?do=logout"] search: paths: diff --git a/mock-htpc/prowlarr/Definitions/aftershock.yml b/mock-htpc/prowlarr/Definitions/aftershock.yml index 0987f61..82f955b 100644 --- a/mock-htpc/prowlarr/Definitions/aftershock.yml +++ b/mock-htpc/prowlarr/Definitions/aftershock.yml @@ -101,7 +101,7 @@ login: selector: td.text test: path: / - selector: a[href="/logout.php"] + selector: a[href*="/logout.php"] search: paths: @@ -115,11 +115,17 @@ search: type: "{{ .Config.type }}" rows: - selector: table tbody#torrent_background tr:has(a.index) + selector: table tbody#torrent_background tr:has(a.index):has(span.icon_check_alt) filters: - name: andmatch fields: + category: + selector: a[href*="/browse.php?cat="] + attribute: href + filters: + - name: querystring + args: cat title: selector: a.index attribute: href @@ -127,17 +133,11 @@ search: - name: querystring args: name - name: urldecode - category: - selector: td a[href^="/browse.php?cat="] - attribute: href - filters: - - name: querystring - args: cat details: - selector: a.index + selector: a[href*="/details.php?id="] attribute: href download: - selector: a[href^="download.php?id="] + selector: a.index attribute: href filters: - name: urldecode @@ -147,6 +147,8 @@ search: filters: - name: regexp args: src=([^\s]+) + - name: replace + args: ["\"", ""] imdbid: selector: a[href*="imdb.com/title/tt"] attribute: href diff --git a/mock-htpc/prowlarr/Definitions/afun.yml b/mock-htpc/prowlarr/Definitions/afun.yml new file mode 100644 index 0000000..075d851 --- /dev/null +++ b/mock-htpc/prowlarr/Definitions/afun.yml @@ -0,0 +1,180 @@ +--- +id: afun +name: AFUN +description: "AFUN is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://www.ptlover.cc/ + +caps: + categorymappings: + - {id: 407, cat: TV/Sport, desc: "Sports/赛事"} + - {id: 414, cat: TV, desc: "TV Shows/综艺"} + - {id: 408, cat: Audio, desc: "HQ Audio/HQ音频"} + - {id: 409, cat: Other, desc: "Misc/其他"} + - {id: 407, cat: TV/Sport, desc: "TV Sport/体育"} + - {id: 406, cat: Audio/Video, desc: "Music Videos/MV"} + - {id: 403, cat: TV, desc: "TV Talk Shows/脱口秀"} + - {id: 402, cat: TV, desc: "TV Series/电视剧"} + - {id: 405, cat: TV/Anime, desc: "Anime/动画"} + - {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"} + - {id: 401, cat: Movies, desc: "Movies/电影"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid] + movie-search: [q, imdbid] + music-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: 4 + options: + 4: created + 7: seeders + 5: size + 1: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrents per page: setting to 100 on your account profile. + - name: info_activity + type: info + label: Account Inactivity + default: "Cherish your user account. Inactive accounts will be deleted based on the following rules:
  1. Veteran User or above will never be deleted.
  2. Elite User or above will never be deleted if parked (at User CP).
  3. Parked accounts will be deleted if users have not logged in for more than 400 days in a row.
  4. Unparked accounts will be deleted if users have not logged in for more than 150 days in a row.
  5. Accounts with both uploaded and downloaded amount being 0 will be deleted if users have not logged in for more than 100 days in a row.
" + +login: + # using cookie method because site regularly disables login page for certain events during the year + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + # searching in description causes HTTP 500 so we will not support doubanid searching + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" + # 0: include dead, 1: alive, 2: dead + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% + spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + # 0: title, 1: description, 3: uploader, 4: imdburl + search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}" + # 0: AND, 2: exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + # Support in NexusPHP so bots don't pollute trending searches: + notnewword: 1 + + rows: + selector: table.torrents > tbody > tr:has(a[href^="download.php?id="]) + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_default: + selector: a[href^="details.php?id="] + title: + selector: a[title][href^="details.php?id="] + attribute: title + optional: true + default: "{{ .Result.title_default }}" + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + poster: + selector: img[data-src] + attribute: data-src + imdbid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="imdb.com/title/tt"] + attribute: href + doubanid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="movie.douban.com/subject/"] + attribute: href + date_elapsed: + # time type: time elapsed (default) + selector: td:nth-child(4) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + date_added: + # time added + selector: td:nth-child(4):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + date: + text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" + size: + selector: td:nth-child(5) + seeders: + selector: td:nth-child(6) + leechers: + selector: td:nth-child(7) + grabs: + selector: td:nth-child(8) + downloadvolumefactor: + case: + img.pro_free: 0 + img.pro_free2up: 0 + img.pro_50pctdown: 0.5 + img.pro_50pctdown2up: 0.5 + img.pro_30pctdown: 0.3 + "*": 1 + uploadvolumefactor: + case: + img.pro_50pctdown2up: 2 + img.pro_free2up: 2 + img.pro_2up: 2 + "*": 1 + description: + selector: td:nth-child(2) + remove: a, b, font, img, span + minimumratio: + text: 1.0 + minimumseedtime: + # 2 days (as seconds = 2 x 24 x 60 x 60) + text: 172800 +# NexusPHP v1.9.0 2025-02-06 diff --git a/mock-htpc/prowlarr/Definitions/agsvpt.yml b/mock-htpc/prowlarr/Definitions/agsvpt.yml index b9e97ec..8230198 100644 --- a/mock-htpc/prowlarr/Definitions/agsvpt.yml +++ b/mock-htpc/prowlarr/Definitions/agsvpt.yml @@ -8,9 +8,12 @@ encoding: UTF-8 requestDelay: 2 links: - https://www.agsvpt.com/ + - https://pt.agsvpt.cn/ +legacylinks: - https://abroad.agsvpt.com/ caps: + # dont forget to update the path categories in the search block categorymappings: - {id: 401, cat: Movies, desc: "Movie(电影)", default: true} - {id: 402, cat: TV, desc: "TV Series(电视剧)", default: true} @@ -22,7 +25,6 @@ caps: - {id: 406, cat: Audio/Video, desc: "MV(演唱", default: true} - {id: 407, cat: TV/Sport, desc: "Sports(体育)", default: true} - {id: 408, cat: Audio/Audiobook, desc: "Audio(音频)", default: true} - # special - {id: 413, cat: PC/Games, desc: "Game(游戏)", default: false} - {id: 416, cat: Books/Comics, desc: "Comic(漫画)", default: false} - {id: 412, cat: PC/0day, desc: "Software(软件)", default: false} diff --git a/mock-htpc/prowlarr/Definitions/aidoruonline.yml b/mock-htpc/prowlarr/Definitions/aidoruonline.yml index 50906a0..4640789 100644 --- a/mock-htpc/prowlarr/Definitions/aidoruonline.yml +++ b/mock-htpc/prowlarr/Definitions/aidoruonline.yml @@ -1,7 +1,7 @@ --- id: aidoruonline name: Aidoru!Online -description: "Aidoru!Online is a Private Torrent Tracker for Female Japanese Idol related files" +description: "Aidoru!Online is a JAPANESE Private Torrent Tracker for Female Japanese Idol related files" language: en-US type: private encoding: UTF-8 @@ -57,6 +57,10 @@ settings: options: desc: desc asc: asc + - name: info_results + type: info + label: Search results + default: "If you are getting the error Found no results while trying to browse this tracker then first access the site with your browser and check that your ratio is not below 0.8, otherwise the site will not return download links to the indexer. This does not apply to freeleech torrents." login: # using cookie method because login page returns 0 bytes with a cookie flog=6 diff --git a/mock-htpc/prowlarr/Definitions/aither-api.yml b/mock-htpc/prowlarr/Definitions/aither-api.yml index 1ebb852..5914e58 100644 --- a/mock-htpc/prowlarr/Definitions/aither-api.yml +++ b/mock-htpc/prowlarr/Definitions/aither-api.yml @@ -5,6 +5,7 @@ description: "Aither is a Private Torrent Tracker for HD MOVIES / TV" language: en-US type: private encoding: UTF-8 +# status https://status.aither.cc/ links: - https://aither.cc/ @@ -13,13 +14,11 @@ caps: - {id: 1, cat: Movies, desc: "Movie"} - {id: 9, cat: TV/Sport, desc: "Sport"} - {id: 2, cat: TV, desc: "TV"} - - {id: 3, cat: Audio, desc: "Music"} modes: search: [q] tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] movie-search: [q, imdbid, tmdbid] - music-search: [q] book-search: [q] settings: @@ -57,7 +56,7 @@ settings: - name: info_activity type: info label: Account Inactivity - default: "You must log in to the Aither web site with your browser once every 120 days to prevent your account from getting disabled." + default: "You must log in to the Aither web site with your browser once every90 days to prevent your account from getting disabled." login: path: /api/torrents @@ -71,9 +70,9 @@ login: 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" + # https://hdinnovations.github.io/UNIT3D/torrent_api.html + # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657 + - path: api/torrents/filter response: type: json @@ -118,8 +117,6 @@ search: selector: details_link download: selector: download_link - infohash: - selector: info_hash poster: selector: meta.poster filters: @@ -140,8 +137,13 @@ search: args: ["(?i)(TV Movie)", "TV_Movie"] - name: replace args: [" & ", "_&_"] + _internal: + selector: internal + case: + False: "{{ .False }}" + True: "{{ .True }}" description: - text: "{{ .Result.genre }}" + text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}" seeders: selector: seeders leechers: @@ -153,7 +155,7 @@ search: selector: created_at filters: - name: append - args: " +00:00" # UTC + args: " +00:00" # GMT - name: dateparse args: "MM/dd/yyyy HH:mm:ss zzz" size: @@ -189,4 +191,4 @@ search: minimumseedtime: # 5 days (as seconds = 5 x 24 x 60 x 60) text: 432000 -# json UNIT3D 8.3.3 +# json UNIT3D 9.1.7 diff --git a/mock-htpc/prowlarr/Definitions/alingpt.yml b/mock-htpc/prowlarr/Definitions/alingpt.yml new file mode 100644 index 0000000..638a267 --- /dev/null +++ b/mock-htpc/prowlarr/Definitions/alingpt.yml @@ -0,0 +1,170 @@ +--- +id: alingpt +name: alingPT +description: "alingPT is a CHINESE Private Torrent Tracker for MOVIES / TV" +language: zh-CN +type: private +encoding: UTF-8 +links: + - https://pt.aling.de/ + +caps: + categorymappings: + - {id: 405, cat: TV/Anime, desc: "Animations/动画"} + - {id: 402, cat: TV, desc: "TV Series/电视剧"} + - {id: 401, cat: Movies, desc: "Movies/电影"} + - {id: 404, cat: TV/Documentary, desc: "Documentary/纪录片"} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid] + movie-search: [q, imdbid] + +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: 4 + options: + 4: created + 7: seeders + 5: size + 1: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrents per page: setting to 100 on your account profile. + - name: info_activity + type: info + label: Account Inactivity + default: "Account retention rules:
  1. Veteran User and above will be retained forever
  2. Accounts parked will not be deleted
  3. Users with a parked account will be deleted if they do not log in for 400 consecutive days
  4. Users with a non-parked account will be deleted if they do not log in for 200 consecutive days
  5. Users who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 60 consecutive days.
" + +login: + # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + test: + path: index.php + selector: a[href="logout.php"] + +search: + paths: + - path: torrents.php + inputs: + $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}" + # 0 incldead, 1 active, 2 dead + incldead: 0 + # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% + spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + # 0 title, 1 descr, 3 uploader, 4 imdburl + search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}" + # 0 AND, 2 exact + search_mode: 0 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + notnewword: 1 + + rows: + selector: table.torrents > tbody > tr:has(table.torrentname) + + fields: + category: + selector: a[href^="?cat="] + attribute: href + filters: + - name: querystring + args: cat + title_default: + selector: a[href^="details.php?id="] + title: + selector: a[title][href^="details.php?id="] + attribute: title + optional: true + default: "{{ .Result.title_default }}" + details: + selector: a[href^="details.php?id="] + attribute: href + download: + selector: a[href^="download.php?id="] + attribute: href + poster: + selector: img[data-src] + attribute: data-src + imdbid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="imdb.com/title/tt"] + attribute: href + doubanid: + # site currently only has a badge and rating, the id is not present. just in case a future update. + selector: a[href*="movie.douban.com/subject/"] + attribute: href + date_elapsed: + # time type: time elapsed (default) + selector: td.rowfollow:nth-child(4) > span[title] + attribute: title + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + date_added: + # time added + selector: td.rowfollow:nth-child(4):not(:has(span)) + optional: true + filters: + - name: append + args: " +08:00" # CST + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + date: + text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" + size: + selector: td.rowfollow:nth-child(5) + seeders: + selector: td.rowfollow.rowfollow:nth-child(6) + leechers: + selector: td.rowfollow:nth-child(7) + grabs: + selector: td.rowfollow:nth-child(8) + downloadvolumefactor: + case: + img.pro_free: 0 + img.pro_free2up: 0 + img.pro_50pctdown: 0.5 + img.pro_50pctdown2up: 0.5 + img.pro_30pctdown: 0.3 + "*": 1 + uploadvolumefactor: + case: + img.pro_50pctdown2up: 2 + img.pro_free2up: 2 + img.pro_2up: 2 + "*": 1 + minimumratio: + text: 2.0 + minimumseedtime: + # 2 days (as seconds = 2 x 24 x 60 x 60) + text: 172800 + description: + selector: td.rowfollow:nth-child(2) + remove: a, b, font, img, span +# NexusPHP v1.9.4 2025-06-01 diff --git a/mock-htpc/prowlarr/Definitions/amigosshare.yml b/mock-htpc/prowlarr/Definitions/amigosshare.yml index 790f8ce..1dc8c9f 100644 --- a/mock-htpc/prowlarr/Definitions/amigosshare.yml +++ b/mock-htpc/prowlarr/Definitions/amigosshare.yml @@ -1,7 +1,7 @@ --- id: amigosshare name: Amigos Share Club -description: "Amigos Share Club is a Brazilian Private site for TV / MOVIES / GENERAL" +description: "Amigos Share Club (ASC) is a BRAZILIAN Private Torrent Tracker for MOVIES / TV / GENERAL" language: pt-BR type: private encoding: UTF-8 @@ -29,14 +29,14 @@ caps: - {id: 25, cat: PC, desc: "Aplicativos: Linux"} - {id: 23, cat: PC/Mobile-Android, desc: "Aplicativos: Android"} - {id: 22, cat: PC/Mac, desc: "Aplicativos: Mac"} - - {id: 73, cat: Books, desc: "Cursos: Video Aula"} - - {id: 72, cat: Books, desc: "Cursos: Apostila"} - - {id: 71, cat: Books, desc: "Cursos: Cursos"} - - {id: 67, cat: Books, desc: "Ebook: Livros"} - - {id: 112, cat: Books, desc: "Ebook: HQs"} - - {id: 147, cat: Books, desc: "Ebook: Mangas"} + - {id: 73, cat: Other, desc: "Cursos: Video Aula"} + - {id: 72, cat: Other, desc: "Cursos: Apostila"} + - {id: 71, cat: Other, desc: "Cursos: Cursos"} + - {id: 67, cat: Books/EBook, desc: "Ebook: Livros"} + - {id: 112, cat: Books/Comics, desc: "Ebook: HQs"} + - {id: 147, cat: Books/Comics, desc: "Ebook: Mangas"} - {id: 121, cat: Audio/Audiobook, desc: "Ebook: Audio-book"} - - {id: 68, cat: Books, desc: "Ebook: Revistas"} + - {id: 68, cat: Books/Mags, desc: "Ebook: Revistas"} - {id: 119, cat: Movies, desc: "Filmes:"} - {id: 70, cat: XXX, desc: "Fotos: Revistas, Livros e Fotos"} - {id: 51, cat: Console/PS3, desc: "Jogos: Ps3"} @@ -152,7 +152,7 @@ search: keywordsfilters: # drop the year from searches since site titles do not include year - name: re_replace - args: ["(19|20[0-9]{2})", ""] + args: ["(\\s*\\b((19|20)\\d{2})\\b)", ""] rows: selector: "div#fancy-list-group ul.list-group li.list-group-item{{ if .Config.freeleech }}:has(span.badge-success:contains(\"FREE\")){{ else }}{{ end }}" diff --git a/mock-htpc/prowlarr/Definitions/animelovers-api.yml b/mock-htpc/prowlarr/Definitions/animelovers-api.yml index 9da6c59..0196b68 100644 --- a/mock-htpc/prowlarr/Definitions/animelovers-api.yml +++ b/mock-htpc/prowlarr/Definitions/animelovers-api.yml @@ -75,9 +75,9 @@ login: 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" + # https://hdinnovations.github.io/UNIT3D/torrent_api.html + # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657 + - path: api/torrents/filter response: type: json @@ -144,8 +144,13 @@ search: args: ["(?i)(TV Movie)", "TV_Movie"] - name: replace args: [" & ", "_&_"] + _internal: + selector: internal + case: + False: "{{ .False }}" + True: "{{ .True }}" description: - text: "{{ .Result.genre }}" + text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}" seeders: selector: seeders leechers: @@ -193,4 +198,4 @@ search: minimumseedtime: # 7 days (as seconds = 7 x 24 x 60 x 60) text: 604800 -# json UNIT3D 8.3.4 +# json UNIT3D 9.1.5 diff --git a/mock-htpc/prowlarr/Definitions/animeworld-api.yml b/mock-htpc/prowlarr/Definitions/animeworld-api.yml index 7de47b3..1ca6e5e 100644 --- a/mock-htpc/prowlarr/Definitions/animeworld-api.yml +++ b/mock-htpc/prowlarr/Definitions/animeworld-api.yml @@ -1,7 +1,7 @@ --- id: animeworld-api name: AnimeWorld (API) -description: "AnimeWorld (AW) is a GERMAN Private site for ANIME / MANGA / HENTAI" +description: "AnimeWorld (AW) is a GERMAN Private Torrent Tracker for ANIME / MANGA / HENTAI" language: de-DE type: private encoding: UTF-8 @@ -82,9 +82,9 @@ login: 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" + # https://hdinnovations.github.io/UNIT3D/torrent_api.html + # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657 + - path: api/torrents/filter response: type: json @@ -149,8 +149,13 @@ search: args: ["(?i)(Science Fiction)", "Science_Fiction"] - name: replace args: [" & ", "_&_"] + _internal: + selector: internal + case: + False: "{{ .False }}" + True: "{{ .True }}" description: - text: "{{ .Result.genre }}" + text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}" seeders: selector: seeders leechers: diff --git a/mock-htpc/prowlarr/Definitions/anthelion-api.yml b/mock-htpc/prowlarr/Definitions/anthelion-api.yml index de2df06..78e8690 100644 --- a/mock-htpc/prowlarr/Definitions/anthelion-api.yml +++ b/mock-htpc/prowlarr/Definitions/anthelion-api.yml @@ -4,7 +4,7 @@ replaces: - tehconnectionme - anthelion name: Anthelion (API) -description: "Anthelion is a Private MOVIES tracker" +description: "Anthelion (ANT) is a Private Torrent Tracker for MOVIES" language: en-US type: private encoding: UTF-8 @@ -91,6 +91,8 @@ search: selector: codec _container: selector: container + filters: + - name: toupper _media: selector: media filters: @@ -122,7 +124,11 @@ search: filters: - name: htmldecode - name: append - args: " {{ .Result.year }} {{ .Result._codec }} {{ .Result._container }} {{ .Result._media }} {{ .Result._resolution }} {{ .Result._audioFormat }}{{ if .Result._subbing }} Subs{{ else }}{{ end }}{{ if .Result._flags }} {{ .Result._flags }}{{ else }}{{ end }}{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}{{ if and (.Result._releaseGroup) (ne .Result._releaseGroup \"NULL\") }}-{{ .Result._releaseGroup }}{{ else }}{{ end }}" + args: " {{ .Result.year }} {{ .Result._resolution }} {{ .Result._media }} {{ .Result._container }} {{ .Result._codec }} {{ .Result._audioFormat }}{{ if .Result._subbing }} Subs{{ else }}{{ end }}{{ if .Result._flags }} {{ .Result._flags }}{{ else }}{{ end }}{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}{{ if and (.Result._releaseGroup) (ne .Result._releaseGroup \"NULL\") }}-{{ .Result._releaseGroup }}{{ else }}{{ end }}" + - name: replace + args: ["M2TS H265", "M2TS HEVC"] + - name: replace + args: ["M2TS H264", "M2TS AVC"] details: selector: guid download: diff --git a/mock-htpc/prowlarr/Definitions/arabafenice.yml b/mock-htpc/prowlarr/Definitions/arabafenice.yml index fc7beb7..14f025c 100644 --- a/mock-htpc/prowlarr/Definitions/arabafenice.yml +++ b/mock-htpc/prowlarr/Definitions/arabafenice.yml @@ -1,7 +1,7 @@ --- id: arabafenice name: ArabaFenice -description: "Araba Fenice (Phoenix) is an ITALIAN Private site for TV / MOVIES / GENERAL" +description: "Araba Fenice (Phoenix) is an ITALIAN Private Torrent Tracker for MOVIES / TV / GENERAL" language: it-IT type: private encoding: UTF-8 diff --git a/mock-htpc/prowlarr/Definitions/arabp2p.yml b/mock-htpc/prowlarr/Definitions/arabp2p.yml index 9dbead1..36c1aeb 100644 --- a/mock-htpc/prowlarr/Definitions/arabp2p.yml +++ b/mock-htpc/prowlarr/Definitions/arabp2p.yml @@ -82,15 +82,6 @@ caps: # برامج Software - {id: 22, cat: PC, desc: "برامج عربية (Arabic Software)"} - {id: 23, cat: PC, desc: "برامج عامه (Public Software)"} - - {id: 78, cat: PC/Mobile-iOS, desc: "iPad/iPhone"} - - {id: 79, cat: PC/Mobile-Android, desc: "android"} - # العاب Games - - {id: 30, cat: PC/Games, desc: "PC"} - - {id: 31, cat: Console/PS3, desc: "PS2"} - - {id: 53, cat: Console/Wii, desc: "wii"} - - {id: 55, cat: Console/PSP, desc: "PSP"} - - {id: 63, cat: Console/XBox, desc: "XBOX"} - - {id: 64, cat: Console/PS3, desc: "PS3"} # اخرى Other - {id: 17, cat: Books, desc: "كتب (Books)"} - {id: 65, cat: Other, desc: "صور (Images)"} @@ -119,12 +110,13 @@ login: search: paths: - # https://www.arabp2p.com/index.php?page=torrents&search=&category=0&active=0&internel=0 + # https://www.arabp2p.net/index.php?page=torrents&search=&category=0&active=0&internel=0&order=3&by=2 - path: index.php inputs: page: torrents search: "{{ .Keywords }}" - category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}" + # does not support multi categories, default to All + category: 0 # 0 all 1 activeonly 2 deadonly active: 0 # 0 all 1 internal 2 external @@ -134,38 +126,43 @@ search: # does not support imdbid search or provide imdb link in results rows: - selector: table.torrent tr.torrent + selector: table#torrents_list_p > tbody > tr:has(a[href^="download.php?id="]), table#torrents_list_p > tbody > tr:has(a[href^="magnet:?xt="]) filters: - name: andmatch fields: category: - selector: td a[href^="index.php?page=torrents&category="] + selector: a[href^="index.php?page=torrents&category="]:last-child attribute: href filters: - name: querystring args: category title: - selector: td a[href^="index.php?page=torrent-details"] + selector: a[href^="index.php?page=torrent-details"] details: - selector: td a[href^="index.php?page=torrent-details"] + selector: a[href^="index.php?page=torrent-details"] attribute: href download: - selector: td a[href^="download.php"] + selector: a[href^="download.php?id="] attribute: href + optional: true + magnet: + selector: a[href^="magnet:?xt="] + attribute: href + optional: true date: - selector: td:nth-child(4) span + selector: span.upload-date > span attribute: title # auto adjusted by site account profile filters: - name: dateparse - args: "yyyy-MM-dd HH:mm:ss" - seeders: - selector: td:nth-child(5) - leechers: - selector: td:nth-child(6) + args: "MM-yy-dd HH:mm:ss tt" size: - selector: td:nth-child(7) + selector: span.size + seeders: + selector: span[title="Seeders"] + leechers: + selector: span[title="Leechers"] downloadvolumefactor: case: span.free: 0 diff --git a/mock-htpc/prowlarr/Definitions/arenabg.yml b/mock-htpc/prowlarr/Definitions/arenabg.yml index 1e108fd..c72bf05 100644 --- a/mock-htpc/prowlarr/Definitions/arenabg.yml +++ b/mock-htpc/prowlarr/Definitions/arenabg.yml @@ -5,6 +5,8 @@ description: "ArenaBG is a BULGARIAN Semi-Private Torrent Tracker for 0DAY / GEN language: bg-BG type: semi-private encoding: UTF-8 +certificates: + - c25aba843f815e92d0da0bbe3191326d16a81a32 # expired 15th Oct 2025 links: - https://arenabg.com/ legacylinks: @@ -34,6 +36,7 @@ caps: - {id: 24, cat: TV, desc: "Series / TV Episodes"} - {id: 25, cat: TV, desc: "Series / TV Boxset"} - {id: 26, cat: TV/HD, desc: "Series / TV Boxset HD"} + - {id: 60, cat: TV/UHD, desc: "Series / 4K"} - {id: 3, cat: Audio, desc: "Music"} - {id: 27, cat: Audio/MP3, desc: "Music / MP3"} - {id: 28, cat: Audio/Video, desc: "Music / Video"} diff --git a/mock-htpc/prowlarr/Definitions/asiancinema.yml b/mock-htpc/prowlarr/Definitions/asiancinema.yml index 9c01540..af50ec0 100644 --- a/mock-htpc/prowlarr/Definitions/asiancinema.yml +++ b/mock-htpc/prowlarr/Definitions/asiancinema.yml @@ -1,7 +1,7 @@ --- id: asiancinema name: AsianCinema -description: "Tracker Movies/TV/Music" +description: "AsianCinema is a Private Tracker for ASIAN MOVIES / TV / MUSIC" language: en-US type: private encoding: UTF-8 diff --git a/mock-htpc/prowlarr/Definitions/asiandvdclub.yml b/mock-htpc/prowlarr/Definitions/asiandvdclub.yml index 0b75719..fc54fb4 100644 --- a/mock-htpc/prowlarr/Definitions/asiandvdclub.yml +++ b/mock-htpc/prowlarr/Definitions/asiandvdclub.yml @@ -1,7 +1,7 @@ --- id: asiandvdclub name: AsianDVDClub -description: "AsianDVDClub (ADC) is a Private Torrent Tracker for Asian DVD and BluRay" +description: "AsianDVDClub (ADC) is a Private Torrent Tracker for ASIAN DVD and BluRay" language: en-US type: private encoding: UTF-8 diff --git a/mock-htpc/prowlarr/Definitions/audiences.yml b/mock-htpc/prowlarr/Definitions/audiences.yml index 05095c9..17ccbf9 100644 --- a/mock-htpc/prowlarr/Definitions/audiences.yml +++ b/mock-htpc/prowlarr/Definitions/audiences.yml @@ -65,7 +65,7 @@ settings: default: "Account retention rules:
  1. Users with Extreme User and above will be retained forever
  2. Starting from 20230701, the non-login ban time will be adjusted to:
  3. Users with no traffic (i.e. uploading/downloading data) If it is 0) If you do not log in for 7 consecutive days will be disabled
  4. 'Parked accounts' no longer enjoy the benefits of retaining accounts, and are also subject to the above rules.
" login: - # using cookie method because site has cloudflare challenge and flaresolverr is currently broken. Switch to standard nexus login when fixed. + # using cookie method because site regularly disables login page for certain events during the year method: cookie inputs: cookie: "{{ .Config.cookie }}" diff --git a/mock-htpc/prowlarr/Definitions/aussierules.yml b/mock-htpc/prowlarr/Definitions/aussierules.yml index 5856ef2..9e0bebd 100644 --- a/mock-htpc/prowlarr/Definitions/aussierules.yml +++ b/mock-htpc/prowlarr/Definitions/aussierules.yml @@ -1,7 +1,7 @@ --- id: aussierules name: Aussierul.es -description: "Aussierul.es is a torrent site for Aussie Rules Football played in Australia" +description: "AussieRul.es is a Private Torrent Tracker for AUSTRALIAN RULES FOOTBALL" language: en-AU type: private encoding: UTF-8 @@ -35,7 +35,7 @@ settings: - name: dead label: Include Dead Torrents type: select - default: No + default: no options: yes: Yes no: No diff --git a/mock-htpc/prowlarr/Definitions/azusa.yml b/mock-htpc/prowlarr/Definitions/azusa.yml index 2baed21..9431bdd 100644 --- a/mock-htpc/prowlarr/Definitions/azusa.yml +++ b/mock-htpc/prowlarr/Definitions/azusa.yml @@ -1,7 +1,7 @@ --- id: azusa name: Azusa (梓喵) -description: "Azusa (梓喵) is a CHINESE Private Torrent Tracker focusing on Comics" +description: "Azusa (梓喵) is a CHINESE Private Torrent Tracker focusing on COMICS" language: zh-CN type: private encoding: UTF-8 @@ -22,19 +22,11 @@ caps: book-search: [q] settings: - - name: username + - name: cookie 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 Uploads Web Site. Otherwise just leave it empty." + label: Cookie + - name: info_cookie + type: info_cookie - name: freeleech type: checkbox label: Search freeleech only @@ -61,45 +53,34 @@ settings: default: For best results, change the Torrents per page: setting to 100 on your account profile. login: - path: login.php - method: form - form: form[action="takelogin.php"] - captcha: - type: image - selector: img[alt="CAPTCHA"] - input: imagestring + # using cookie method because site regularly disables login page for certain events during the year + method: cookie inputs: - secret: "" - username: "{{ .Config.username }}" - password: "{{ .Config.password }}" - two_step_code: "{{ .Config.2facode }}" - logout: "" - securelogin: "" - ssl: yes - trackerssl: "" - error: - - selector: td.embedded:has(h2:contains("失败")) + cookie: "{{ .Config.cookie }}" test: path: index.php - selector: a[href="logout.php"] + selector: a[href^="logout.php?csrf_token="] search: paths: - path: torrents.php + allowEmptyInputs: true inputs: $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" - search: "{{ .Keywords }}" # 0 incldead, 1 active, 2 dead incldead: 0 # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" + inclbookmarked: 0 + approval_status: "" + trackerStatus: "" + search: "{{ .Keywords }}" # 0 title, 1 descr, 3 uploader, 4 imdburl search_area: 0 # 0 AND, 1 OR, 2 exact search_mode: 0 sort: "{{ .Config.sort }}" type: "{{ .Config.type }}" - notnewword: 1 rows: selector: table.torrents > tbody > tr:has(table.torrentname) @@ -148,11 +129,17 @@ search: size: selector: td.rowfollow:nth-child(5) seeders: - selector: td.rowfollow:nth-child(6) + selector: a[href$="dllist=1#seeders"] + optional: true + default: 0 leechers: - selector: td.rowfollow:nth-child(7) + selector: a[href$="dllist=1#leechers"] + optional: true + default: 0 grabs: - selector: td.rowfollow:nth-child(8) + selector: a[href^="viewsnatches.php?id="] + optional: true + default: 0 downloadvolumefactor: case: img.pro_free: 0 @@ -170,4 +157,4 @@ search: description: selector: td:nth-child(2) remove: a, b, font, img, span -# NexusPHP v1.7.20 2022-08-05 +# NexusPHP v1.7.20 2022-08-05 (custom) diff --git a/mock-htpc/prowlarr/Definitions/backups.yml b/mock-htpc/prowlarr/Definitions/backups.yml index cbab56e..ee2110a 100644 --- a/mock-htpc/prowlarr/Definitions/backups.yml +++ b/mock-htpc/prowlarr/Definitions/backups.yml @@ -10,6 +10,7 @@ links: caps: categorymappings: + - {id: 100, cat: Console, desc: "Anbernic"} - {id: 15, cat: PC/Mobile-Android, desc: "Android"} - {id: 35, cat: TV/Anime, desc: "Anime"} - {id: 51, cat: PC/Mac, desc: "Apple"} @@ -17,9 +18,9 @@ caps: - {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"} - {id: 71, cat: Console, desc: "Batocera"} - {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"} - - {id: 22, cat: Console, desc: "CoinOps"} - {id: 42, cat: Console, desc: "CoinOPS Official"} - {id: 65, cat: Console, desc: "CoinOps Unofficial"} + - {id: 22, cat: Console, desc: "CoinOps"} - {id: 63, cat: Books/Comics, desc: "Comics"} - {id: 60, cat: Console, desc: "Core"} - {id: 72, cat: Console, desc: "CORE Community"} @@ -28,39 +29,44 @@ caps: - {id: 41, cat: Console, desc: "Dragon"} - {id: 5, cat: Books, desc: "EBooks"} - {id: 80, cat: PC, desc: "Emulation Media"} - - {id: 61, cat: Console, desc: "emuxtras"} - - {id: 69, cat: TV, desc: "Entertainment"} + - {id: 61, cat: PC, desc: "emuxtras"} + - {id: 89, cat: PC, desc: "Ghostware"} - {id: 84, cat: TV, desc: "GOG DRM FREE"} - {id: 77, cat: PC, desc: "Hyperspin"} - {id: 34, cat: TV, desc: "Kids"} - {id: 43, cat: Console, desc: "LB No Intro"} + - {id: 85, cat: PC, desc: "MAME Rom Sets"} - {id: 33, cat: TV/Sport, desc: "MMA/Boxing"} - {id: 32, cat: Movies, desc: "Movie Pack"} - - {id: 6, cat: Movies, desc: "Movies/XVID"} + - {id: 106, cat: Movies/UHD, desc: "Movie Pack 4K"} + - {id: 6, cat: Movies, desc: "Movies"} + - {id: 105, cat: Movies/UHD, desc: "Movies 4K"} - {id: 82, cat: PC, desc: "MS-DOS"} - {id: 7, cat: Audio, desc: "Music"} - {id: 31, cat: Console, desc: "Nintendo"} - {id: 59, cat: Console, desc: "P-R-U"} - {id: 8, cat: PC/Games, desc: "PC Games"} - {id: 50, cat: Console, desc: "PlayBox"} + - {id: 87, cat: Console, desc: "Playnite"} - {id: 30, cat: Console, desc: "Playstation"} - - {id: 62, cat: Console, desc: "RaspberryPi"} - - {id: 83, cat: Console, desc: "Retro eXo"} - - {id: 56, cat: Console, desc: "Retro Minis"} + - {id: 62, cat: PC, desc: "Raspberry Pi"} + - {id: 83, cat: PC, desc: "Retro eXo"} + - {id: 56, cat: PC, desc: "Retro Minis"} - {id: 81, cat: PC, desc: "Retro Scene Releases"} - - {id: 67, cat: Console, desc: "Retrobat"} + - {id: 67, cat: PC, desc: "Retrobat"} + - {id: 88, cat: PC, desc: "RetroFE"} - {id: 79, cat: PC, desc: "RGB-Pi"} - {id: 76, cat: Console, desc: "RGS"} - - {id: 27, cat: Console, desc: "Roms and Emulators"} - - {id: 68, cat: Console, desc: "Schmoomer's"} + - {id: 27, cat: PC, desc: "Roms and Emulators"} + - {id: 68, cat: PC, desc: "Schmoomer's"} - {id: 57, cat: Console, desc: "Sega"} - {id: 74, cat: PC, desc: "Sleyk/SGC"} - - {id: 40, cat: TV, desc: "Soaps"} - {id: 29, cat: TV/Sport, desc: "Sport"} - - {id: 9, cat: TV, desc: "TV-Boxsets"} - - {id: 11, cat: TV, desc: "TV/x264"} - - {id: 10, cat: TV, desc: "TV/Xvid"} - - {id: 75, cat: Audio, desc: "Video Game Music"} + - {id: 90, cat: PC, desc: "TeknoParrot"} + - {id: 9, cat: TV, desc: "TV Packs"} + - {id: 11, cat: TV, desc: "TV Shows"} + - {id: 97, cat: TV/Other, desc: "Video Courses"} + - {id: 75, cat: TV, desc: "Video Game Music"} - {id: 73, cat: Console, desc: "Wolfanoz"} - {id: 14, cat: TV/Sport, desc: "WWE"} - {id: 26, cat: Console, desc: "Xbox"} diff --git a/mock-htpc/prowlarr/Definitions/bestcore.yml b/mock-htpc/prowlarr/Definitions/bestcore.yml index 16c39a1..c33675a 100644 --- a/mock-htpc/prowlarr/Definitions/bestcore.yml +++ b/mock-htpc/prowlarr/Definitions/bestcore.yml @@ -1,7 +1,7 @@ --- id: bestcore name: Best-Core -description: "Best-Core is a HUNGARIAN Private Tracker for MOVIES / TV" +description: "Best-Core is a HUNGARIAN Private Tracker for MOVIES / TV / GENERAL" language: hu-HU type: private encoding: ISO-8859-2 diff --git a/mock-htpc/prowlarr/Definitions/bibliotik.yml b/mock-htpc/prowlarr/Definitions/bibliotik.yml index eb4f2d5..05ea9f6 100644 --- a/mock-htpc/prowlarr/Definitions/bibliotik.yml +++ b/mock-htpc/prowlarr/Definitions/bibliotik.yml @@ -1,7 +1,7 @@ --- id: bibliotik name: Bibliotik -description: "Bibliotik is a private site for eBooks and audiobooks" +description: "Bibliotik is a Private Torrent Tracker for EBOOKS and AUDIOBOOKS" language: en-US type: private encoding: UTF-8 diff --git a/mock-htpc/prowlarr/Definitions/bigcore.yml b/mock-htpc/prowlarr/Definitions/bigcore.yml new file mode 100644 index 0000000..fac1873 --- /dev/null +++ b/mock-htpc/prowlarr/Definitions/bigcore.yml @@ -0,0 +1,152 @@ +--- +id: bigcore +name: BigCore +description: "BigCore is a HUNGARIAN Private Tracker for MOVIES / TV / GENERAL" +language: hu-HU +type: private +encoding: UTF-8 +links: + - https://bigcore.eu/ + +caps: + categorymappings: + - {id: 48, cat: Movies/SD, desc: "CAM/Hun"} + - {id: 49, cat: Movies/SD, desc: "CAM/Eng"} + - {id: 50, cat: Movies/SD, desc: "SD/Hun"} + - {id: 51, cat: Movies/SD, desc: "SD/Eng"} + - {id: 52, cat: Movies/DVD, desc: "DVD/Hun"} + - {id: 53, cat: Movies/DVD, desc: "DVD/Eng"} + - {id: 54, cat: Movies/HD, desc: "HD/Hun"} + - {id: 55, cat: Movies/HD, desc: "HD/Eng"} + - {id: 56, cat: TV, desc: "Sorozat/Hun"} + - {id: 57, cat: TV, desc: "Sorozat/Eng"} + - {id: 58, cat: PC/Games, desc: "Játék/ISO"} + - {id: 59, cat: PC/ISO, desc: "Program/ISO"} + - {id: 60, cat: PC/Games, desc: "Játék/RIP"} + - {id: 61, cat: PC/0day, desc: "Program/RIP"} + - {id: 62, cat: Audio, desc: "Zene/Hun"} + - {id: 63, cat: Audio, desc: "Zene/Eng"} + - {id: 64, cat: Books, desc: "Könyv"} + - {id: 65, cat: PC/Mobile-Other, desc: "Mobil"} + - {id: 66, cat: XXX/x264, desc: "XXX/Video"} + - {id: 67, cat: XXX/ImageSet, desc: "XXX/Kép"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + music-search: [q] + book-search: [q] + +settings: + - name: cookie + type: text + label: Cookie + - name: info_cookie + type: info_cookie + - name: sort + type: select + label: Sort requested from site + default: 4 + options: + 1: title + 4: created + 7: seeders + 5: size + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + - name: info_tpp + type: info + label: Results Per Page + default: For best results, change the Torrentek száma egy oldalon setting to 100 on your account profile. The default is 30. + +login: + # using cookie method because login page has embedded Google reCAPTCHA + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + test: + path: index.php + selector: a[href="/logout.php"] + +search: + paths: + - path: browse.php + inputs: + $raw: "{{ range .Categories }}c{{.}}=1&{{end}}" + search: "{{ .Keywords }}" + # 0 active, 1 incldead, 2 onlydead, 3 myupload, 4 waiting for seed + incldead: 1 + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + + rows: + selector: tr[id^="torrent_row_"], tr[id^="hidden_torrent_row_"] + after: 1 + + fields: + category: + selector: a[href^="browse.php?cat="] + attribute: href + filters: + - name: querystring + args: cat + title: + selector: a#torrentName + attribute: title + _id: + selector: a[href^="download.php?torrent="] + attribute: href + filters: + - name: querystring + args: torrent + details: + text: "details.php?id={{ .Result._id }}" + download: + selector: a[href^="download.php?torrent="] + attribute: href + poster: + selector: a[href^="kepek/"] + attribute: href + files: + selector: a.viewFileList + date: + selector: td:nth-child(7) a[title] + attribute: title + filters: + - name: append + args: " +01:00" # CET + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + size: + selector: td:nth-child(8) + grabs: + selector: td:nth-child(9) + seeders: + selector: td:nth-child(10) + leechers: + selector: td:nth-child(11) + description: + case: + i.fa-check: "Verified" + i.fa-question: "Unverified" + downloadvolumefactor: + case: + span:contains("0x"): 0 + "*": 1 + uploadvolumefactor: + case: + span:contains("2x"): 2 + span:contains("3x"): 3 + span:contains("4x"): 4 + span:contains("5x"): 5 + "*": 1 + minimumseedtime: + # 1 days (as seconds = 1 x 24 x 60 x 60) + text: 86400 +# engine n/a diff --git a/mock-htpc/prowlarr/Definitions/bitbazis.yml b/mock-htpc/prowlarr/Definitions/bitbazis.yml index 66cfe2d..1e44972 100644 --- a/mock-htpc/prowlarr/Definitions/bitbazis.yml +++ b/mock-htpc/prowlarr/Definitions/bitbazis.yml @@ -10,30 +10,29 @@ links: - https://bitbazis.net/ caps: + # dont forget to update the path categories in the search block categorymappings: - - {id: 85, cat: Movies/SD, desc: "Film-Cam", default: true} - {id: 15, cat: Movies/SD, desc: "Film-SD", default: true} - - {id: 17, cat: Movies/DVD, desc: "Film-DVD", default: true} - {id: 83, cat: Movies/HD, desc: "Film-HD", default: true} - {id: 94, cat: Movies/HD, desc: "Film-FHD", default: true} - - {id: 92, cat: Movies/UHD, desc: "Film-UHD", default: true} + - {id: 85, cat: Movies/SD, desc: "Film-Cam", default: true} - {id: 22, cat: TV, desc: "Sorozat-Hun", default: true} - - {id: 64, cat: Movies, desc: "Film-Pack", default: true} - - {id: 24, cat: Audio/Video, desc: "Klip", default: true} - - {id: 70, cat: Audio/Audiobook, desc: "Hangoskönyv", default: true} - - {id: 27, cat: Books/EBook, desc: "Könyv", default: true} - - {id: 69, cat: TV/Anime, desc: "Mese-SD", default: true} - - {id: 91, cat: TV/Anime, desc: "Mese-HD", default: true} - {id: 25, cat: Audio/MP3, desc: "Mp3-Hun", default: true} - {id: 26, cat: Audio/MP3, desc: "Mp3-Eng", default: true} - {id: 84, cat: Audio/Lossless, desc: "FLAC-Hun", default: true} - {id: 71, cat: Audio/Lossless, desc: "FLAC-Eng", default: true} - - {id: 31, cat: PC/Games, desc: "Játék", default: true} + - {id: 27, cat: Books/EBook, desc: "Könyv", default: true} - {id: 81, cat: PC/0day, desc: "Program", default: true} - - {id: 14, cat: Other, desc: "Egyéb", default: true} + - {id: 31, cat: PC/Games, desc: "Játék", default: true} + - {id: 69, cat: TV/Anime, desc: "Mese-SD", default: true} + - {id: 91, cat: TV/Anime, desc: "Mese-HD", default: true} + - {id: 64, cat: Movies, desc: "Film-Pack", default: true} + - {id: 92, cat: Movies/UHD, desc: "Film-UHD", default: true} - {id: 66, cat: XXX/ImageSet, desc: "XXX", default: false} - {id: 33, cat: XXX/SD, desc: "XXX-SD", default: false} - {id: 89, cat: XXX/x264, desc: "XXX-HD", default: false} + - {id: 24, cat: Audio/Video, desc: "Klip", default: true} + - {id: 14, cat: Other, desc: "Egyéb", default: true} modes: search: [q] @@ -82,12 +81,12 @@ login: cookie: "{{ .Config.cookie }}" test: path: index.php - selector: li[onclick^="window.open('logout.php?k="] + selector: a[onclick="confirmLogout()"] search: paths: - path: browse.php - categories: [85, 86, 15, 16, 17, 19, 83, 82, 94, 95, 92, 93, 22, 58, 64, 24, 70, 27, 50, 69, 68, 91, 25, 26, 84, 71, 31, 54, 81, 67, 49, 14, 65, 97] + categories: [15, 83, 94, 85, 22, 25, 26, 84, 71, 27, 81, 31, 69, 91, 64, 92, 24, 14] inputs: # 0 all, 1 active, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded incldead: 0 @@ -116,7 +115,7 @@ search: - name: replace args: ["catpic_", ""] title: - selector: span.torrent-title + selector: span.torrent-name _id: selector: tr[data-torrent-id] attribute: data-torrent-id @@ -131,7 +130,7 @@ search: selector: a[href*="imdb.com/title/tt"] attribute: href size: - selector: span.torrent-size + selector: td.torrent-size date: # 36 perce # 13 órája és 59 perce diff --git a/mock-htpc/prowlarr/Definitions/bitgamer.yml b/mock-htpc/prowlarr/Definitions/bitgamer.yml new file mode 100644 index 0000000..93dcc5e --- /dev/null +++ b/mock-htpc/prowlarr/Definitions/bitgamer.yml @@ -0,0 +1,160 @@ +--- +id: bitgamer +name: bitGAMER +description: "bitGAMER is a Private Torrent Tracker for GAMES" +language: en-US +type: private +encoding: UTF-8 +links: + - https://bitgamer.ch/ + +caps: + categorymappings: + - {id: 1, cat: XXX/Other, desc: "Adult Games"} + - {id: 3, cat: PC/0day, desc: "Burning/Ripping Tools"} + - {id: 4, cat: Books/Other, desc: "Guides/Game Documents"} + - {id: 13, cat: Movies/Other, desc: "Movies/TV/Video"} + - {id: 48, cat: Audio/Other, desc: "Music/OST"} + - {id: 52, cat: Console/Other, desc: "Amiga"} + - {id: 18, cat: PC/Mobile-iOS, desc: "Apple - iPhone/iPod/iPad"} + - {id: 54, cat: Console/Other, desc: "Arcade"} + - {id: 19, cat: Console/Other, desc: "Atari"} + - {id: 51, cat: Console/Other, desc: "Commodore 64"} + - {id: 22, cat: PC/Mobile-Android, desc: "Google - Android"} + - {id: 61, cat: Console/Other, desc: "Hyperspin"} + - {id: 24, cat: Console/XBox, desc: "Microsoft - Xbox"} + - {id: 25, cat: Console/XBox 360, desc: "Microsoft - Xbox 360"} + - {id: 49, cat: Console/XBox 360, desc: "Microsoft - Xbox 360 JTAG"} + - {id: 57, cat: Console/XBox One, desc: "Microsoft - Xbox One"} + - {id: 27, cat: Console/Other, desc: "Neo Geo"} + - {id: 55, cat: Console/3DS, desc: "Nintendo - 3DS"} + - {id: 28, cat: Console/NDS, desc: "Nintendo - DS"} + - {id: 29, cat: Console/Other, desc: "Nintendo - Game Boy Advance"} + - {id: 30, cat: Console/Other, desc: "Nintendo - Gameboy"} + - {id: 31, cat: Console/Other, desc: "Nintendo - Gamecube "} + - {id: 33, cat: Console/Other, desc: "Nintendo - N64 "} + - {id: 35, cat: Console/Other, desc: "Nintendo - NES"} + - {id: 50, cat: Console/Other, desc: "Nintendo - SNES"} + - {id: 63, cat: Console/Other, desc: "Nintendo - Switch"} + - {id: 37, cat: Console/Wii, desc: "Nintendo - Wii"} + - {id: 59, cat: Console/WiiU, desc: "Nintendo - Wii U"} + - {id: 53, cat: PC/Games, desc: "PC - DOS"} + - {id: 64, cat: PC/Games, desc: "PC - Linux"} + - {id: 39, cat: PC/Mac, desc: "PC - Mac OS X"} + - {id: 40, cat: PC/Games, desc: "PC - Windows"} + - {id: 41, cat: Console/Other, desc: "Sega"} + - {id: 42, cat: Console/Other, desc: "Sega - Dreamcast"} + - {id: 43, cat: Console/Other, desc: "Sega - Megadrive"} + - {id: 44, cat: Console/Other, desc: "Sony - Playstation"} + - {id: 45, cat: Console/Other, desc: "Sony - Playstation 2"} + - {id: 46, cat: Console/PS3, desc: "Sony - Playstation 3"} + - {id: 56, cat: Console/PS4, desc: "Sony - Playstation 4"} + - {id: 47, cat: Console/PSP, desc: "Sony - Playstation Portable "} + - {id: 58, cat: Console/PS Vita, desc: "Sony - Playstation Vita"} + + modes: + search: [q] + book-search: [q] + allowrawsearch: true + +settings: + - name: username + type: text + label: Username + - name: password + type: password + label: Password + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: sort + type: select + label: Sort requested from site + default: 4 + options: + 4: created + 7: seeders + 5: size + 1: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + +login: + path: takelogin.php + method: post + inputs: + username: "{{ .Config.username }}" + password: "{{ .Config.password }}" + error: + - selector: td:has(:contains("Login failed")) + test: + path: my.php + selector: a[href^="logout.php"] + +search: + paths: + - path: browse.php + inputs: + search: "{{ .Keywords }}" + # multi-cat search appears to be broken on site + category: 0 + # 0: name, 1: descr, 2: both + blah: 0 + # 0: include dead, 1: alive, 2: dead, 3: freeleech + incldead: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}" + sort: "{{ .Config.sort }}" + type: "{{ .Config.type }}" + + rows: + selector: .outer > form > table > tbody > tr:has(a[href^="download.php"]) + + fields: + category: + selector: a[href^="browse.php?cat="] + attribute: href + filters: + - name: querystring + args: cat + title: + selector: a[href^="details.php"][title] + attribute: title + details: + selector: a[href^="details.php"] + attribute: href + download: + selector: a[href^="download.php"] + attribute: href + date: + # several old torrents with `0000-00-00 00:00:00` dates + selector: td:nth-child(5):not(:contains("000-00-0000:00:00")) + filters: + - name: append + args: " +00:00" # GMT + - name: dateparse + args: "yyyy-MM-ddHH:mm:ss zzz" + optional: true + default: now + size: + selector: td:nth-child(6) + seeders: + selector: td:nth-child(10) + leechers: + selector: td:nth-child(11) + grabs: + selector: td:nth-child(7) + downloadvolumefactor: + case: + img[src*="/freeleech.png"]: 0 + "*": 1 + minimumratio: + text: 1.0 + minimumseedtime: + # 2 days (as seconds = 2 x 24 x 60 x 60) + text: 172800 +# engine n/a diff --git a/mock-htpc/prowlarr/Definitions/bithumen.yml b/mock-htpc/prowlarr/Definitions/bithumen.yml index d1a6689..bb17fca 100644 --- a/mock-htpc/prowlarr/Definitions/bithumen.yml +++ b/mock-htpc/prowlarr/Definitions/bithumen.yml @@ -1,7 +1,7 @@ --- id: bithumen name: BitHUmen -description: "BitHUmen is a Hungarian Private site for TV / MOVIES / GENERAL" +description: "BitHUmen is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL" language: hu-HU type: private encoding: ISO-8859-2 @@ -48,44 +48,61 @@ caps: music-search: [q] book-search: [q] +settings: + - name: cookie + type: text + label: Cookie + - name: info_cookie + type: info_cookie + - name: sort + type: select + label: Sort requested from site + default: added + options: + added: 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: "If you do not visit the site for 1 year, you will be banned for inactivity. The permanent deletion of your account after the ban is 2 years." + login: - path: takelogin.php - method: post + method: cookie inputs: - username: "{{ .Config.username }}" - password: "{{ .Config.password }}" - error: - - selector: td.embedded:has(h2:contains("bejelentkezés")) + cookie: "{{ .Config.cookie }}" test: - path: browse.php - selector: a[href*="logout.php"] + path: index.php + selector: a[href^="/logout.php?"] search: paths: - path: browse.php inputs: $raw: "{{ range .Categories }}c{{.}}=1&{{end}}" - search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search - incldead: 1 + search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" + onlytitle: "{{ if .Query.IMDBID }}{{ else }}yes{{ end }}" + sort: "{{ .Config.sort }}" + d: "{{ .Config.type }}" rows: selector: table#torrenttable > tbody > tr:has(a[href^="details.php?id="]) - filters: - - name: andmatch fields: -# download button can be disbled in the profile, use details link instead -# download: -# selector: a[href^="download.php/"] -# attribute: href - download: - selector: a[href^="details.php?id="] + category: + selector: a[href^="?cat="] attribute: href filters: - - name: replace - args: ["details.php?id=", "download.php/"] - - name: append - args: "/invalid.torrent" + - name: querystring + args: cat title_default: selector: a[href^="details.php?id="] title: @@ -96,21 +113,30 @@ search: details: selector: a[href^="details.php?id="] attribute: href - imdbid: - selector: a[href*="imdb.com/title/tt"] + # download button can be disabled in the profile, use details link instead + download: + selector: a[href^="details.php?id="] attribute: href + filters: + - name: replace + args: ["details.php?id=", "download.php/"] + - name: append + args: "/invalid.torrent" poster: selector: a[onmouseover^="bithumen.UI.images.coverShow"] attribute: onmouseover filters: - name: regexp args: "\"(.*?)\"" - category: - selector: a[href^="?cat="] + imdbid: + selector: a[href*="imdb.com/title/tt"] attribute: href - filters: - - name: querystring - args: cat + size: + selector: td:nth-child(6) > u + files: + selector: td:nth-child(3) + grabs: + selector: td:nth-child(7) seeders: selector: td:nth-child(8) leechers: @@ -118,21 +144,19 @@ search: filters: - name: regexp args: /\s*([\d,]+) - grabs: - selector: td:nth-child(7) - files: - selector: td:nth-child(3) - size: - selector: td:nth-child(6) > u + genre: + selector: span:has(a[href^="browse.php?genre="]) downloadvolumefactor: text: 0 uploadvolumefactor: selector: td:nth-child(5) > nobr > font:contains(" × ") optional: true default: 1 - filters: - - name: replace - args: ["×", ""] + minimumseedtime: + # 1 day (as seconds = 24 x 60 x 60) + text: 86400 + description: + selector: td:nth-child(2) > div date_year: selector: td:nth-child(5):contains('.') optional: true @@ -155,6 +179,4 @@ search: args: ["tegnap", "yesterday"] date: text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}" - description: - selector: td:nth-child(2) > div # engine tbd diff --git a/mock-htpc/prowlarr/Definitions/bitmagnet.yml b/mock-htpc/prowlarr/Definitions/bitmagnet.yml index eb06d0c..79dfb77 100644 --- a/mock-htpc/prowlarr/Definitions/bitmagnet.yml +++ b/mock-htpc/prowlarr/Definitions/bitmagnet.yml @@ -49,8 +49,8 @@ search: t: "{{ .Query.Type }}" q: "{{ .Keywords }}" cat: "{{ join .Categories \",\" }}" - imdbId: "{{ .Query.IMDBIDShort }}" - tmdbId: "{{ .Query.TMDBID }}" + imdbid: "{{ .Query.IMDBIDShort }}" + tmdbid: "{{ .Query.TMDBID }}" season: "{{ .Query.Season }}" ep: "{{ .Query.Ep }}" limit: 100 diff --git a/mock-htpc/prowlarr/Definitions/bitpalace.yml b/mock-htpc/prowlarr/Definitions/bitpalace.yml index 01283af..902a50b 100644 --- a/mock-htpc/prowlarr/Definitions/bitpalace.yml +++ b/mock-htpc/prowlarr/Definitions/bitpalace.yml @@ -1,7 +1,7 @@ --- id: bitpalace name: Bitpalace -description: "Bitpalace is a Hungarian Private Torrent Tracker for MOVIES / TV / GENERAL" +description: "Bitpalace is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL" language: hu-HU type: private encoding: UTF-8 @@ -35,10 +35,10 @@ caps: - {id: 3, cat: Movies/SD, desc: "XVID HUN"} - {id: 12, cat: XXX/DVD, desc: "XXX DVD-R"} - {id: 6, cat: XXX/x264, desc: "XXX HD"} - - {id: 10, cat: XXX/ImageSet, desc: "XXX/Képek"} + - {id: 10, cat: XXX/ImageSet, desc: "XXX KÉPEK"} - {id: 11, cat: XXX/XviD, desc: "XXX XVID"} - {id: 19, cat: Audio/Video, desc: "ZENE Klipp"} - - {id: 26, cat: Audio/MP3, desc: "ZENE MP3"} + - {id: 20, cat: Audio/MP3, desc: "ZENE MP3"} modes: search: [q] diff --git a/mock-htpc/prowlarr/Definitions/bitporn.yml b/mock-htpc/prowlarr/Definitions/bitporn.yml index 3162b03..e620367 100644 --- a/mock-htpc/prowlarr/Definitions/bitporn.yml +++ b/mock-htpc/prowlarr/Definitions/bitporn.yml @@ -1,7 +1,7 @@ --- id: bitporn -name: BitPorn -description: "BitPorn is a HUNGARIAN Private Torrent Tracker for 3X" +name: BitPorn (API) +description: "BitPorn (Malacka) is a HUNGARIAN Private Torrent Tracker for 3X" language: hu-HU type: private encoding: UTF-8 @@ -10,67 +10,68 @@ links: caps: categorymappings: - - {id: 418, cat: XXX, desc: "Amateur"} - - {id: 410, cat: XXX, desc: "Anal"} - - {id: 414, cat: XXX, desc: "Animal"} - - {id: 415, cat: XXX, desc: "Asian"} - - {id: 416, cat: XXX, desc: "BBW"} - - {id: 417, cat: XXX, desc: "BDSM"} - - {id: 419, cat: XXX, desc: "Big Ass"} - - {id: 420, cat: XXX, desc: "Big Tits"} - - {id: 421, cat: XXX, desc: "Black"} - - {id: 447, cat: XXX, desc: "Cartoon"} - - {id: 448, cat: XXX, desc: "Casting"} - - {id: 422, cat: XXX, desc: "Classic"} - - {id: 434, cat: XXX, desc: "Collection"} - - {id: 423, cat: XXX, desc: "Creampie"} - - {id: 424, cat: XXX, desc: "Cumshot"} - - {id: 451, cat: XXX, desc: "Deepthroat"} - - {id: 455, cat: XXX, desc: "Extreme"} - - {id: 460, cat: XXX, desc: "Fansite"} - - {id: 454, cat: XXX, desc: "Family"} - - {id: 425, cat: XXX, desc: "Feature"} - - {id: 426, cat: XXX, desc: "Fetish"} - - {id: 457, cat: XXX, desc: "Fisting"} - - {id: 453, cat: XXX, desc: "Gangbang"} - - {id: 459, cat: XXX, desc: "Game"} - - {id: 427, cat: XXX, desc: "Gay / Bi"} - - {id: 412, cat: XXX, desc: "Hair"} - - {id: 411, cat: XXX, desc: "Hardcore"} - - {id: 456, cat: XXX, desc: "HiddenCam"} - - {id: 428, cat: XXX, desc: "Homemade"} - - {id: 429, cat: XXX, desc: "Interracial"} - - {id: 430, cat: XXX, desc: "Lesbian"} - - {id: 431, cat: XXX, desc: "Magyar"} - - {id: 432, cat: XXX, desc: "Masturbation"} - - {id: 433, cat: XXX, desc: "Mature"} - - {id: 435, cat: XXX, desc: "Milf"} - - {id: 436, cat: XXX, desc: "Old and Young"} - - {id: 437, cat: XXX, desc: "Parody"} - - {id: 449, cat: XXX, desc: "Pictures"} - - {id: 438, cat: XXX, desc: "Pissing"} - - {id: 439, cat: XXX, desc: "POV"} - - {id: 440, cat: XXX, desc: "Pregnant"} - - {id: 452, cat: XXX, desc: "Public"} - - {id: 441, cat: XXX, desc: "Shemale"} - - {id: 442, cat: XXX, desc: "Softcore"} - - {id: 443, cat: XXX, desc: "Squirt"} - - {id: 444, cat: XXX, desc: "Straight"} - - {id: 445, cat: XXX, desc: "Teen"} - - {id: 450, cat: XXX, desc: "Threesome"} - - {id: 446, cat: XXX, desc: "VR"} - - {id: 458, cat: XXX, desc: "Uncategorized"} + - {id: 4, cat: XXX, desc: Amateur"} + - {id: 5, cat: XXX, desc: Anal"} + - {id: 6, cat: XXX, desc: Asian"} + - {id: 7, cat: XXX, desc: BBW"} + - {id: 8, cat: XXX, desc: BDSM"} + - {id: 9, cat: XXX, desc: Big Ass"} + - {id: 10, cat: XXX, desc: Big Tits"} + - {id: 11, cat: XXX, desc: Black"} + - {id: 12, cat: XXX, desc: Cartoon"} + - {id: 13, cat: XXX, desc: Casting"} + - {id: 14, cat: XXX, desc: Classic"} + - {id: 15, cat: XXX, desc: Collection"} + - {id: 16, cat: XXX, desc: Creampie"} + - {id: 17, cat: XXX, desc: Cumshot"} + - {id: 18, cat: XXX, desc: Deepthroat"} + - {id: 19, cat: XXX, desc: Extreme"} + - {id: 20, cat: XXX, desc: Fansite"} + - {id: 21, cat: XXX, desc: Family"} + - {id: 22, cat: XXX, desc: Feature"} + - {id: 23, cat: XXX, desc: Fetish"} + - {id: 24, cat: XXX, desc: Fisting"} + - {id: 25, cat: XXX, desc: Gangbang"} + - {id: 26, cat: XXX, desc: Game"} + - {id: 27, cat: XXX, desc: Gay / Bi"} + - {id: 28, cat: XXX, desc: Hair"} + - {id: 29, cat: XXX, desc: Hardcore"} + - {id: 30, cat: XXX, desc: HiddenCam"} + - {id: 31, cat: XXX, desc: Homemade"} + - {id: 32, cat: XXX, desc: Interracial"} + - {id: 33, cat: XXX, desc: Lesbian"} + - {id: 34, cat: XXX, desc: Magyar"} + - {id: 35, cat: XXX, desc: Masturbation"} + - {id: 36, cat: XXX, desc: Mature"} + - {id: 37, cat: XXX, desc: Milf"} + - {id: 53, cat: XXX, desc: Movie"} + - {id: 38, cat: XXX, desc: Old and Young"} + - {id: 39, cat: XXX, desc: Parody"} + - {id: 40, cat: XXX, desc: Pictures"} + - {id: 41, cat: XXX, desc: Pissing"} + - {id: 42, cat: XXX, desc: POV"} + - {id: 43, cat: XXX, desc: Pregnant"} + - {id: 44, cat: XXX, desc: Public"} + - {id: 45, cat: XXX, desc: Shemale"} + - {id: 46, cat: XXX, desc: Softcore"} + - {id: 47, cat: XXX, desc: Squirt"} + - {id: 48, cat: XXX, desc: Straight"} + - {id: 49, cat: XXX, desc: Teen"} + - {id: 50, cat: XXX, desc: Threesome"} + - {id: 51, cat: XXX, desc: VR"} + - {id: 52, cat: XXX, desc: Uncategorized"} modes: search: [q] settings: - - name: username + - name: apikey type: text - label: Username - - name: password - type: password - label: Password + label: APIKey + - name: info_key + type: info + label: About your API key + default: "Find or Generate a new API Token by accessing your BitPorn account My Settings page and clicking on the API Key tab." - name: freeleech type: checkbox label: Search freeleech only @@ -78,12 +79,12 @@ settings: - name: sort type: select label: Sort requested from site - default: 4 + default: created_at options: - 4: created - 7: seeders - 5: size - 1: title + created_at: created + seeders: seeders + size: size + name: title - name: type type: select label: Order requested from site @@ -91,121 +92,103 @@ settings: options: desc: desc asc: asc - - name: info_tpp - type: info - label: Results Per Page - default: For best results, change the Torrents per page: setting to 100 on your account profile. - name: info_activity type: info label: Account Inactivity - default: "Inactive accounts will be deleted based on the following rules:" + default: "You must log in to the site at least once a month; otherwise, your account will be suspended." login: - path: takelogin.php - method: post - inputs: - secret: "" - username: "{{ .Config.username }}" - password: "{{ .Config.password }}" + path: /api/torrents + method: get error: - - selector: td.embedded:has(h2:contains("Bejelentkezés sikertelen!")) - test: - path: index.php - selector: a[href="logout.php"] + - selector: a[href*="/login"] + message: + text: "The API key was not accepted by {{ .Config.sitelink }}." + - selector: :root:contains("Account is Banned") search: paths: - - path: torrents.php + # https://hdinnovations.github.io/UNIT3D/torrent_api.html + # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657 + - path: api/torrents/filter + response: + type: json + + headers: + Authorization: ["Bearer {{ .Config.apikey }}"] + inputs: - $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" - search: "{{ .Keywords }}" - # 0 incldead, 1 active, 2 dead - incldead: 0 - # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% - spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" - # 0 title, 1 descr, 3 uploader, 4 imdburl - search_area: 0 - # 0 AND, 2 exact - search_mode: 0 - sort: "{{ .Config.sort }}" - type: "{{ .Config.type }}" - notnewword: 1 + # 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 }}" + "free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}" + sortField: "{{ .Config.sort }}" + sortDirection: "{{ .Config.type }}" + perPage: 100 + + keywordsfilters: + - name: re_replace + args: ["\\.", " "] rows: - selector: table.torrents > tbody > tr:has(a[href^="details.php?id="]) + selector: data + attribute: attributes fields: category: - selector: a[href^="?cat="] - attribute: href - filters: - - name: querystring - args: cat - title_default: - selector: a[href^="details.php?id="] + selector: category_id title: - selector: a[title][href^="details.php?id="] - attribute: title - optional: true - default: "{{ .Result.title_default }}" + selector: name details: - selector: a[href^="details.php?id="] - attribute: href + selector: details_link download: - selector: a[href^="download.php?id="] - attribute: href - poster: - selector: img[data-src] - attribute: data-src - date_elapsed: - # time type: time elapsed (default) - selector: td.rowfollow:nth-child(4) > span[title] - attribute: title - optional: true - filters: - - name: append - args: " +01:00" # CET - - name: dateparse - args: "yyyy-MM-dd HH:mm:ss zzz" - date_added: - # time added - selector: td.rowfollow:nth-child(4):not(:has(span)) - optional: true - filters: - - name: append - args: " +01:00" # CET - - name: dateparse - args: "yyyy-MM-ddHH:mm:ss zzz" - date: - text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" - size: - selector: td.rowfollow:nth-child(5) + selector: download_link + files: + selector: num_file seeders: - selector: td.rowfollow:nth-child(6) + selector: seeders leechers: - selector: td.rowfollow:nth-child(7) + selector: leechers grabs: - selector: td.rowfollow:nth-child(8) + 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 + _featured: + selector: featured + case: + False: "{{ .False }}" + True: "{{ .True }}" + downloadvolumefactor_freeleech: + # 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 downloadvolumefactor: + text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}" + uploadvolumefactor_double_upload: + # api returns False, True + selector: double_upload case: - img.pro_free: 0 - img.pro_free2up: 0 - img.pro_50pctdown: 0.5 - img.pro_50pctdown2up: 0.5 - img.pro_30pctdown: 0.3 - "*": 1 + False: 1 # normal + True: 2 # double uploadvolumefactor: - case: - img.pro_50pctdown2up: 2 - img.pro_free2up: 2 - img.pro_2up: 2 - "*": 1 + text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}" minimumratio: text: 1.0 minimumseedtime: # 48 hours (as seconds = 2 x 24 x 60 x 60) text: 172800 - description: - selector: td.rowfollow:nth-child(2) - remove: a, b, font, img, span -# NexusPHP v1.8.5 2023-07-06 +# json UNIT3D 9.1.7 (custom) diff --git a/mock-htpc/prowlarr/Definitions/bitsearch.yml b/mock-htpc/prowlarr/Definitions/bitsearch.yml index 0a22788..0852e3e 100644 --- a/mock-htpc/prowlarr/Definitions/bitsearch.yml +++ b/mock-htpc/prowlarr/Definitions/bitsearch.yml @@ -1,47 +1,68 @@ --- id: bitsearch +replaces: + - solidtorrents name: BitSearch -description: "BitSearch is a Public torrent meta-search engine" +description: "BitSearch (Solid Torrents) is a Public torrent meta-search engine" language: en-US type: public encoding: UTF-8 -requestDelay: 2 links: - https://bitsearch.to/ + - https://solidtorrents.to/ legacylinks: - https://bitsearch.nocensor.cloud/ - https://bitsearch.mrunblock.bond/ + - https://solidtorrents.net/ + - https://solidtorrents.nocensor.cloud/ + - https://solidtorrents.eu/ caps: categories: + Anime: TV/Anime + Anime/Dub/Dual Audio: TV/Anime + Anime/Raw: TV/Anime + Anime/Subbed: TV/Anime AudioBook: Audio/Audiobook - eBook: Books/EBook - "Ebook/Course": Books/EBook - Games: PC/Games - "Games/PC": PC/Games + Books: Books + Books/Academic: Books/EBook + Books/Comics: Books/Comics + Books/Fiction: Books/EBook + Books/Magazines: Books/Mags + Books/Non-fiction: Books/EBook + Ebook/Course: Books/EBook + Games: Console + Games/Console: Console + Games/Mobile: PC/Mobile-Other + Games/PC: PC/Games + Games/RIP: PC/Games Movies: Movies + Movies/Dub/Dual Audio: Movies Music: Audio - "Music/Album": Audio - "Music/mp3": Audio/MP3 - "Music/Lossless": Audio/Lossless - "Music/Video": Audio/Video + Music/Album: Audio + Music/Discography: Audio + Music/FLAC: Audio/Lossless + Music/Lossless: Audio/Lossless + Music/MP3: Audio/MP3 + Music/Single: Audio Other: Other - "Other/Android": PC/Mobile-Android - "Other/Archive": Other - "Other/Audio": Audio - "Other/Database": PC - "Other/DiskImage": PC/ISO - "Other/Document": Books/Comics - "Other/Image": Other/Misc - "Other/Program": PC/0day - "Other/Sourcecode": PC - "Other/Source Code": PC - "Other/Video": Other + Other/Android: PC/Mobile-Android + Other/Archive: Other + Other/Audio: Audio + Other/Database: PC + Other/DiskImage: PC/ISO + Other/Document: Books/Comics + Other/Image: Other/Misc + Other/Program: PC + Other/Source Code: PC + Other/Video: TV Softwares: PC/0day - "Softwares/Windows": PC/0day + Softwares/Android: PC/Mobile-Android + Softwares/Linux: PC + Softwares/MacOS: PC/Mac + Softwares/Windows: PC/0day + Softwares/iOS: PC/Mobile-iOS TV: TV - Unknown: Other - XXX: XXX modes: search: [q] @@ -51,139 +72,73 @@ caps: book-search: [q] settings: - - name: prefer_magnet_links - type: checkbox - label: Prefer Magnet Links - default: false - name: sort type: select - label: Sort requested from site - default: date + label: Sort requested from site. + default: created options: - date: created + created: created seeders: seeders size: size - name: type type: select - label: Order requested from site + label: Order requested from site. default: desc options: desc: desc asc: asc - - name: info_category_8000 - type: info - label: About BitSearch Categories - default: BitSearch does not properly return categories in its search results for some releases.
To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category. + +download: + selectors: + - selector: a[href^="magnet:?xt"] + attribute: href search: paths: - # https://bitsearch.to/search?q=&sort=date&order=desc - - path: search - inputs: - q: "{{ .Keywords }}" - sort: "{{ .Config.sort }}" - order: "{{ .Config.type }}" - limit: 100 - page: 1 + # https://bitsearch.to/search?q=spongebob&sortBy=created&order=desc&page=1 + - path: "{{ if .Keywords }}search?q={{ .Keywords }}&sortBy={{ .Config.sort }}&order={{ .Config.type }}&page=1{{ else }}latest{{ end }}" keywordsfilters: - name: re_replace args: ["\\.", " "] rows: - selector: div.search-result:has(a.dl-torrent), li.search-result:has(a.dl-torrent) + selector: div.space-y-4 > div.bg-white > div.items-start fields: category: - selector: a.category + # latest, search + selector: div.space-y-2 > span:nth-child(1), span.space-x-1:nth-child(1) title: - selector: h5 a + selector: h3 > a details: - selector: h5 a + selector: h3 > a attribute: href - download_optional: - selector: a.dl-torrent - attribute: href - optional: true download: - text: "{{ if .Config.prefer_magnet_links }}{{ else }}{{ .Result.download_optional }}{{ end }}" - optional: true - magnet: - selector: a[href^="magnet:?xt"] + selector: h3 > a attribute: href - infohash: - selector: a[href^="magnet:?xt"] - attribute: href - filters: - - name: regexp - args: ([A-F|a-f|0-9]{40}) - grabs_dot: - selector: div.stats div:has(img[alt="Download"]):contains(".") - optional: true - filters: - - name: replace - args: [".", ""] - - name: replace - args: ["K", "00"] - - name: replace - args: ["M", "00000"] - grabs_nodot: - selector: div.stats div:has(img[alt="Download"]):not(:contains(".")) - optional: true - filters: - - name: replace - args: ["K", "000"] - - name: replace - args: ["M", "000000"] - grabs: - text: "{{ if or .Result.grabs_dot .Result.grabs_nodot }}{{ or .Result.grabs_dot .Result.grabs_nodot }}{{ else }}0{{ end }}" size: - selector: div.stats div:has(img[alt="Size"]) - seeders_dot: - selector: div.stats div:has(img[alt="Seeder"]):contains(".") + selector: div.space-y-2 > span:nth-child(2), span.space-x-1:nth-child(2) + date_year: + selector: div.space-y-2 > span:nth-child(3):contains("/"), span.space-x-1:nth-child(3):contains("/") optional: true - filters: - - name: replace - args: [".", ""] - - name: replace - args: ["K", "00"] - - name: replace - args: ["M", "00000"] - seeders_nodot: - selector: div.stats div:has(img[alt="Seeder"]):not(:contains(".")) - optional: true - filters: - - name: replace - args: ["K", "000"] - - name: replace - args: ["M", "000000"] - seeders: - text: "{{ if or .Result.seeders_dot .Result.seeders_nodot }}{{ or .Result.seeders_dot .Result.seeders_nodot }}{{ else }}0{{ end }}" - leechers_dot: - selector: div.stats div:has(img[alt="Leecher"]):contains(".") - optional: true - filters: - - name: replace - args: [".", ""] - - name: replace - args: ["K", "00"] - - name: replace - args: ["M", "00000"] - leechers_nodot: - selector: div.stats div:has(img[alt="Leecher"]):not(:contains(".")) - optional: true - filters: - - name: replace - args: ["K", "000"] - - name: replace - args: ["M", "000000"] - leechers: - text: "{{ if or .Result.leechers_dot .Result.leechers_nodot }}{{ or .Result.leechers_dot .Result.leechers_nodot }}{{ else }}0{{ end }}" - date: - selector: div.stats div:has(img[alt="Date"]) filters: - name: dateparse - args: "MMM d, yyyy" + args: "M/d/yyyy" + date_ago: + selector: div.space-y-2 > span:nth-child(3):contains("ago"), span.space-x-1:nth-child(3):contains("ago") + optional: true + filters: + - name: timeago + date: + text: "{{ if or .Result.date_year .Result.date_ago }}{{ or .Result.date_year .Result.date_ago }}{{ else }}now{{ end }}" + seeders: + selector: div.space-x-3 > span:nth-child(1), span:contains("seeders") + leechers: + selector: div.space-x-3 > span:nth-child(2), span:contains("leechers") + grabs: + selector: span:contains("downloads") + optional: true downloadvolumefactor: text: 0 uploadvolumefactor: diff --git a/mock-htpc/prowlarr/Definitions/bitsexy-api.yml b/mock-htpc/prowlarr/Definitions/bitsexy-api.yml new file mode 100644 index 0000000..fb60ce4 --- /dev/null +++ b/mock-htpc/prowlarr/Definitions/bitsexy-api.yml @@ -0,0 +1,181 @@ +--- +id: bitsexy-api +name: BitSexy (API) +description: "BitSexy is a Private Torrent Tracker for 3X" +language: en-US +type: private +encoding: UTF-8 +links: + - https://bitsexy.cc/ + +caps: + categorymappings: + - {id: 1, cat: XXX/x264, desc: "Movies"} + - {id: 2, cat: XXX/Pack, desc: "Pack"} + - {id: 3, cat: XXX/ImageSet, desc: "Images"} + - {id: 4, cat: Console, desc: "Games"} + - {id: 5, cat: Books, desc: "Books"} + + modes: + search: [q] + movie-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 BitSexy account My Settings page and clicking on the API Key tab." + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: single_file_release_use_filename + type: checkbox + label: Use filename as title for single file releases + default: true + - 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: "