Smörgåsbord

Ambachtelijk bereide beschouwingen.

[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);
      }
    }
  }

One Response to “OmroepStreamDump”

  1. Cillian de Róiste

    Thanks for the script! It works great, but I changed it a bit for my own use and thought you might be interested. Instead of downloading the video before playing it I wanted to just buffer it for a few seconds and then start playing it while the rest downloads. This allows me to pause and jump back etc. which wasn’t possible with the live stream:

    pastetext = 'cd /media/1T/Movies/Uitzending && ';
    pastetext+= "mplayer -dumpstream -user-agent 'Windows-Media-Player/11.0.6001.7000' ";
    pastetext+="-playlist '"+source+"' -dumpfile '"+titel+"-"+datum+".wmv' </dev/null & ";
    pastetext+="sleep 10 && kmplayer '"+titel+"-"+datum+".wmv' && cd -"

    The interesting thing was that mplayer will not run in the background without that </dev/null (it expects some input). I hope this is of some interest to you or someone else. Thanks again!

Leave a Reply

Got an account? This would be an excellent time to log in!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

© 2009-2011 Wicher Minnaard | electronic mail | theme: righteously modified "dark strict"