edx-dl
is a simple tool to download video lectures (and, optionally,
subtitles) from edx-based sites, like edX.org, MongoDB.com or Stanford's
online platforms.
It is written in Python and requires only a few modules (see the Installation section below for the requirements). It is written to be platform independent and should work fine under any Unix, Windows or MacOS X system, provided the dependencies are met.
The edx-dl program requires a Python interpreter (either version 2.x with x >= 6 or version 3.x) and some dependencies.
After obtaining the source code for edx-dl
(either via a clone of the
repository or via a tarball), you have to install the dependencies. The
recommended way of installing them is to issue:
pip install -r requirements.txt
If you want to install the dependencies on your own (e.g., to have a minimal set of dependencies), you can simply install a sufficiently recent version of BeautifulSoup 4. Any version starting with 4.1.3 should work. The second dependency is youtube-dl.
If you use a Linux distribution derived from Debian, then the package
python-bs4
should work, as long as it is version is >= 4.1.3.
Similarly, you can install the package youtube-dl
in a Debian-based
distribution. Note that it is always recommended to use the most recent
version of youtube-dl
, as Youtube frequently changes the layout of the
site and youtube-dl
is constantly updated to take such changes into
account.
The most recent version of youtube-dl
in Debian is found in
the Debian archive.
If you don't use the recommended method above of installing the dependencies
(i.e., using pip
), then you should use the packages from the Debian
archive, and not those from Ubuntu, Linux Mint or other Debian-derived
distributions, as they are frequently much older than the one in Debian.
Remark: The package in Debian is maintained by @rbrito one of the
developers of edx-dl
.
Otherwise, keep your youtube-dl
version updated with the use of:
youtube-dl --update
FIXME: This part is completely outdated and should be updated to reflect the
changes of the master
branch.
For using the script, you will have to inform the script of 3 pieces of information:
- The URL of the class that you want to download the videos from.
- The e-mail address that you used to register with the site. For the sake
of the examples, we will assume that it is
user@example.com
. - Your password for that site. For the sake of the examples, we will assume
that it is
123456
.
The URL of the class is one of the most important points. It should look like:
https://courses.edx.org/courses/BerkeleyX/CS191x/2013_Spring/courseware/
Regardless of if you are using Python 2 or Python 3, you can simply use:
python edx-dl -u user@user.com -p 123456 https://courses.edx.org/courses/BerkeleyX/CS191x/2013_Spring/courseware/
In the current implementation (which is going to change soon), you will get
a long stream of "garbage looking" lines, each with 11 characters, which are
the IDs of the videos on Youtube.com. You should pass them as arguments to
youtube-dl
to get the videos actually downloaded.
FIXME: Explain this better.
- @emadshaaban92
- @iemejia
- @rbrito
- @shk3
And many other contributors.