#!/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}