Udemy Videos herunterladen
Udemy ist eine der größten e-Learning-Plattformen für Online-Seminare weltweit. Der Großteil der Inhalte ist natürlich in englischer Sprache, aber der deutsche Anteil wächst stetig. Doch schnell kommt da die Frage auf: Kann man die Videos der Kurse auch für die Offline-Nutzung herunterladen? Man möchte ja nicht immer vor dem PC sitzen und die Videos jedes Mal live über das Internet streamen müssen. Die Antwort lautet: Ja das geht!
Im Internet findet man schon einige Artikel und Youtube-Videos zu diesem Thema. Häufig aber in englischer Sprache und fast immer nur oberflächlich abgehandelt. Dieses Tutorial erklärt euch umfassend und mit zusätzlichen Hinweisen und Tipps, wie ihr unter Microsoft Windows die Videos der Udemy-Onlinekurse für die private Offline-Nutzung herunterladen könnt.
Update 22.02.2022:
⚠️ ACHTUNG! Udemy hat damit begonnen, seine Kursinhalte nach und nach zu verschlüsseln. Durch den DRM-Schutz ist das Downloaden der Videos durch Downloader-Skripte daher nicht mehr möglich bzw. die Umgehung des DRM-Schutzes wäre illegal.
Rechtlicher Hinweis
Udemy wirbt gerne mit einem „uneingeschränkten lebenslangen Zugriff“, beschränkt den erlaubten Zugriff auf die Kurse aber auf die „Plattform“ (Website) sowie die API (Programmierschnittstelle). Bei den hier vorgestellten Downloader-Scripts werden keine Schutzmaßnahmen umgangen, es handelt es sich nicht um illegale Hacks sondern lediglich um die Ausnutzung der zur Verfügung gestellten technischen Möglichkeiten. Meiner persönlichen Einschätzung nach ist der Einsatz dieser Downloader-Skripte zur persönlichen Offlinenutzung legal, auch wenn Udemy es wahrscheinlich nicht gerne sieht, wenn die Videodateien der Kurse heruntergeladen werden. Ich bin jedoch kein Fachanwalt für IT-Recht – das Herunterladen von Udemy-Inhalten zur Offlinenutzung geschieht daher auf eigene Gefahr! Selbstredend dürft ihr die heruntergeladenen Videodateien sowie das Begleitmaterial nur für rein persönliche Zwecke nutzen, und sie nicht weitergeben, öffentlich abspielen oder zum Download anbieten.Hinweis: Diese Anleitung gibt es jetzt auch als Videotutorial auf YouTube!
Vorbereitungen
Die hier vorgestellten Downloader-Skripts sind in der Programmiersprache Python geschrieben. Um sie auf eurem Windows-PC ausführen zu können, muss der kostenlose Python Interpreter installiert sein. Aber das ist schnell erledigt und benötigt kein Expertenwissen. Lest dazu meine Anleitung zum Installieren von Python unter Windows.
Das Downloader-Skript kann entweder über die Windows Eingabeaufforderung („cmd“) oder über PowerShell aufgerufen und gesteuert werden. Beides ist bereits Bestandteil von Windows, ihr müsst also nichts installieren sondern euch lediglich für eine Variante entscheiden. Diese Anleitung zeigt es mit PowerShell, es funktioniert aber genauso mit der Eingabeaufforderung. Wenn ihr das ganze hinterher mit PowerShell automatisieren möchtet, muss zuvor noch ein kleiner Hebel umgelegt werden.
Damit das Downloader-Skript weiß, welchen Kurs ihr herunterladen möchtet, benötigt ihr noch die Übersichts-URL des Kurses. Loggt euch dazu bei Udemy ein, klickt auf „Mein Lern-Content“ und wählt dann den gewünschten Kurs aus. Kopiert die komplette URL der Kurs-Übersichtsseite in die Windows-Zwischenablage.
Hilfe, Fehlermeldung beim Download!
Eines vorab: Leider ändert Udemy häufiger mal etwas an seiner Website bzw. der API, wodurch die Downloader-Scripts dann oft vorübergehend nicht mehr funktionieren. Wenn beim Aufruf des Downloader-Scripts der Vorgang direkt mit einer Fehlermeldung abbricht, prüft bitte zuerst ob ihr eure korrekten Zugangsdaten eingegeben und euch auch sonst nicht in der Befehlszeile verschrieben habt. Wenn soweit alles korrekt ist, dann liegt der Fehler wahrscheinlich an einer Änderung der Udemy-API. Da müsst ihr euch leider gedulden, bis der Script-Autor ein entsprechendes Update heraus bringt.
In manchen Fällen könnt ihr den Fehler umgehen, indem ihr die Authentifizierung im Scriptaufruf von Benutzername/Passwort auf Cookie umstellt. Wie das geht, beschreibe ich für udemy-dl am Ende des nächsten Kapitels.
Variante 1: udemy-dl
Udemy-dl ist ein speziell für Udemy entwickeltes Python-Script. Es lässt sich zwar nicht so umfangreich über Parameter steuern wie Variante 2, beherrscht aber alle grundlegenden Funktionen und darüber hinaus auch den Download von Begleitmaterial wie PDFs. Außerdem kommt es auch mit Umlauten und Sonderzeichen in den Dateinamen zurecht. Daher empfehle ich diese Variante für den Download der Udemy-Kurse.
Script installieren
Ladet euch die aktuelle Version von udemy-dl herunter und entpackt die ZIP-Datei komplett in einem lokalen Verzeichnis auf der Festplatte eures PC. Öffnet dann die Windows PowerShell mit Adminrechten (Rechtsklick auf das Programmsymbol -> „Als Administrator ausführen„) oder die Windows Eingabeaufforderung mit Adminrechten und wechselt mit dem Befehl „cd <verzeichnis>“ in das Verzeichnis, in das ihr das Script entpackt habt. Das Script benötigt einige Python-Erweiterungen, die ihr euch in einem Rutsch installieren könnt:
pip install -r requirements.txt
Das Ganze könnte dann z.B. so aussehen:
Bereits installierte Erweiterungen werden übersprungen. Von Zeit zu Zeit sollten die Erweiterungen aktualisiert werden. Das könnt ihr dann innerhalb des Scriptverzeichnisses mit dem etwas abgeänderten Befehl durchführen:
pip install --upgrade -r requirements.txt
Darüber hinaus sollte natürlich auch das Udemy-dl-Script an sich gelegentlich mit der neuesten Version von der Website aktualisiert werden.
Addon für höhere Auflösungen nötig
Mir ist kürzlich aufgefallen, dass sich zwar Videos in 720p wie gehabt herunterladen lassen. Jedoch wird für Videos in 1080p Auflösung nun ein kleines zusätzliches Programm benötigt. Es handelt sich dabei um das frei verfügbare FFmpeg, mit welchem sich digitales Videomaterial konvertieren und in diverse Containerformate verpacken lässt.
- Ladet euch das aktuelle Build von FFmpeg herunter, die Essentials-Version genügt. Ihr benötigt die executable (ausführbaren) Dateien, nicht den Source Code.
Projekt-Website | Direkt-Downloadlink - Zum Öffnen und Entpacken des 7z-Archivs benötigt ihr 7-Zip (Freeware) oder WinRar (Shareware). Öffnet die heruntergeladene 7z-Datei und lasst den Inhalt irgendwo auf euer Laufwerk entpacken, z.B. ins Download-Verzeichnis. Öffnet den Windows-Explorer und navigiert zu dem gerade entpackten Verzeichnis. Navigiert in das Unterverzeichnis „bin“, darin sollten sich drei ausführbare Exe-Dateien befinden. Erstellt nun ein neues Verzeichnis, z.B. C:\FFmpeg und kopiert die Dateien aus dem bin-Verzeichnis dort hinein. Das Ergebnis sollte dann etwa so aussehen:
- Nun müsst ihr nur noch dieses Verzeichnis zur PATH-Variablen der Windows Umgebungsvariablen hinzufügen. Anschließend kann Udemy-dl die Kursvideos auch in 1080p Auflösung herunterladen.
Udemy-Kurs herunterladen
Ihr habt die Möglichkeit, den Download über Befehlszeilenparameter zu steuern. Unter der Infobox folgen ein paar Beispiele. Weitere Parameter und Hinweise findet ihr in der Readme.
Gut zu wissen
- Die Verzeichnisstruktur und Dateinamen werden vom Script automatisch festgelegt und können nicht per Befehlszeilenparameter angepasst werden.
- Sofern nichts anderes per Befehlszeilenparameter angegeben wurde, lädt das Script die Videos in der Standard-Auflösung von 720p herunter, inklusive Begleitmaterial und Untertitel und speichert die Dateien im Script-Verzeichnis ab.
- Dieses Download-Skript lädt den kompletten Kurs in einem Rutsch herunter, außer ihr grenzt die Kapitel oder Lektionen per Aufrufparameter ein. Umfangreiche Kurse mit vielen Videos und in hoher Auflösung dauern je nach der zur Verfügung stehenden Internetbandbreite entsprechend lang und belegen natürlich auch mehr Speicherplatz auf eurem PC.
- Wenn ihr den laufenden Download bzw. das Skript abbrechen möchtet, holt das PowerShell-Fenster in den Vordergrund und drückt ein, zwei Mal die Tastenkombination STRG + C.
Der Standard-Download
Download eines Kurses in Standard-Auflösung inkl. Begleitmaterial und Untertitel.
python udemy-dl.py <kurs-url> -u <email> -p <passwort>
Download mit anderer Auflösung
Download eines Kurses in einer abweichenden Auflösung (in diesem Beispiel 1080p). Sollte die gewünschte Auflösung nicht zur Verfügung stehen, werden die Videos in der Standard-Auflösung herunter geladen.
python udemy-dl.py... -q 1080
In ein anderes Verzeichnis speichern
Statt die Dateien in das Scriptverzeichnis speichern zu lassen, kann man auch einen abweichenden Speicherpfad angeben (Benutzt unter Windows dabei den doppelten Backslash \\).
python udemy-dl.py... -o "D:\\Pfad\\zum\\Verzeichnis"
Exemplarisches Beispiel
Folgende Befehlszeile lädt einen Kurs in 1080p Auflösung herunter (sofern verfügbar, ansonsten 720p), inkl. Begleitmaterial aber ohne Untertitel, und speichert den Kurs in einem abweichenden Verzeichnis.
python udemy-dl.py <kurs-url> -u <email> -p <passwort> -o "D:\\Udemy" -q 1080 --skip-sub
Workaround: Authentifizierung per Cookie
Manchmal kann es vorkommen, dass Udemy die Authentifizierung per Benutzername/Passwort nicht akzeptiert. Dann könnte der Gebrauch des Udemy-Cookies helfen. Ich erkläre es euch hier anhand des Firefox-Browsers. Loggt euch auf der Udemy-Website mit euren Zugangsdaten ein. Drückt dann die Tastenkombination STRG + SHIFT + E um das Netzwerkanalyse-Tool des Firefox‘ zu öffnen. Klickt in der Netzwerkanalyse auf die Option „XHR“ und anschließend auf der Udemy-Website auf „Mein Lern-Content“. Es sollten dann einige Einträge in der Liste des Netzwerkanalyse-Tools erscheinen. Sucht in der Spalte „Datei“ einen Eintrag der mit „/api-2.0/“ beginnt. Falls keiner zu finden ist, ladet die Website per Taste F5 erneut. Klickt nun mit der rechten Maustaste auf diesen Eintrag und wählt „Kopieren“ -> „Anfragekopfzeilen kopieren“. Nun habt ihr den Inhalt des Cookies in die Windows-Zwischenablage kopiert. Erstellt im udemy-dl Verzeichnis (also der Ordner in dem sich die Skriptdatei udemy-dl.py befindet) eine neue leere Textdatei und fügt den Inhalt des Cookies per STRG + V dort ein. Speichert die Datei ab, zum Beispiel als cookie.txt, und schließt sie.
Beim Aufruf des udemy-dl Skripts verwendet ihr nun nicht mehr die beiden Parameter -u <benutzername> -p <passwort> sondern -k <dateiname>:
python udemy-dl.py <kurs-url> -k cookie.txt
Variante 2: youtube-dl
Während udemy-dl speziell für Udemy entwickelt wurde, kann das ebenfalls frei verfügbare Python-Skript youtube-dl noch hunderte weitere Dienste und Mediatheken von TV-Sendern anzapfen, wie z.B. YouTube, Twitch, Flickr, Pro7, usw. Leider kann youtube-dl zum aktuellen Zeitpunkt kein zusätzliches Kursmaterial herunterladen und beherrscht auch keine deutschen Umlaute.
Script installieren
Installiert das Skript mit dem Python-Paketverwaltungsprogramm pip. Öffnet dazu die Windows PowerShell mit Adminrechten (Rechtsklick auf das Programmsymbol -> „Als Administrator ausführen„) und führt diesen Befehl aus:
pip install youtube-dl
Wenn die Installation erfolgreich war, sollte euch der Vorgang mit „Successfully installed youtube-dl <version>“ bestätigt werden.
Für youtube-dl werden häufiger Updates veröffentlicht. Es lohnt sich also, immer mal wieder auf Updates prüfen zu lassen:
pip install --upgrade youtube-dl
Download-Quicky
Hier folgt die einfache Standard-Variante des Downloads. Weiter unten beschreibe ich, wie ihr das Download-Skript noch anpassen könnt, was sehr praktisch ist. Startet die Windows PowerShell und wechselt zuerst mit dem Befehl „cd <verzeichnis>“ in das Verzeichnis, in das die Videos geladen werden sollen. Anschließend gebt ihr folgenden Befehl ein und ersetzt <email> und <passwort> mit euren persönlichen Zugangsdaten, mit denen ihr euch bei Udemy registriert habt (Ihr könnt -p <passwort> auch weg lassen und werdet dann beim Skriptstart nach dem Passwort gefragt). Ersetzt <url> mit der zuvor ermittelten Kurs-URL:
youtube-dl -u <email> -p <passwort> <url>
Wenn die Zugangsdaten korrekt waren und der entsprechende Account für den angefragten Kurs berechtigt ist, sollte der Download nun starten. Ansonsten wird der Vorgang mit einer entsprechenden Fehlermeldung abbrechen.
Gut zu wissen
- Dieses Download-Skript lädt standardmäßig den kompletten Kurs in einem Rutsch herunter (Das lässt sich mit einem entsprechenden Aufrufparameter ändern, siehe nächstes Kapitel). Umfangreiche Kurse mit z.B. über 100 Videos oder über 5 Stunden Spieldauer können je nach vorhandener Internetbandbreite einige Zeit dauern.
- Wenn ihr den laufenden Download bzw. das Skript abbrechen möchtet, holt das PowerShell-Fenster in den Vordergrund und drückt ein, zwei Mal die Tastenkombination STRG + C.
- Dieses Download-Skript kümmert sich nur um Multimedia-Dateien, und lädt kein Begleitmaterial wie z.B. PDFs herunter. Manche Kurse bieten ja noch Arbeitsbücher etc. an, diese müsst ihr von Hand über die Udemy-Website downloaden.
Den Download feinjustieren
Jetzt wird’s interessant! Das Download-Skript youtube-dl lässt sich noch mit einer ganzen Reihe von Aufrufparametern konfigurieren. Einmal angepasst, nimmt euch das Skript dann einige Nacharbeit ab und passt sich euren Bedürfnissen an. Hier folgen ein paar nützliche Beispiele.
Dateinamen und Speicherort festlegen
Das ist wohl eine der wichtigsten, wenn nicht sogar DIE wichtigste Option. Denn die heruntergeladenen Videodateien tragen zwar den Namen/Titel wie er im Kurs hinterlegt ist. Sie sind aber nicht nummeriert und liegen somit hinterher nicht chronologisch sondern nur alphabetisch sortiert in eurem Verzeichnis. Ihr könntet die Dateien natürlich auch nachträglich von Hand umbenennen, viel Spaß bei einem Kurs mit über 100 Videos! Deshalb lasst ihr die Dateien besser gleich schon beim Download richtig benennen.
Mit dem Parameter –output „<muster>“ könnt ihr festlegen, wie die Dateien benannt und wo sie abgespeichert werden sollen. Folgendes Beispiel verwendet als Dateinamen nicht nur den Titel, sondern stellt ihm noch die laufende Nummer aus der Kursliste voran. Dadurch sind die Videodateien anschließend chronologisch sortiert:
youtube-dl --output "%(playlist_index)s - %(title)s.%(ext)s" -u ...
Es geht aber noch besser. Mit folgendem Ausgabemuster werden die Dateien in eurem Windows-Benutzerverzeichnis im Unterverzeichnis „Videos“ gespeichert. Es wird automatisch ein Ordner mit Namen des Kurses angelegt, darunter jeweils ein Ordner für jedes Kapitel und darunter dann die entsprechenden Videos, chronologisch sortiert:
youtube-dl --output "~\Videos\%(playlist)s\%(chapter_number)s - %(chapter)s\%(playlist_index)s - %(title)s.%(ext)s" -u ...
Fehler ignorieren
Standardmäßig bricht der komplette Download ab, sobald eine Datei in der Liste nicht verfügbar ist. Mit der Option –ignore-errors wird dieser Fehler ignoriert. Die betroffene Datei wird übersprungen und es wird die nächste Datei in der Liste herunter geladen. So wird die Liste erst einmal soweit wie möglich abgearbeitet und nicht gleich beim ersten Fehler abgebrochen.
youtube-dl --ignore-errors -u ...
Anzahl Neuversuche ändern
Bevor eine Datei als nicht verfügbar gilt und einen Fehler generiert, werden standardmäßig 10 Downloadversuche unternommen. Mit der Option –retries <anzahl> könnt ihr den Wert erhöhen oder auch herab senken. Wenn ihr als Anzahl „infinite“ angebt, wird das Skript es ewig versuchen.
youtube-dl --retries 15 -u ...
Vorhandene Dateien nicht überschreiben
Manchmal kommt es aufgrund kurzer Verbindungsprobleme vor, dass nicht alle Videos herunter geladen werden und im Anschluss fehlt dann irgendwo zwischendrin das eine oder andere Video. Deshalb lasse ich das Download-Skript i.d.R. zwei Mal durchlaufen. Damit im zweiten Durchlauf aber nur die fehlenden und nicht die bereits vorhandenen Videos erneut herunter geladen werden, benutze ich diesen Parameter:
youtube-dl --no-overwrites -u ...
Mehrere Kurse auf einmal herunterladen
Ihr könnt mit der Option –batch-file „<dateiname>“ eine Datei angeben, die eine Liste von Kurs-URLs beinhaltet (Pro Zeile eine URL). Das Skript arbeitet dann alle Kurse nacheinander ab:
youtube-dl --batch-file "d:\Videos\Kurse.txt" -u ...
Downloadgeschwindigkeit begrenzen
Wenn ihr den Download nebenher laufen lassen wollt, ohne dass eure Internetbandbreite komplett ausgelastet wird, könnt ihr die maximale Downloadrate mit der Option –limit-rate <rate> beschränken (in Bytes pro Sekunde, z.B. „500K“, „1.5M“; Achtung: Dezimaltrennzeichen ist der Punkt, nicht das Komma). Folgendes Beispiel beschränkt die Downloadgeschwindigkeit auf 1,2 MBit/s:
youtube-dl --limit-rate 1.2M -u ...
Download-Liste beschränken
Normalerweise beginnt der Download mit der ersten Datei in der Kurs-Liste und geht chronologisch alle Dateien durch, bis die komplette Liste abgearbeitet ist. Mit den Optionen –playlist-start <nummer> und –playlist-end <nummer> könnt ihr bestimmen, ab welcher Position der Download beginnen oder an welcher er enden soll. Hier ein Beispiel, wenn ihr die ersten 10 Kursdateien überspringen wollt:
youtube-dl --playlist-start 11 -u ...
Ihr könnt mit der Option –playlist-items „<nummerliste>“ auch spezifische Videos herunter laden. Mit folgendem Beispiel würdet ihr die 3., 8. und 10. Datei sowie die Dateien 12-14 herunter laden:
youtube-dl --playlist-items "3,8,10,12-14" -u ...
michael
18. Dezember 2016 um 16:35 Uhr
klappt 1a, großes dankeschön für das tutorial und ein frohes fest!