30 lines
706 B
Bash
30 lines
706 B
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "Usage: \$0 <url>" >&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"
|