Files

200 lines
8.1 KiB
YAML

# yaml-language-server: $schema=./values.schema.json
image:
repository: ghcr.io/geek-cookbook/zurg
pullPolicy: IfNotPresent
tag: v0.9.3-hotfix.11@sha256:f3110e087387d0584700d43708121135f6b2880290711c682d9f817a0637a3f6
service:
main:
ports:
main:
port: 9999
targetPort: 9999
workload:
main:
podSpec:
containers:
main:
probes:
liveness:
type: tcp
readiness:
type: tcp
startup:
type: tcp
env:
# forces the use of env vars to be always used!
zurg_FORCE_ENV: "true"
# Set this to your rclone's mount `__all__` dir if using Zurg
LOG_LEVEL: DEBUG
zurg:
token: YOURTOKEN
persistence:
config:
enabled: true
mountPath: "/config"
data:
enabled: true
mountPath: "/app/data"
config-file:
enabled: true
type: configmap
objectName: config-file
mountPath: /config/config.yml
subPath: config.yml
items:
- key: config.yml
path: config.yml
plexupdate-file:
enabled: true
type: configmap
objectName: plexupdate-file
mountPath: /config/plex_update.sh
subPath: plex_update.sh
items:
- key: plex_update.sh
path: plex_update.sh
configmap:
config-file:
enabled: true
data:
config.yml: |
# Zurg configuration version
zurg: v1
token: {{ .Values.zurg.token }} # https://real-debrid.com/apitoken
# basic functionality
host: "[::]" # do not change this if you are running it inside a docker container
port: 9999 # do not change this if you are running it inside a docker container
concurrent_workers: 32
check_for_changes_every_secs: 10
# misc configs
retain_folder_name_extension: false # if true, zurg won't modify the filenames from real-debrid
retain_rd_torrent_name: true # if true, it will strictly follow RD API torrent name property w/c should make this more compatible with rdt-client
auto_delete_rar_torrents: true # if true, zurg will delete unstreamable rar files (these torrents will always be compressed in a rar archive no matter what files you select)
use_download_cache: false # if true, during zurg initialization, it will fetch all downloads to unrestrict links faster
# Disabled by default, causes Plex scanning to get stuck on in-progress files
enable_repair: false # Don't change this, we run a separate zurg for doing repairs without blocking i/o
on_library_update: sh plex_update.sh "$@"
ignore_renames: true
# advanced alternative for Jellyfin/Emby support
# on_library_update: |-
# # Log the updated directories and send refresh request to autoscan
# for arg in "$@"
# do
# echo "Detected update on: $arg"
# # URL encode the directory path
# encoded_arg=$(python -c "import urllib.parse; print(urllib.parse.quote_plus('$arg'))")
# curl -s -X GET "http://autoscan:3030/triggers/manual?dir=/storage/realdebrid-zurg/$encoded_arg"
# done
# echo "All updated sections refreshed."
# network configs
network_buffer_size: 1048576 # 1 MiB
serve_from_rclone: false # serve file data from rclone, not from zurg (zurg will only provide rclone the link to download)
verify_download_link: true # if true, zurg will check if the link is truly streamable; only relevant if serve_from_rclone is set to true (as it already does this all the time if serve_from_rclone is false)
force_ipv6: false # force connect to real-debrid ipv6 addresses
rate_limit_sleep_secs: 6 # wait time after getting a 429 from Real-Debrid API
realdebrid_timeout_secs: 60 # api timeout
retries_until_failed: 5 # api failures until considered failed
# preferred_hosts: # Run ./zurg network-test
# - 20.download.real-debrid.com
# - 21.download.real-debrid.com
# - 22.download.real-debrid.com
# - 23.download.real-debrid.com
# - 30.download.real-debrid.com
# - 31.download.real-debrid.com
# - 32.download.real-debrid.com
# - 34.download.real-debrid.com
# - 40.download.real-debrid.com
# List of directory definitions and their filtering rules
directories:
# Configuration for anime shows
anime:
group: media # directories on different groups have duplicates of the same torrent
group_order: 10 # group order = priority, it defines who eats first on a group
filters:
- and: # you can use nested 'and' & 'or' conditions
- has_episodes: true # intelligent detection of episode files inside a torrent
- any_file_inside_regex: /^\[/ # usually anime starts with [ e.g. [SubsPlease]
- any_file_inside_not_regex: /s\d\de\d\d/i # and usually anime doesn't use SxxExx
shows:
group: media
group_order: 20
filters:
- has_episodes: true # intelligent detection of episode files inside a torrent
movies:
group: media # because anime, shows and movies are in the same group,
group_order: 30 # and anime and shows has a lower group_order number than movies, all torrents that doesn't fall into the previous 2 will fall into movies
only_show_the_biggest_file: true # let's not show the other files besides the movie itself
filters:
- regex: /.*/ # you cannot leave a directory without filters because it will not have any torrents in it
plexupdate-file:
enabled: true
data:
plex_update.sh: |
#!/bin/bash
# PLEX PARTIAL SCAN script or PLEX UPDATE script
# When zurg detects changes, it can trigger this script IF your config.yml contains
# on_library_update: sh plex_update.sh "$@"
# Modified from https://github.com/debridmediamanager/zurg-testing/blob/main/plex_update.sh
plex_url="http://plex:32400" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400
token="yourplextoken" # open Plex in a browser, open dev console and copy-paste this: window.localStorage.getItem("myPlexAccessToken")
zurg_mount="/storage/realdebrid-zurg" # replace with your zurg mount path, ensure this is what Plex sees
# Get the list of section IDs
section_ids=$(curl -sLX GET "$plex_url/library/sections" -H "X-Plex-Token: $token" | xmllint --xpath "//Directory/@key" - | sed 's/key="//g' | tr '"' '\n')
for arg in "$@"
do
modified_arg="$zurg_mount/$arg"
echo "Detected update on: $arg"
echo "Absolute path: $modified_arg"
##### START Added by ElfHosted for auto DMM symlinking ###
echo "Symlinking $modified_arg to /storage/symlinks/real-debrid-blackhole/$arg"
# Ensure blackhole exists
mkdir -p /storage/symlinks/real-debrid-blackhole/movies
mkdir -p /storage/symlinks/real-debrid-blackhole/shows
# Copy to the RD blackhole, preserving the directory structure
cp -rs "$modified_arg/"* "/storage/symlinks/real-debrid-blackhole/$(echo $arg | cut -f1 -d/)/"
##### END Added by ElfHosted for auto DMM symlinking ###
encoded_arg=$(echo -n "$modified_arg" | python3 -c "import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))")
if [ -z "$encoded_arg" ]; then
echo "Error: Encoded argument is empty. Check the input or encoding process."
continue
fi
for section_id in $section_ids
do
final_url="${plex_url}/library/sections/${section_id}/refresh?path=${encoded_arg}&X-Plex-Token=${token}"
echo "Encoded argument: $encoded_arg"
echo "Section ID: $section_id"
echo "Final URL: $final_url"
curl -s "$final_url"
done
done
echo "All updated sections refreshed"
# credits to godver3