franklybrad

u/bradfrank@programming.dev
0 posts · 8 comments

Recent posts

No posts.

Recent comments

on q who? · c/sigh_fi · 3 pts · 1y

I wish I had more than just internet points to award you. This was beautiful.

I do something very similar. Thanks for sharing cause there's always something to learn by seeing how someone else solved a problem. I'll share mine here too if that's cool:

#!/usr/bin/env bash

music() {
  case $(uname -s) in
    Darwin)
      yt-dlp --format bestaudio --extract-audio --audio-format mp3 \
        --postprocessor-args "-strict experimental" "$1" ;;
    Linux)
      yt-dlp --format bestaudio --extract-audio --audio-format mp3 "$1" ;;
  esac
}

video() {
  yt-dlp \
    --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" \
    --merge-output-format mp4 \
    -o "%(title)s.%(ext)s" "$1"
}

while getopts ':hm:v:' flag; do
  case "$flag" in
    h) echo "Usage: youtube [-m(usic) <url> | -v(ideo) <url>]" ; exit 0 ;;
    m) music "$OPTARG" ;;
    v) video "$OPTARG" ;;
    *) echo "Invalid argument." >&2 ; exit 1 ;;
  esac
done