#!/bin/bash set -euo pipefail if [ $# -eq 0 ]; then echo "Usage: \$0 " >&2 exit 1 fi url="$1" dir="/media/startos/data/package-data/volumes/filebrowser/data/data/jellyfin/Movies/" # Extract basename, drop query strings/fragments filename="${url##*/}" filename="${filename%%\?*}" filename="${filename%%\#*}" # Safely decode only valid %XX sequences decoded="$filename" while [[ "$decoded" =~ %([0-9A-Fa-f]{2}) ]]; do hex="${BASH_REMATCH[1]}" chr=$(printf '%b' "\\x$hex") decoded="${decoded//${BASH_REMATCH[0]}/$chr}" done cd "$dir" || { echo "Failed to cd to $dir" >&2; exit 1; } echo "Downloading: $decoded" sudo wget -O "$decoded" "$url" sudo chown kiosk:startos "$decoded"