diff --git a/jackett/definitions/1337x.yml b/jackett/definitions/1337x.yml new file mode 100644 index 0000000..2f8bd72 --- /dev/null +++ b/jackett/definitions/1337x.yml @@ -0,0 +1,295 @@ +--- +id: 1337x +name: 1337x +description: "1337x is a Public torrent site that offers verified torrent downloads" +language: en-US +type: public +encoding: UTF-8 +requestDelay: 3 +# get status and news on domains at the official site https://1337x-status.org/ +links: + - https://1337x.to/ + - https://1337x.st/ + - https://x1337x.ws/ + - https://x1337x.eu/ + - https://x1337x.cc/ +legacylinks: + - https://1337x.is/ + - https://1337x.gd/ + - https://1337x.mrunblock.bond/ + - 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: + # Anime + - {id: 28, cat: TV/Anime, desc: "Anime/Anime"} + - {id: 78, cat: TV/Anime, desc: "Anime/Dual Audio"} + - {id: 79, cat: TV/Anime, desc: "Anime/Dubbed"} + - {id: 80, cat: TV/Anime, desc: "Anime/Subbed"} + - {id: 81, cat: TV/Anime, desc: "Anime/Raw"} + # Audio + - {id: 22, cat: Audio/MP3, desc: "Music/MP3"} + - {id: 23, cat: Audio/Lossless, desc: "Music/Lossless"} + - {id: 24, cat: Audio, desc: "Music/DVD"} + - {id: 25, cat: Audio/Video, desc: "Music/Video"} + - {id: 26, cat: Audio, desc: "Music/Radio"} + - {id: 27, cat: Audio/Other, desc: "Music/Other"} + - {id: 53, cat: Audio, desc: "Music/Album"} + - {id: 58, cat: Audio, desc: "Music/Box set"} + - {id: 59, cat: Audio, desc: "Music/Discography"} + - {id: 60, cat: Audio, desc: "Music/Single"} + - {id: 68, cat: Audio, desc: "Music/Concerts"} + - {id: 69, cat: Audio, desc: "Music/AAC"} + # Movies + - {id: 1, cat: Movies/DVD, desc: "Movies/DVD"} + - {id: 2, cat: Movies/SD, desc: "Movies/Divx/Xvid"} + - {id: 3, cat: Movies, desc: "Movies/SVCD/VCD"} + - {id: 4, cat: Movies/Foreign, desc: "Movies/Dubs/Dual Audio"} + - {id: 42, cat: Movies/HD, desc: "Movies/HD"} + - {id: 54, cat: Movies/HD, desc: "Movies/h.264/x264"} + - {id: 55, cat: Movies, desc: "Movies/Mp4"} + - {id: 66, cat: Movies/3D, desc: "Movies/3D"} + - {id: 70, cat: Movies/HD, desc: "Movies/HEVC/x265"} + - {id: 73, cat: Movies, desc: "Movies/Bollywood"} + - {id: 76, cat: Movies/UHD, desc: "Movies/UHD"} + # TV + - {id: 5, cat: TV, desc: "TV/DVD"} + - {id: 6, cat: TV, desc: "TV/Divx/Xvid"} + - {id: 7, cat: TV, desc: "TV/SVCD/VCD"} + - {id: 41, cat: TV/HD, desc: "TV/HD"} + - {id: 71, cat: TV, desc: "TV/HEVC/x265"} + - {id: 74, cat: TV, desc: "TV/Cartoons"} + - {id: 75, cat: TV/SD, desc: "TV/SD"} + - {id: 9, cat: TV/Documentary, desc: "TV/Documentary"} + # Apps + - {id: 18, cat: PC, desc: "Apps/PC Software"} + - {id: 19, cat: PC/Mac, desc: "Apps/Mac"} + - {id: 20, cat: PC, desc: "Apps/Linux"} + - {id: 21, cat: PC, desc: "Apps/Other"} + - {id: 56, cat: PC/Mobile-Android, desc: "Apps/Android"} + - {id: 57, cat: PC/Mobile-iOS, desc: "Apps/iOS"} + # Games + - {id: 10, cat: PC/Games, desc: "Games/PC Game"} + - {id: 11, cat: Console/PS3, desc: "Games/PS2"} + - {id: 12, cat: Console/PSP, desc: "Games/PSP"} + - {id: 13, cat: Console/XBox, desc: "Games/Xbox"} + - {id: 14, cat: Console/XBox 360, desc: "Games/Xbox360"} + - {id: 15, cat: Console/PS3, desc: "Games/PS1"} + - {id: 16, cat: Console/Other, desc: "Games/Dreamcast"} + - {id: 17, cat: PC/Mobile-Other, desc: "Games/Other"} + - {id: 43, cat: Console/PS3, desc: "Games/PS3"} + - {id: 44, cat: Console/Wii, desc: "Games/Wii"} + - {id: 45, cat: Console/NDS, desc: "Games/DS"} + - {id: 46, cat: Console/Other, desc: "Games/GameCube"} + - {id: 72, cat: Console/3DS, desc: "Games/3DS"} + - {id: 77, cat: Console/PS4, desc: "Games/PS4"} + - {id: 82, cat: Console/Other, desc: "Games/Switch"} + # XXX + - {id: 48, cat: XXX/DVD, desc: "XXX/Video"} + - {id: 49, cat: XXX/ImageSet, desc: "XXX/Picture"} + - {id: 50, cat: XXX, desc: "XXX/Magazine"} + - {id: 51, cat: XXX, desc: "XXX/Hentai"} + - {id: 67, cat: XXX, desc: "XXX/Games"} + # Other + - {id: 33, cat: Other, desc: "Other/Emulation"} + - {id: 34, cat: Books, desc: "Other/Tutorial"} + - {id: 35, cat: Other, desc: "Other/Sounds"} + - {id: 36, cat: Books/EBook, desc: "Other/E-books"} + - {id: 37, cat: Other, desc: "Other/Images"} + - {id: 38, cat: Other, desc: "Other/Mobile Phone"} + - {id: 39, cat: Books/Comics, desc: "Other/Comics"} + - {id: 40, cat: Other/Misc, desc: "Other/Other"} + - {id: 47, cat: Other, desc: "Other/Nulled Script"} + - {id: 52, cat: Audio/Audiobook, desc: "Other/Audiobook"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + music-search: [q] + book-search: [q] + 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 + type: select + label: Download link + default: "http://itorrents.org/" + options: + "http://itorrents.org/": iTorrents.org + "magnet:": magnet + - name: downloadlink2 + type: select + label: Download link (fallback) + default: "magnet:" + options: + "http://itorrents.org/": iTorrents.org + "magnet:": magnet + - name: info_download + type: info + label: About the Download links + default: As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.) + - name: disablesort + type: checkbox + label: Disable sorting - 1337x prevents sorting searches during high server load, which breaks the indexer when performing a keyword search - disable if you get zero results + default: false + - name: sort + type: select + label: Sort requested from site + default: time + options: + time: created + seeders: seeders + size: size + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + +download: + # the .torrent URL and magnet URI are on the details page + selectors: + - selector: ul li a[href^="{{ .Config.downloadlink }}"] + attribute: href + - selector: ul li a[href^="{{ .Config.downloadlink2 }}"] + attribute: href + +search: + paths: + # present first page of movies tv and music results if there are no search parms supplied (20 hits per page) + - path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/Movies{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/1/" + - path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/TV{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False)) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}2{{ else }}1{{ end }}/" + - path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/Music{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}3{{ else }}1{{ end }}/" + - path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/Other{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}4{{ else }}1{{ end }}/" + + keywordsfilters: + - name: re_replace # daily standard S2023 > 2023 + args: ["\\bS(20\\d{2})\\b", "$1"] + + rows: + selector: "tr:has(a[href^=\"/torrent/\"]){{ if .Config.uploader }}:has(td[class^=\"coll-5\"]:contains({{ .Config.uploader }})){{ else }}{{ end }}" + + fields: + title_default: + # the movies, tv and music pages abbreviate the title + selector: td[class^="coll-1"] a[href^="/torrent/"] + title_optional: + # the movies, tv and music pages abbreviate the title so we process the href instead. #8137 + optional: true + selector: td[class^="coll-1"] a[href^="/torrent/"]:contains("...") + attribute: href + filters: + - name: urldecode + - name: split + args: ["/", 3] + title: + # title_optional can be empty so use the title_default instead #8586 + text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}" + filters: + - name: re_replace + args: ["-([\\w]+(?:[\\[\\]\\(\\)\\w]+)?)$", "~$1"] + - name: replace + args: ["-", " "] + - name: re_replace + args: ["~([\\w]+(?:[\\[\\]\\(\\)\\w]+)?)$", "-$1"] + - name: replace + args: ["\u000f", ""] # get rid of unwanted character #6582 + # cleanup for Sonarr + - name: re_replace # EP 3 4 to E3-4 + args: ["(?i)\\sEP\\s(\\d{1,2})\\s(E?\\s?\\d{1,2})\\s", " E$1-$2 "] + - name: re_replace # S02E04 05 to S02E04-05 + args: ["(?i)([-_. ])S(\\d{1,2})\\s?E\\s?(\\d{1,2})\\s(E?\\s?\\d{1,2})([-_. ])", "$1S$2E$3-$4$5"] + - name: re_replace + args: ["(?i)AC3\\s?(\\d)\\s(\\d)", "AC3 $1.$2"] + - name: re_replace + args: ["(?i) DD\\s?(\\d)\\s(\\d)", " DD $1.$2"] + - name: re_replace + args: ["(?i) DDP\\s?(\\d)\\s(\\d)", " DDP $1.$2"] + - name: re_replace + args: ["(?i)\\sE\\s?AC3", " EAC3"] + - name: re_replace + args: ["(?i)WEB\\sDL", "WEB-DL"] + - name: re_replace + args: ["(?i)HDTVRIP", "HDTV"] + category_optional: + optional: true + selector: td[class^="coll-1"] a[href^="/sub/"] + attribute: href + filters: + # extract the third part + - name: split + args: ["/", 2] + category: + text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}40{{ end }}" + details: + selector: td[class^="coll-1"] a[href^="/torrent/"] + attribute: href + download: + # .torrent link is on the details page + selector: td[class^="coll-1"] a[href^="/torrent/"] + attribute: href + # dates come in three flavours: + date_year: + # (within this year) 7am Sep. 14th + optional: true + selector: td[class^="coll-date"]:not(:contains(":")):not(:contains("'")) + filters: + - name: re_replace + args: ["st|nd|rd|th", ""] + - name: dateparse + args: "htt MMM. d" + date_years: + # (more than a year ago) Apr. 18th '11 + optional: true + selector: td[class^="coll-date"]:contains("'") + filters: + - name: replace + args: ["'", ""] + - name: re_replace + args: ["st|nd|rd|th", ""] + - name: dateparse + args: "MMM. d yy" + date_today: + # (today) 12:25am + optional: true + selector: td[class^="coll-date"]:contains(":") + filters: + - name: fuzzytime + date: + text: "{{ if or .Result.date_year .Result.date_years .Result.date_today }}{{ or .Result.date_year .Result.date_years .Result.date_today }}{{ else }}now{{ end }}" + size: + selector: td[class^="coll-4"] + seeders: + 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: + text: 1 +# engine n/a diff --git a/jellyfin-compose.yaml b/jellyfin-compose.yaml index 4d7728d..5fbfee5 100644 --- a/jellyfin-compose.yaml +++ b/jellyfin-compose.yaml @@ -4,11 +4,14 @@ services: cap_add: - NET_ADMIN ports: + # - 8000:8000 - 8080:8080 - 51820:51820 - 51820:51820/udp - 46931:46931 - 46931:46931/udp + # - 8191:8191 # Flaresolverr + # - 9117:9117 # Jackett networks: - jellyfin-int env_file: .vpnenv @@ -32,9 +35,24 @@ services: volumes: - /data/jellyfin:/data/jellyfin - /data/jellyfin/gluetun:/tmp/gluetun - qbittorrent: - image: lscr.io/linuxserver/qbittorrent:latest + socks5: + image: serjs/go-socks5-proxy + restart: unless-stopped network_mode: service:gluetun + environment: + - REQUIRE_AUTH=false + depends_on: + - gluetun + qbittorrent: + # Previously was latest, trying older version since newest isn't working? + image: lscr.io/linuxserver/qbittorrent:5.1.4 + network_mode: service:gluetun + # ports: + # - 8080:8080 + # - 6881:6881 + # - 6881:6881/udp + # networks: + # - jellyfin-int environment: - WEBUI_PORT=8080 - PUID=0 @@ -45,17 +63,18 @@ services: - /data/jellyfin:/data/jellyfin - /data/jellyfin/configs/qbittorrent:/config # - /data/jellyfin/qbittorrent/downloads:/data/jellyfin/qbittorrent/downloads - # ports: - # - 8080:8080 - # - 6881:6881 - # - 6881:6881/udp - # networks: - # - jellyfin-int depends_on: - gluetun restart: unless-stopped flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest + network_mode: service:gluetun + depends_on: + - gluetun + # networks: + # - jellyfin-int + # ports: + # - 8191:8191 environment: - LOG_LEVEL=${LOG_LEVEL:-info} - LOG_HTML=${LOG_HTML:-false} @@ -65,10 +84,6 @@ services: #- LANG=en_US # volumes: # - /tmp/flaresolver:/tmp - ports: - - 8191:8191 - networks: - - jellyfin-int restart: unless-stopped prowlarr: image: lscr.io/linuxserver/prowlarr:latest @@ -85,6 +100,14 @@ services: restart: unless-stopped jackett: image: lscr.io/linuxserver/jackett:latest + network_mode: service:gluetun + depends_on: + - socks5 + - flaresolverr + # networks: + # - jellyfin-int + # ports: + # - 9117:9117 environment: - PUID=0 - PGID=0 @@ -92,10 +115,6 @@ services: # - RUN_OPTS=-l -t volumes: - /data/jellyfin/configs/jackett:/config - ports: - - 9117:9117 - networks: - - jellyfin-int restart: unless-stopped sonarr: image: lscr.io/linuxserver/sonarr:latest @@ -130,7 +149,8 @@ services: - jellyfin-int restart: unless-stopped jellyfin: - image: lscr.io/linuxserver/jellyfin:latest + image: ghcr.io/jellyfin/jellyfin:latest + # image: lscr.io/linuxserver/jellyfin:latest environment: - PUID=0 - PGID=0 diff --git a/nginx/sites-enabled/servarr b/nginx/sites-enabled/servarr index 4e6d5a8..510986c 100644 --- a/nginx/sites-enabled/servarr +++ b/nginx/sites-enabled/servarr @@ -65,7 +65,8 @@ server { location ^~ /jackett/ { include /etc/nginx/snippets/authelia-authrequest.conf; add_header Content-Security-Policy "default-src https: data: blob: ; img-src 'self' https://* ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.gstatic.com https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'; font-src 'self'"; - proxy_pass http://jackett:9117; + # proxy_pass http://jackett:9117; + proxy_pass http://gluetun:9117; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host;