Files
profile/.rc.d/yt-dlp.sh

56 lines
1.4 KiB
Bash

# Define yt-dlp functions with dynamic JavaScript runtime (Node.js) detection
yt-dlp() {
local _cmd="yt-dlp"
if ! command -v yt-dlp >/dev/null 2>&1; then
if [ -x "/opt/homebrew/bin/yt-dlp" ]; then
_cmd="/opt/homebrew/bin/yt-dlp"
elif [ -x "/usr/local/bin/yt-dlp" ]; then
_cmd="/usr/local/bin/yt-dlp"
elif [ -x "$HOME/.local/bin/yt-dlp" ]; then
_cmd="$HOME/.local/bin/yt-dlp"
else
echo "yt-dlp: command not found" >&2
return 127
fi
fi
if command -v node >/dev/null 2>&1; then
command $_cmd --js-runtimes "node:$(command -v node)" "$@"
else
command $_cmd "$@"
fi
}
yt-dlp-best() {
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]" "$@"
}
yt-dlp-audio-meta() {
yt-dlp \
-f "ba[ext=m4a]/ba" \
-x --audio-format m4a \
--embed-metadata --embed-thumbnail \
"$@"
}
yt-dlp-formats() {
yt-dlp -F "$@"
}
yt-dlp-playlist-audio() {
yt-dlp \
--yes-playlist \
--embed-metadata --embed-thumbnail \
-f "ba[ext=m4a]/ba" \
-o "%(playlist_title,playlist_id)s/%(playlist_index)03d - %(title)s.%(ext)s" \
"$@"
}
yt-dlp-playlist() {
yt-dlp \
--yes-playlist \
--embed-metadata --embed-thumbnail \
-o "%(playlist_title,playlist_id)s/%(playlist_index)03d - %(title)s.%(ext)s" \
"$@"
}