summaryrefslogtreecommitdiff
path: root/ytdl
blob: 88b6508cdee6e56087935e71fa9832f0c2524721 (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env bash

help() {
    echo -e "
Usage: ytdl [-h|-m|-a|-r|-c|-n fileName|-u URL]

Multipurpose bash script for yt-dlp. Provides options to choose between
downloading videos, downloading music, archiving videos and saves them in the 
appropriate directory. By default, the script will take the URL currently in the
clipboard. This makes it possible to bind this script to a  keybind in dwm. You
can also explicitly specify a URL.
Defaults to downloading videos.

Options:
 -h             Display this help message
 -m             Download music, save to /media/hdd/music/Youtube Downloads/
 -a             Archive video,  save to /media/seagate/vids/archives/%(uploader)s/
 -r             Download very short reaction clip, save to /media/hdd/pics/reactions/gif/
 -c             Passes cookies from firefox to download age-restricted content
 -n             Specify file name
 -u             Specify URL
"
}

# get url from clipboard
url="$(xclip -o)"

# default output path and filename.
# used for calling this script as keyboard shortcut
path="/media/seagate/vids/random/"
filename="%(title)s"

opts="--remux-video mkv"

while getopts ":hmarcn:u:" option; do
    case $option in
        h) # print help
            help
            exit
            ;;
        m) # download music
            path="/media/hdd/music/Youtube Downloads/"
            opts="-x --audio-format mp3 --download-archive $HOME/.config/yt-dlp/history.txt"
            ;;
        a) # archive video
            path="/media/seagate/vids/archive/%(uploader)s/"
            filename="%(upload_date)s - %(title)s"
            opts="$opts --download-archive $HOME/.config/yt-dlp/history.txt"
            ;;
        r) # download reaction clip
            path="/media/hdd/pics/reactions/gif/"
            opts="--recode-video webm"
            ;;
        c) # pass cookies for age restricted content
            opts="$opts --cookies-from-browser firefox"
            ;;
        n) # set filename
            filename=$OPTARG
            ;;
        u) # set url
            url=$OPTARG
            ;;
        \?) #invalid option
            echo "Error: Invalid option -$OPTARG" >&2
            exit 1
            ;;
        :) # empty optarg
            echo "Option -$OPTARG requires an argument" >&2
            exit 1
            ;;
    esac
''done

yt-dlp -o "$path$filename.%(ext)s" $opts $url