summaryrefslogtreecommitdiff
path: root/browser_pick_invidious_instance.sh
blob: bf3c05d55641135f350d28e3a8bc273923de305d (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
#!/bin/sh
#url=$(shuf $HOME/.cache/invidious-dl/instances | head -n1)
CACHE_INST="$HOME/.cache/invidious-dl/instances"
get_rnd_inst() {
	instance_url=""
	for u in $(shuf $CACHE_INST); do # | grep yew
		httpc=0
		printf "Trying instance %s\n" "$u" >&2
		tst_url="${u}"
		tst_url2="${u}/api/v1/videos/2l6JUNFAJ9o?fields=title,author"
		httpc=$(curl -k -m 1 -sS -o /dev/null -Iw '%{http_code}' "$tst_url")
		printf "HTTP responce to %s = %s\n" "$tst_url" "$httpc" >&2
		[ $? -gt 0 ] && continue
		httpc2=$(curl -k -m 1 -sS -o /dev/null -s -Iw '%{http_code}' "$tst_url2")
		tst=$(curl -s "$tst_url2")
		dbg "Test json = $tst"
		[ $httpc2 -eq 200 ] &&[ $httpc -eq 200 ] && [ "$tst" != "{}" ] && {
			instance_url="$u"
			break
		}
	done
	[ -z "$instance_url" ] && printf "No working instance\n" && exit 1
	dbg "Using instance = $instance_url"
	printf $instance_url
}
dbg() {
	[ -n "$DBG" ] && printf "%s\n" "$1" >&2
}
url=$(get_rnd_inst)
[ -n "$url" ] && $BROWSER "$url"