Skip to content

Instantly share code, notes, and snippets.

@arian
Last active June 5, 2017 21:05
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save arian/1339537 to your computer and use it in GitHub Desktop.
Save arian/1339537 to your computer and use it in GitHub Desktop.
Download TU Delft Collegerama video streams, Silverlight player sucks.
#!/bin/bash
slides=1;
video=1;
for var in "$@"
do
if [ "${var}" = "--slidesOnly" ]; then
video=0;
slides=1;
continue;
fi
if [ "${var}" = "--videoOnly" ]; then
video=1;
slides=0;
continue;
fi
done
if [ -z $1 ]; then
echo "
./collegedownloader <id> [filename]
id: College peid url query variable (?peid=<id>)
filename: Filename to save to
"
exit;
fi
id=$1
file="${id:0:8}-${id:8:4}-${id:12:4}-${id:16:4}-${id:20:12}"
manifest="http://collegerama.tudelft.nl/Mediasite/FileServer/Presentation/${id}/manifest.xml";
manifest_xml=`wget ${manifest} --quiet -O -`;
# video
if [ $video -eq 1 ]; then
mp4=`echo "${manifest_xml}" | xpath -q -e '//VideoContent/Location/text()'`
wget "${mp4}" -O $2
fi
# slides
if [ $slides -eq 1 ]; then
slides=`echo "${manifest_xml}" | xpath -q -e '//Slide/Time/text()'`
dataUrl=`echo "${manifest_xml}" | xpath -q -e '//SlideDataUrl/text()'`
i=1;
url="http://collegerama.tudelft.nl${dataUrl}/Presentation/${file}/slide_"
for slide in $slides
do
c=`printf "%04d" "${i}"`;
slide_url="${url}${c}_1024_768.jpg";
file="slide_${c}_${slide}.jpg";
echo "${file}";
wget "${slide_url}" -q -O "${file}";
i=$((i+1));
done
fi
@Hydrax
Copy link

Hydrax commented May 1, 2013

Ik heb geen verstand van code, maar zou wel graag wat van collegerama downloaden. Zou je wat uitleg er over kunnen geven of links naar de uitleg?

@arian
Copy link
Author

arian commented Nov 21, 2013

For this you need Linux or a Mac.

Then save this to a file, open the command line, chmod the file:

chmod +x collegedownloader.sh

And then copy the ID from the collegerama URL, so for example from

http://collegerama.tudelft.nl/Mediasite/Play/c9fd58f7297645e6a3aa87b6c7578c401d?catalog=528e5b24-a2fc-4def-870e-65bd84b28a8c

you select

c9fd58f7297645e6a3aa87b6c7578c401d

And then you can execute this script

./collegeramadownloader.sh c9fd58f7297645e6a3aa87b6c7578c401d college1.mp4

@JoshCode
Copy link

My Debian install (on a VirtualMachine) does not recognize xpath. I haven't been able to find a package to install it, any thoughts?

@jellelicht
Copy link

@IJoshFTW, in Ubuntu the package that supplies the xpath executable is called libxml-xpath-perl . It might be the same in Debian.

This way of downloading content from collegerama does not seem to work anymore, as the manifest file is not at the expected location anymore. Does anyone know how to work around this problem?

@mnstrspeed
Copy link

They replaced the manifest file with an extremely overengineered JSON API, but the process of looking up and downloading videos is still basically the same. Here's the script I'm using: https://gist.github.com/mnstrspeed/327e1a43ac09e67829b0. It depends on jq instead of xpath, so make sure that's installed (sudo apt-get install jq in Ubuntu/Debian).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment