#!/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 # 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 \ -v \ "$url" \ ${extra}