Skip to content

Instantly share code, notes, and snippets.

@yahesh
Last active September 21, 2024 11:22
Show Gist options
  • Save yahesh/ad1eb0bee39de20f4a0ec0484c80feb4 to your computer and use it in GitHub Desktop.
Save yahesh/ad1eb0bee39de20f4a0ec0484c80feb4 to your computer and use it in GitHub Desktop.
yt-dlp
#!/usr/bin/env bash
# iterate through all parameters
while [[ "$#" -gt "0" ]]
do
# get the source and target
filename="$1"
targetpath="${filename%.*}"
# ensure that the provided filename exists
if [[ -f "$filename" ]]
then
# create the target path if it does not exist
if [[ ! -e "$targetpath" ]]
then
mkdir -p "$targetpath"
# keep exitcode
exitcode="$?"
# show an error message
if [[ "$exitcode" -ne "0" ]]
then
echo "FEHLER: Der Zielpfad konnte nicht erstellt werden." >&2
echo "FEHLER: Eingabedatei: $filename" >&2
echo "FEHLER: Zielpfad: $targetpath" >&2
echo "FEHLER: Exitcode: $exitcode" >&2
fi
fi
# ensure that the target path either does not exist or is a folder
if [[ -d "$targetpath" ]]
then
# download the video from Youtube and convert it to an MP3
yt-dlp --audio-format mp3 --audio-quality 0 --batch "$filename" --extract-audio --no-mtime --paths "$targetpath" --restrict-filenames
# keep exitcode
exitcode="$?"
# show an error message
if [[ "$exitcode" -ne "0" ]]
then
echo "FEHLER: Während der Verarbeitung ist ein Fehler aufgetreten." >&2
echo "FEHLER: Eingabedatei: $filename" >&2
echo "FEHLER: Zielpfad: $targetpath" >&2
echo "FEHLER: Exitcode: $exitcode" >&2
cat "$filename" >&2
fi
else
echo "FEHLER: Der Zielpfad existiert bereits und ist kein Ordner." >&2
echo "FEHLER: Eingabedatei: $filename" >&2
echo "FEHLER: Zielpfad: $targetpath" >&2
fi
else
echo "FEHLER: Die Eingabedatei existiert nicht." >&2
echo "FEHLER: Eingabedatei: $filename" >&2
echo "FEHLER: Zielpfad: $targetpath" >&2
fi
# move to the next parameter
shift
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment