mpv_stream.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. # to use a SOCKS proxy run this in the
  4. # background before excuting the script
  5. # ssh -D 1080 -C -N user@ip
  6. SOCKS_PROXY_URL="socks5://localhost:1080"
  7. TWITCH_CHANNELS="christitustech\ntheprimeagen"
  8. VIDEO_DIR="$HOME/Videos/youtube/"
  9. media=$(echo -e "Video\nStream" | dmenu -p "Media Type: ")
  10. quality=$(echo -e "480p\n720p\n1080p" | dmenu -p "Quality: ")
  11. socks=$(echo -e "no\nyes" | dmenu -p "use SOCKS? ")
  12. if [[ $socks == "yes" ]]; then
  13. MPV_COMMAND="alacritty -e mpv --http-proxy="$SOCKS_PROXY_URL""
  14. else
  15. MPV_COMMAND="alacritty -e mpv"
  16. fi
  17. case "$media" in
  18. "Video")
  19. action=$(echo -e "Stream\nDownload" | dmenu -p "Media Type: ")
  20. case "$action" in
  21. "Stream")
  22. $MPV_COMMAND --save-position-on-quit "--ytdl-format=bestvideo[height<=$quality]+bestaudio" "$(xclip -o -selection clipboard)"
  23. ;;
  24. "Download")
  25. mkdir -p $VIDEO_DIR
  26. alacritty -e yt-dlp -f "[height<=$quality]+bestaudio" "$(xclip -o -selection clipboard)" -o "$VIDEO_DIR/%(uploader)s - %(title)s.%(ext)s"
  27. ;;
  28. esac
  29. ;;
  30. "Stream")
  31. channel=$(echo -e "$TWITCH_CHANNELS" | dmenu -p "Channel: ")
  32. $MPV_COMMAND --no-resume-playback "--ytdl-format=bestvideo[height<=$quality]+bestaudio" "https://www.twitch.tv/$channel"
  33. ;;
  34. esac
  35. # TODO: make this work
  36. # input=$(echo -n | dmenu -p "YouTube Search: ")
  37. # [[ -n $input ]] && st ytfzf -ft --preview-side=right "$input"