-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtuber.sh
More file actions
executable file
·75 lines (70 loc) · 1.98 KB
/
tuber.sh
File metadata and controls
executable file
·75 lines (70 loc) · 1.98 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
#!/bin/bash
: "${USER:=user}"
: "${PASS:=pass}"
: "${COURSE:=4636c0b6-71a8-45f1-bc6a-ea850f46175e}"
: "${RESOLUTION:=1920x1080}"
: "${FALLBACKRES:=1440x900}"
CURL="curl -L -c cookies -b cookies"
CURL_STDOUT="$CURL -s -o -"
TUBE="https://tube.tugraz.at"
INITURL="$TUBE/Shibboleth.sso/Login?target=/paella/ui/index.html"
EPIURL="$TUBE/search/episode.json?limit=2000&offset=0&sid=$COURSE"
RESPONSE=$($CURL_STDOUT -L -c cookies -b cookies -s -o - ${INITURL})
if [[ ! $RESPONSE =~ "Welcome to TU Graz TUbe" ]] ; then
echo logging in
LOGINURL="https://sso.tugraz.at$(echo "$RESPONSE" | htmlq --attribute action 'form[name=form1]')"
RESPONSE=$($CURL_STDOUT --data-urlencode lang="de" --data-urlencode _eventId_proceed="" --data-urlencode j_username="${USER}" --data-urlencode j_password="${PASS}" ${LOGINURL})
if [[ ! $RESPONSE =~ "Welcome to TU Graz TUbe" ]] ; then
echo sso logon failed
exit 23
fi
fi
echo logged in
echo $EPIURL
$CURL -s -o episodes.json "$EPIURL"
cat episodes.json | jq -c "
.[\"search-results\"]
.result[]
.mediapackage
| {
title: .title,
urls: [ .media.track[]
| select(.video.resolution == \"$RESOLUTION\")
| .url]
}" |
while read episode
do
TITLE="$(echo "$episode" | jq -r .title)"
FN="$(echo "$TITLE" | tr -dc 'a-zA-Z0-9' ).mp4"
URL="$(echo "$episode" | jq -r .urls[0])"
echo episodeurl $URL
if [ "$URL" != "null" ] ; then
if [ ! -f "$FN" ] ; then
echo "downloading $TITLE to $FN"
$CURL -C - -o "$FN.part" "$URL"
mv "$FN"{.part,}
fi
fi
done
cat episodes.json | jq -c "
.[\"search-results\"]
.result[]
.mediapackage
| {
title: .title,
urls: [ .media.track[]
| select(.video.resolution == \"$FALLBACKRES\")
| .url]
}" |
while read episode
do
TITLE="$(echo "$episode" | jq -r .title)"
FN="$(echo "$TITLE" | tr -dc 'a-zA-Z0-9' ).mp4"
URL="$(echo "$episode" | jq -r .urls[0])"
echo fallback episodeurl $URL
if [ ! -f "$FN" ] ; then
echo "downloading $TITLE to $FN"
$CURL -C - -o "$FN.part" "$URL"
mv "$FN"{.part,}
fi
done