114 lines
2.8 KiB
Bash
Executable file
114 lines
2.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -ex
|
|
|
|
if [ "$1" == "--help" ]; then
|
|
echo "Usage: $0 [URL] [FORMAT] [EXTRA]"
|
|
echo "Formate: opus/flac/m4a/mp4/video/hd/fullhd/4k/bestaudio"
|
|
echo "Beispiel für Unterordner: -o '%(channel)s/%(playlist_title)s/%(title)s.%(ext)s'"
|
|
exit 0
|
|
fi
|
|
|
|
url="$1"
|
|
format="$2"
|
|
extra="$3"
|
|
|
|
# Abfragen für interaktive Eingaben
|
|
[[ -z "${url}" ]] && read -p "URL: " url
|
|
[[ -z "${format}" ]] && read -p "Format [opus/flac/m4a/mp4/video/hd/fullhd/4k/bestaudio]: " format
|
|
|
|
# Abfrage für Various Artists
|
|
read -p "Album als Playlist Title setzen? [Y/n] " title
|
|
if [[ "$title" != "n" ]]; then
|
|
album_metadata="--parse-metadata playlist_title:%(album)s"
|
|
fi
|
|
|
|
# Abfrage für Cookies
|
|
read -p "Cookies aus cookies.txt verwenden? [Y/n] " cookies
|
|
if [[ "$cookies" != "n" ]]; then
|
|
cookies_cmd="--cookies cookies.txt"
|
|
fi
|
|
|
|
# Abfrage für Unterordner-Struktur
|
|
read -p "Unterordner nach Kanal erstellen? [Y/n] " folders
|
|
if [[ "$folders" != "n" ]]; then
|
|
output_template="-o %(channel)s/%(title)s.%(ext)s"
|
|
fi
|
|
|
|
# Abfrage für Download-Archiv
|
|
read -p "Download-Archiv verwenden? [Y/n] " use_archive
|
|
if [[ "$use_archive" != "n" ]]; then
|
|
read -p "Dateiname für Download-Archiv angeben [download-archive.txt]: " archive_file
|
|
archive_file=${archive_file:-download-archive.txt}
|
|
archive_cmd="--download-archive $archive_file"
|
|
fi
|
|
|
|
# Abfrage für Playlist-Start
|
|
read -p "Ab welchem Playlist-Eintrag soll heruntergeladen werden? [Standard: 1]: " playlist_start
|
|
if [[ -n "$playlist_start" ]]; then
|
|
playlist_start_cmd="--playlist-start $playlist_start"
|
|
fi
|
|
|
|
# Format-Spezifikationen
|
|
case "$format" in
|
|
opus)
|
|
format_cmd="-f ba --audio-format opus --format-sort abr,codec"
|
|
audio="-x"
|
|
quality="--audio-quality 0"
|
|
;;
|
|
flac)
|
|
format_cmd="-f ba --audio-format flac --format-sort abr,codec"
|
|
audio="-x"
|
|
quality="--audio-quality 0"
|
|
;;
|
|
m4a)
|
|
format_cmd="--audio-format m4a"
|
|
audio="-x"
|
|
;;
|
|
mp4)
|
|
format_cmd="--audio-format mp4"
|
|
audio="-x"
|
|
;;
|
|
video)
|
|
format_cmd="-S res:480 -f bv+ba/b"
|
|
;;
|
|
hd)
|
|
format_cmd="-S res:720 -f bv+ba/b"
|
|
;;
|
|
fullhd)
|
|
format_cmd="-S res:1080 -f bv+ba/b"
|
|
;;
|
|
4k)
|
|
format_cmd="-S res:2160 -f bv+ba/b"
|
|
;;
|
|
bestaudio)
|
|
format_cmd="-f bestaudio"
|
|
;;
|
|
*)
|
|
format_cmd=""
|
|
audio=""
|
|
quality=""
|
|
;;
|
|
esac
|
|
|
|
# Hauptbefehl mit allen Optionen
|
|
yt-dlp \
|
|
-i \
|
|
-c \
|
|
--socket-timeout 10000 \
|
|
--force-ipv4 \
|
|
--restrict-filenames \
|
|
--embed-thumbnail \
|
|
--embed-metadata \
|
|
$album_metadata \
|
|
$cookies_cmd \
|
|
${output_template} \
|
|
--match-filter "!was_live" \
|
|
$format_cmd \
|
|
$audio \
|
|
$quality \
|
|
${archive_cmd} \
|
|
${playlist_start_cmd} \
|
|
-v \
|
|
"$url" \
|
|
${extra}
|