[Update @20090607: De code moet regelmatig bijgewerkt worden om veranderingen op player.omroep.nl te reflecteren. De laatste versie kun je altijd downloaden van de officiële pagina, daar kun je ook pingen (via een issue) als het script aangepast moet worden aan een nieuwe versie van player.omroep.nl (m.a.w., als het niet meer werkt).]
Ik heb een Greasemonkey-scriptje geschreven dat op player.omroep.nl een dialoogje geeft waarvan je de inhoud direct in een shell (Bash-shell, wellicht ook de standaard Bourne-shell) kan pasten. Je krijgt iets dergelijks voorgeschoteld:
export TIEFDIR="${PWD}"; export TEMPDIR=$(mktemp -d); cd ${TEMPDIR} && mplayer -dumpstream -user-agent 'Windows-Media-Player/11.0.6001.7000' 'http://cgi.omroep.nl/legacy/player?/ceres/vara/rest/2009/VARA_101192917/bb.20090424.asf' && mv stream.dump ${TIEFDIR}/'De Wereld Draait Door - 25-04-2009.wmv' && cd - && rmdir ${TEMPDIR}
Dat maakt het downloaden van videomateriaal van uitzendinggemist.nl een stukje makkelijker. Natuurlijk moet je wel Firefox + Greasemonkey-extensie, een shell en MPlayer hebben, maar wie heeft dat nou niet ;-)
Hier kun je de source lezen en als je Greasemonkey hebt geïnstalleerd kun je hier op “Install” klikken.
Surf vervolgens naar uitzendinggemist.nl en fair-use er op los.
En hier natuurlijk het leukste stuk van de source. Ik schrijf haast nooit Javascript dus opmerkingen/aanvullingen zijn zeer welkom.
var playert = document.getElementById("player"); // Listener for node insertions (generated by omroep.nl's javascript) if (playert) playert.addEventListener("DOMNodeInserted", genAlert, true); function genAlert() { var playert = document.getElementById("player"); var embedelement = document.getElementById('MediaPlayer'); if (embedelement) //The embed element got inserted - now we have all required parameters for dumping { var pastetext; var source = embedelement.getAttribute("src").replace("'","\\'"); //These URL's shouldn't have "'" in them but we escape them just to be sure. //Create a copy of the title & date info so we can use DOM functions to separate the two var worktitle = document.importNode(playert.getElementsByTagName("h3")[0],true); var worktitledatespan = worktitle.getElementsByTagName("span")[0]; var datum = worktitledatespan.innerHTML.replace("'","\\'"); //Escape ' to make shell-safe if (!datum) datum = 'nodate'; worktitle.removeChild(worktitledatespan); var titel = worktitle.innerHTML.replace("'","\\'"); //Escape ' to make shell-safe if (titel && source) { playert.removeEventListener("DOMNodeInserted", genAlert, true); pastetext = 'export TIEFDIR="${PWD}"; export TEMPDIR=$(mktemp -d); cd ${TEMPDIR} && ' pastetext+= "mplayer -dumpstream -user-agent 'Windows-Media-Player/11.0.6001.7000' '"+source+"' && "; pastetext+= 'mv stream.dump ${TIEFDIR}/\''+titel+' - '+datum+'.wmv\' && cd - && rmdir ${TEMPDIR}'; alert(pastetext); } } }

