#! /bin/zsh [ ! -z "$2" ] && url="$2" \ || url=$(printf '%s' "$(xclip -o -sel c)") [[ "$url" != *'http://'* ]] && [[ "$url" != 'https://'* ]] && exit 1 CHOICES=('Play' 'Record' 'Clip' 'Download' 'aDownload' 'Open' 'Clipboard') [ ! -z "$1" ] && selected="$1" \ || selected="$(echo "${CHOICES[@]}" | tr ' ' '\n' | dmenu -i)" case "$selected" in "${CHOICES[1]}") [[ "$url" = *"&list="* ]] && playlist="$(echo "$url" | awk -F '&list=' '{print $2}')" \ && url="https://www.youtube.com/playlist?list=$playlist" setsid -f mpv "$url" > /dev/null 2>&1 ;; "${CHOICES[2]}") setsid -f mpv --stream-record="$HOME/$(date '+%Y-%m-%d—%T.mkv')" "$url" > /dev/null 2>&1 ;; "${CHOICES[3]}") from="$(echo -n | dmenu -p 'From (00:00/n)')" [ -z "$from" ] && exit 1 to="$(echo -n | dmenu -p 'To (00:00/n)')" [ -z "$to" ] && exit 1 filename="$(echo -n | dmenu -p 'Filename')" [ -z "$filename" ] && exit 1 ffmpeg -n \ -ss "$from" \ -to "$to" \ -i "$(yt-dlp -f b --get-url "$url")" \ "$HOME/$filename.mp4" ;; "${CHOICES[4]}") yt-dlp -f 'bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \ -o "$HOME/%(title)s.%(ext)s" \ --embed-chapters \ "$url" ;; "${CHOICES[5]}") yt-dlp -f 'bestaudio/best' \ -o "$HOME/%(title)s.%(ext)s" \ --embed-thumbnail \ --extract-audio \ --audio-format mp3 \ --embed-chapters \ "$url" ;; "${CHOICES[6]}") setsid -f xdg-open "$url" > /dev/null 2>&1 ;; "${CHOICES[7]}") printf '%s' "$url" | xclip -r -sel c ;; '') exit 0 ;; *) exit 1 ;; esac