summaryrefslogtreecommitdiff
path: root/ytdl
blob: f3969a41773d5187500ea9f8a8c976abdf585d09 (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/archives/%(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