Die Zeit Audio-Download automatisieren

  • Die Wochenzeitung "Die Zeit" bietet ein Abo für Inhalte als Audiodateien (MP3-Format), auch ein Archiv, das bis 2004 zurückreicht, ist dabei zugänglich. Insgesamt stehen ca. 280 zip-Archive (je eines pro Ausgabe) zur Verfügung. Nachdem man sich auf audio.zeit.de eingeloggt hat, gibt es eine dropdown-box, in der man die Ausgabe auswählt. Nach anschließendem Klick auf einen Link (mit einer javascript-Funktion als Ziel) startet der Download.
    Die Downloadadresse ist offensichtlich an die session gebunden und außerdem nur für einige Minuten gültig. Beispiel:
    http://955926665920926151968.horchen.zeit.de/media/09/13/Au…DIE_ZEIT_13.zip

    Ich gehe davon aus, dass es für mich legal wäre, etwa über ein Skript alle Ausgaben ohne viel Herumgeklicke herunterzuladen, weil ich ja regulären Zugang zu den Inhalten selbst habe. Liege ich damit falsch?

    Bliebe nur noch die Frage, wie sich das bewerkstelligen ließe. Ich habe wenig bis keine Erfahrung mit Webentwicklung, durchblicke aber ungefähr den Ablauf und bin mir sicher, dass es mit wenig Code möglich wäre, so etwas zu machen. Es würde mich aber sicher viele Stunden kosten, auf mich allein gestellt eine funktionierende Lösung zu finden. Ich bitte deshalb um einen Tipp von Leuten mit mehr Erfahrung in diesem Bereich, auf welchem Wege sich sowas am einfachsten machen ließe.

    Ein Code-Ausschnitt mit den relevanten Elementen von der Seite:


  • Der String 955926665920926151968 scheint aber in dem von dir geposteten HTML-Fragment nicht aufzutauchen... Ansonsten gehts darum, mal die Seite zu kriegen, die Serveradresse und die 280 option-Tags rauszuparsen? Sollte mit wget/grep/sed recht einfach gehen. Die paar Befehle kann man mit einem bash-Skript zusammenpicken und gut is.

    Edit: Das Schwierigste ist der sed-Befehl. Ich hab was getrunken, aber mir schwebt sowas vor:

    Code
    sed -e 's!<option[^>]*>\([0-9]+\)/\([0-9]+\)</option>!foo.zeit.de/media/\1/\2/Audiofiles_\2.zip!g'


    Soll heißen: Übersetze jeden String der Form "<option...>jahr/nr</option>" in eine URL, wo Jahr und Nummer an den richtigen Stellen eingesetzt sind.

    Wegen Gesetzen würde ich mir keine großen Gedanken machen. Wenn dir prinzipiell Zugang zu den Files gewährt wird, ist es zumindest moralisch nicht verwerflich, alle 280 auf einmal zu saugen. Find ich.

    *plantsch*

    Einmal editiert, zuletzt von Plantschkuh! (6. Juli 2009 um 21:39)

  • Vielen Dank für die Zur-Verfügung-Stellung von Hirnschmalz!

    Der String 955926665920926151968 scheint aber in dem von dir geposteten HTML-Fragment nicht aufzutauchen..

    Eben das scheint die zu knackende Nuss sein. Dieser String ist nicht nur für jedes File anders, er ändert sich auch, wenn ich das gleiche File zweimal hintereinander runterlade. Ich habe die URL auch nirgends im Code gefunden, sie wurde vom Downloadmanager (in diesem Fall ein Firefox-Plugin) als Quelle angezeigt.
    Mit wget und mit sed bin ich auch einigermaßen vertraut (allerdings spreche ich diese Sprache nur in nüchternem Zustand, auch dann nur gebrochen...), aber so "einfach" scheint es in diesem Fall nicht zu gehen.
    Ich tüftle gerade darüber, wie genau eigentlich HTML-form-Elemente funktionieren. Mir scheint, dass hier die Download-URL abhängig von einigen Parametern serverseitig erzeugt wird (ich vermute vom Perl-Skript "hoeren.pl", dieses scheint im DL-Manager auch als "Referrer-URL" auf) und nur für einige Minuten funktioniert.
    Also müsste wohl auch ein Skript diesen Umweg nehmen.

    Gibt es nicht eine Möglichkeit, irgendwie einen Browser so zu skripten, dass er der Reihe nach alle Elemente der Dropdown-Box auswählt und anschließend auf den Link "klickt"?

    Hier noch ein bisschen relevanter javascript-Code, trägt aber nicht wirklich zur Erleuchtung bei:


  • Gibt es nicht eine Möglichkeit, irgendwie einen Browser so zu skripten, dass er der Reihe nach alle Elemente der Dropdown-Box auswählt und anschließend auf den Link "klickt"?


    ich würds mit htmlunit probieren. sollte nicht all zu schwierig sein.

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!