summaryrefslogtreecommitdiff
path: root/rmt-action
blob: 6b3db9b9eda6eefb963508d61a0a510c908e9053 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#! /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