Mediathek Download

Ich persönlich finde Angebote wie die Mediathek des ZDF sehr interessant. Es gibt dort viele interessante Beiträge die man sich ansehen kann, wenn man Zeit dazu hat. Nun ist es einerseits so, dass die Beiträge teilweise nur 7 Tage zur Verfügung stehen und man andererseits die Beiträge vielleicht auch auf dem Fernseher / Ipod o.ä. sehen möchte. Dazu muss man das Material zuerst einmal herunterladen. Dazu habe ich mir ein Script geschrieben, welches das recht komfortabel macht.

Prerequisites für das Script:

  • mencoder
  • curl
  • zenity

Wie ? (am Beispiel der ZDF Mediathek)

Der Download liegt dann im .mpg (mpeg2video) Format vor und kann auf diversen DVD-Playern wiedergegeben werden oder in Itunes Importiert, und für Ipod/Iphone konvertiert werden.

#!/bin/bash
#
# Download Script fuer .asx URLs (embedded .wmv)
# 
# Download aus aus der ZDF Mediathek:
#  - HTML Version der Mediathek aufrufen
#  - Beitrag auswaehlen
#  - Windows Media Player Link (DSL 1000 / DSL 2000) kopieren
#  - Script aufrufen und den Link einfügen
#  - download starten ....
#
# Prerequisites:
#  - mencoder
#  - curl
#  - zenitiy
#  - .asx URL (linked to a .wmv Stream)
#
# Ronny Becker, 01.2010
#

# grab URL
if [ ! $1 ]; then
 URL=`zenity --entry --text "Bitte die URL (.asx) eingeben:" --title "Mediathek Downloader" --width=400`
else
 URL=$1
fi

# check if a URL was entered
if [ ${#URL} -eq 0 ]; then
 zenity --error --title "Mediathek Downloader" --text="Keine gueltige URL ($URL)"
 exit
fi

# get mms:... out of .asx
URL=`curl -s ${URL} | grep -o "mms:.*\.wmv"`
# get filename from the origin; without .wmv
OUTFILE=`basename $URL | sed 's/\.wmv//'`

# download and save; show progressbar
# if you need debugging, please comment out the progressbar function
# beginning at "| awk ..."; then you get all to console output
if [ $1 ]; then
mencoder -ofps 25 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf harddup\
         -srate 48000 -af lavcresample=48000,volnorm=1\
         -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=15360:vbitrate=15360:keyint=15:acodec=ac3:abitrate=192\
         -o "${OUTFILE}.mpg"\
         $URL
else
mencoder -ofps 25 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf harddup\
         -srate 48000 -af lavcresample=48000,volnorm=1\
         -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=15360:vbitrate=15360:keyint=15:acodec=ac3:abitrate=192\
         -o "${OUTFILE}.mpg"\
         $URL 2>&1 | awk -vRS="\r" '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%\)/," ");gsub(/ \(/," ");print $3"\n#Position :\\t"$1"\\nFrame :\\t"$2"\\nPercentage :\\t"$3"%\\nFrame Rate :\\t"$4"\\nTime Remaining :\\t"$6; fflush();}' | zenity --progress --auto-kill --auto-close
fi

43 Responses to Mediathek Download

  1. Durch hinzufügen der folgenden Zeilen, kann man auch komfortabel die ORF Mediathek nützen:

    #if ORF Mediathek link => generate asx url
    if [[ $URL == *tvthek.orf.at* ]] && ! [[ $URL == *.asx* ]] ; then
    URL=$(curl -s “$URL” | grep -o “/programs.*\.download\.asx” )
    URL=”http://tvthek.orf.at$URL”
    #echo “$URL”
    fi

    Hierbei wird die .asx Adresse aus der “normalen” URL (für den Browser) extrahiert. Die paar Zeilen müssen vor dem Auslesen der mms Adresse eingefügt werden.

    lg

  2. togi

    Wer regelmäßig ganz bestimmte Sendungen runterlädt, dem ist sicher mit Miro geholfen. Damit lassen sich sehr schön Videopodcasts abonnieren!

  3. Ok, geht auch so schlecht wie die kurze mplayer Version,
    ist übrigens diese:
    curl $1 | grep mms: | cut -d \” -f 2 | xargs -n1 mplayer -dumpstream -dumpfile $2
    $1 ist URL, $2 Output

    Deine Methode meldet bei mir meist:
    Too many video packets in the buffer: (4096 in 28395233 bytes).
    Maybe you are playing a non-interleaved stream/file or the codec failed?
    For AVI files, try to force non-interleaved mode with the -ni option.
    Die ni Option ist für AVI, ASF und MPEG streams, was aber eigentlich stimmt. Bei Verwendung dieser lehnt mencoder ab.
    Ich kenne mich mit der Materie sehr schlecht aus, hoffe du nicht auch :D

  4. sebix

    ZFmediathk macht desöfteren Probleme bei mir, die Filme werden nicht ganz heruntergeladen. Ein anderes Problem ist, dass die Filme nur aus den RSS Feeds gefecht werden, aber zumindest hat mein einige Links.

    Bisher hatte ich einen “etwas” kürzeren Einzeiler mit curl und mplayer verwendet, allerdings kommt der nun nicht mehr mit der ZDF mediathek zurecht. Da kommt mir das gerade recht, noch dazu weil die deutschen öffentlich Rechtlichen nun sehr ihre Webservices kürzen kürzen müssen.

  5. Angry

    Sehr gutes Script. Finde persönlich http://zdfmediathk.sourceforge.net/ viel zu unübersichtlich.
    Danke für sharing!

    Noch ein Tipp: Will man das Video am Ende des Downloads zb nach /home/”Benutzername”/Videos verschieben einfach am Ende der Datei:

    mv ${OUTFILE}.mpg /home/”Benutzername”/Videos

    einfügen.

  6. Gast

    Wenn ein benötigtes Paket nicht installiert ist wäre es praktisch, wenn das Skript dies anzeigen würde (auch wenn das natürlich nur eine Komfortfunktion ist).

    Es gibt immer noch folgenden Fehler (hat der was mit deinem Skript zu tun?):
    ~/.gtkrc-2.0:3: error: unexpected character `:', expected character `='

    • Ronny

      Der Fehler sieht nach einem Problem in der .gtkrc aus – Syntaxfehler. Ich würde die Datei einfach mal umbenennen – dann wird das laufen.

  7. arnohr

    Moin!

    Tolle Sache! Hatte am Wochenende auch schon mit Dumps aus der Mediathek rumgespielt und mich über dieses dämliche WMV-Format geärgert!

    Als ich eben dein Script ausprobieren wollte streikte das aber:

    Bekam folgende Fehlermeldung:
    /home/arnohr/bin/mediathek: Zeile 42: Syntaxfehler beim unerwarteten Wort `;&’
    /home/arnohr/bin/mediathek: Zeile 42: ` $URL 2>&1 | awk -vRS=”\r” ‘$1 ~ /Pos/ {gsub(/Pos:/,” “);gsub(/%\)/,” “);gsub(/ \(/,” “);print $3″\n#Position :\\t”$1″\\nFrame :\\t”$2″\\nPercentage :\\t”$3″%\\nFrame Rate :\\t”$4″\\nTime Remaining :\\t”$6; fflush();}’ | zenity –progress –auto-kill –auto-close’

    Bevor ich jetzt das Basteln anfange, wäre es möglich auch direkt MKVs mit x264 und AAC zu erhalten?

    • Ronny

      Hallo,
      der Fehler ist korrigiert – Du kannst das nochmal neu kopieren.

      Prinzipiell ist jedes Format möglich, welches von mencoder zur Verfügung gestellt wird. Mit anderen Formaten hab ich mich bisher jedoch nicht beschäftigt.

      Gruß
      Ronny

  8. Lukas2040

    Ich habe mich in letzter Zeit auch mit der Thematik beschäftigt und bin dabei über ein sehr nützliches Tool gestolpert: http://zdfmediathk.sourceforge.net/

    Es fragt die kompletten Archive der Mediatheken ab und kategorisiert die Medien.

    Leider funktionierte der Download bei mir nur in der Kommandozeile mit flvstreamer. Man kommt aber mit Hilfe des Programms zumindest an die Links zu den HD-Videos.

    Ich werde es jedenfalls weiterhin beobachten.

    Aber auch deine Lösung werde ich bei Gelegenheit mal ausprobieren.

  9. Guten Tag zusammen,
    Danke für die Mühe! Sehr sinnvolles Script für mich, muß immer noch keinen HD-Recorder kaufen :)
    Zwei kleine Korrekturen (erbeten):

    1. Versuch – Download legt eine Null-byte-Datei ab.
    2. Versuch – dann eben mit copy and paste eine neue Datei gefüllt. Ausführung in der Shell: Fehler in Zeile 42… Die mpg wird trotzdem erstellt, nur ohne hübsches Fortschrittsfenster.

    Die Website verwurstet sowohl auf planet.ubuntuusers.de/ als auch auf
    linux-aha.de/wordpress/?p=321 den Anfang der Zeile 42, richtig muß es heißen:
    $URL 2>&1 | …

    Übrigens, weiß jemand, wie ich Bild und Ton synchron bekomme? Der Ton hinkt 0,3 bis 0,5 sec hinterher…

    Grüße, randolph

  10. nordmann

    Der Download-Link läuft nicht. Wenn ich das Script selbst über Copy + Paste in gedit erstelle, läuft es zuerst wie erwartet, läd dann aber nichts herunter. Alle geannten Pakete sind installiert. Woran kann’s liegen?

    • Ronny

      Bitte die aktuelle Version kopieren und den Link als Parameter mitgeben – dann hagelt es den Output von mencoder. Das könnte bei der Suche helfen.

  11. Sascha

    Wie sieht es hier mit der rechtlichen Seite aus? In den FAQ steht:

    Streaming & Download

    Die Videos der ZDFmediathek stehen als Stream zur Verfügung, das heißt, sie werden von den Servern des ZDF abgerufen. Ein Download – also eine Kopie auf die eigene Festplatte – ist aus rechtlichen Gründen für die meisten Beiträge nicht möglich. Künftig sollen jedoch einige Sendungen für den Download zur Verfügung gestellt werden. Wer jetzt die Privatkopie einer Sendung beziehen möchte, kann einen kostenpflichtigen Sendungsmitschnitt unter folgender Email-Adresse bestellen: programmservice@zdf.de

    • Ronny

      Hallo,
      ehrlich gesagt habe ich mich darum nicht wirklich gekümmert. Ich mach die lokale Kopie nur für das ganze auf meinem Fernseher zu schauen und überschreibe die CD-RW dann wieder. Manchmal landet eine Aufnahme auch auf dem iPod aber das wars. Ich nutze das nur, um die Inhalte dann zu schauen wann ich will und eben auch wo ich will.

      Sollte jemand das ganze “kommerziell” einsetzen wollen wäre ich da allerdings vorsichtig.

  12. Nico

    Hi!

    Sehr interessantes Skript… wie ist es denn mit der ARD Mediathek? Die funktioniert auch ähnlich… hast du damit schon Erfahrungen sammeln können?

    Gruß, fr3sh

    • Ronny

      Hallo,
      prinzipiell funktioniert das Script mit jedem Link der als .asx angeboten wird. Wenn die ARD das auch so macht sollte es keine Probleme geben.

      Gruß
      Ronny

  13. Hallo,

    der Downloadlink funktioniert nicht mehr!? Und wenn ich den Text kopiere und als Script speichere, dann gibt es folgende Fehlermeldung:
    Zeile 42: Syntaxfehler beim unerwarteten Wort `;&’

    Gruß
    Arthur

  14. billy

    Hallo

    Ich habe schon lange so was gesucht! Leider passiert bei mir nichts nachdem ich die Adresse eingefügt habe.
    Wo könnte das problem liegen?

    MfG
    Billy

    • Ronny

      Hallo,
      Du könntest die neuere Version des Scriptes ausprobieren und den Link zur Mediendatei einfach als Parameter in der Konsole eingeben. Dadurch siehst Du was mencoder macht und kannst vielleicht den Fehler finden.

      Gruß
      Ronny

  15. Tja, Mist. Natürlich auch auf die HTML Entities reingefallen, weil die natürlich sofort interpretiert werden.
    Korrektur zum “ps:”
    “& g t ;” in “>” und
    “& a m p ;” in “&” umwandeln

  16. julian

    Hallo,
    das Script ist eine tolle Idee! Habe schon öfter daran gedacht, ob/wie man die Streams abspeichern könnte.
    Dein Script habe ich sofort abgespeichert, aber leider funktioniert es nicht problemlos:
    Der Download einer etwas längeren Sendung ist nach 23 Minuten Laufzeit abgebrochen und da es keine Fehlermeldung gibt, kann ich nicht sagen, woran es lag. Die Internetverbindung war zu der Zeit jedenfalls nicht unterbrochen und auch auf der HDD ist genügend Speicherplatz.
    Weder die unvollständige Datei, noch eine weitere (komplette) Datei hat Sound, was ich mir nicht so ganz erklären kann.
    Trotz der paar Problemchen, die bestimmt noch behoben werden können, möchte ich mich für das tolle Script bedanken!
    Grüße
    Julian

    ps: Der Downloadlink für das Script funktioniert nicht, erstellt man aus dem o.g. Code das Script manuell muss man > in > und & in & umwandeln. Ich denke mal, dass deine Blogsoftware die Zeichen automatisch umgewandelt hat?!

  17. Andreas Abendroth

    Hallo!

    Kleine Frage: Was ist der Vorteil gegenüber der Nutzung von vlc? Dort kann ich doch auch Netzwerkstreams öffnen und aufzeichnen/konvertieren. Oder ist die Nutzung der Kommandozeile komfortabler?

    Andreas

    • Ronny

      Hallo,
      wenn man sich das Script beispielsweise ins Menü legt, hat das eigentlich nicht viel mit Kommandozeile zu tun. Das Speichern per VLC finde ich für recht “unkomfortabel” – ist aber wie so oft Geschmackssache.

      Ronny

  18. Also irgendwie kriege ich es nicht bis zum Download, obwohl ich alle prerequisites erfülle. Nach Eingabe der .asx bekomme ich folgende Fehlermeldung:
    ./mediathek_downloader.sh: line 42: syntax error near unexpected token `&’
    ./mediathek_downloader.sh: line 42: ` $URL 2>&1 | awk -vRS=”\r” ‘$1 ~ /Pos/ {gsub(/Pos:/,” “);gsub(/%\)/,” “);gsub(/ \(/,” “);print $3″\n#Position :\\t”$1″\\nFrame :\\t”$2″\\nPercentage :\\t”$3″%\\nFrame Rate :\\t”$4″\\nTime Remaining :\\t”$6; fflush();}’ | zenity –progress –auto-kill –auto-close’

    Übrigens habe ich das Skript mit “copy und paste” übernommen, da der Link zum gezippten File nicht zu funktionieren scheint. Sind dies evtl. 2 verschiedene Versionen?
    Gruß, linuxnetzer

    • Ronny

      Das war ein Problem mit WordPress. Hab den Fehler korrigiert.

      Des Weiteren habe ich das Script erweitert: Man kann nun auch den Link als Parameter in der Konsole mitgeben – dadurch sieht man den Output von mencoder und kann dadurch mögliche Fehler besser finden.

      Gruß
      Ronny

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>