-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathyoutube
More file actions
executable file
·77 lines (59 loc) · 1.28 KB
/
youtube
File metadata and controls
executable file
·77 lines (59 loc) · 1.28 KB
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
75
76
77
#!/bin/bash
. /lounge/triggers/functions.sh
function parse_query() {
IFS="&"
KEY=$2
array=($@)
for i in "${array[@]}";
do IFS="=";
set -- $i;
#PARAMS[$1]=$2;
if [ "$1" == "$KEY" ]
then
echo $2
return 0
fi
done
}
ID="`echo "$1" | sed 's/.*v=//g' | sed 's/&.*$//g'`"
INFO=$(wget -qO- "http://www.youtube.com/get_video_info?&video_id=$ID&el=detailpage")
STREAMS="$(l_urldecode "`parse_query $INFO "url_encoded_fmt_stream_map"`")"
TITLE=$(l_urldecode "`parse_query $INFO "title"`")
IFS=","
set -- $STREAMS
SELECTED=
for s in $@; do
f=$(l_urldecode "`parse_query $s "type"`"|cut -d ';' -f1)
if [ "$f" != "video/x-flv" ]; then
SELECTED="$SELECTED,$s"
fi
done
if [ -z "$SELECTED" ]; then
SELECTED="$STREAMS"
fi
set -- $SELECTED
large=
medium=
small=
for s in $@; do
q=`parse_query $s "quality"`
if [ -z "$large" -a "$q" == "large" ]; then
large="$s"
elif [ -z "$medium" -a "$q" == "medium" ]; then
medium="$s"
elif [ -z "$small" -a "$q" == "small" ]; then
small="$s"
fi
done
SELECTED="$large"
if [ -z "$SELECTED" ]; then
SELECTED="$medium"
fi
if [ -z "$SELECTED" ]; then
SELECTED="$small"
fi
URL=$(l_urldecode "`parse_query $SELECTED "url"`")
# SIG="`parse_query $SELECTED "sig"`"
# URL="$SURL&signature=$SIG"
echo $URL
echo $TITLE