Download and save the video lectures of your favorite courses for offline viewing.
- When
-d
option is given and the given directory does not exist, exiting with error on -S option and creating the directory on -s option. - Extracting and normalizing the titles of files from urls.
- Now supports download of excel files.
- Deprecated -f option in favor of -S
- Make sure you have python version 2.7 installed. If you don't have python, get it from here
- If you have python and are not sure of the version, type
python -V
in the terminal. If it says 2.7.x+ then you may proceed to the next instruction. Otherwise, go to the link provided above. - Install
pip
usingsudo apt-get install python-pip
. Install the application usingsudo pip install coursera_offline
- Before proceeding to the next step, make sure you have
setuptools
module installed. If it isn't, you can find the installation instructions here. - If you don't want to install pip, you can download the tar.gz from PyPi or zip from Github, extract the archive file and follow the installation instructions in the README.txt file.
- You may also clone the repo onto your local workstation and follow
the instructions in the README.txt file
git clone https://github.com/sanketh95/coursera-offline
You just need to set HTTP_PROXY
and HTTPS_PROXY
environment
variables and python automatically sends all requests through proxy.
Here's the way to set proxy in windows and linux
Run set HTTP_PROXY=http://user:password@address:port
and
set HTTPS_PROXY=https://user:password@address:port
Run export HTTP_PROXY=http://user:password@address:port
and
export HTTPS_PROXY=https://user:password@address:port
- Python2.7
- pyquery 1.2.9
- crontab 1.8.1
Note: You need not install the requirements manually, the setup script takes care of installing them for you.
Windows
- Open command prompt and change the
cd
into the directory containing coursera-offline and runpython coursera_offline -h
Linux
- Open terminal and run
coursera_offline -h
.
- All the videos are downloaded according to the folder structure and you don't need to take care of sorting the videos into separate folders manually.
- You need not track the order of the videos/weeks as the script intentionally renames them so that the week and video order maintained.
- The downloads are lightning fast as the videos are downloaded parallely.
- The script creates a crontab entry automatically to fetch any newly added videos in the course. You can also force synch with Coursera just by running a simple command.
- The script also downloads the subtitles automatically and saves them in Subs folder. So when you play the videos using VLC, the subs are automatically loaded.
- The script saves a data.json file in the course directory. This has all the information required to fetch the videos. So even if you lose some videos or if you forget the course name, as long as you have the data.json file, you can always re-download the lost videos.
- The script saves the session cookies so you don't have to login everytime you run it.
- The script fetches the lecture slides (pdfs and ppts) and saves them in 'Other Files' folder.
usage: coursera_offline.py [-h] [-s SHORTNAME] [-e EMAIL] [-p PASSWORD] [-S] [-d DIR] [-a [AUTO]] optional arguments: -h, --help show this help message and exit -s SHORTNAME, --shortname SHORTNAME Short name of the course being downloaded. This option is required when running the script for the first time -e EMAIL, --email EMAIL Email id registered with Coursera -p PASSWORD, --password PASSWORD Coursera Password -S, --synch Give this flag to synch with Coursera -d DIR, --dir DIR Give this option to save the videos in the path specified as argument. Defaults to Present Working Directory (PWD). -a [AUTO], --auto [AUTO] Give this option to create a crontab entry inorder to automatically synch with Coursera. Argument must one among 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'. The argument is optional and defaults to 'SUN'
Note: In order to download some courses, you need to register to the course and accept the honor code in Coursera site before running the script.
Let's say you're downloading a course called Introduction to Logic
and you want to download it to the ~/Logic
directory.
coursera_offline -d ~/Logic -s intrologic-005 -e <email> -p <password>
Do this to download the video lectures arranged as per weeks. This
creates the Logic
directory in the home directory (if it doesn't
exist) and downloads all the videos into this directory. This also
creates a data.json
file that contains all the information requried
to download the videos.
The argument intrologic-005 is called the shortname and is unique for every course. It can be obtained from the class url. For example for the course under discussion, the url is https://class.coursera.org/intrologic-005.
- Signin to Coursera from here.
- You'll be redirected to a page containing all your registered courses.
- Choose the course you want to download and click the Go to class button.
- You'll be redirected to the class page whose url looks like
https://class.coursera.org/<short name>
. - Copy the short name.
Note: If the -d
options is not given, the videos will be
downloaded to the current working directory.
coursera_offline -d ~/Logic -S -e <email> -p <password>
Okay, so you've been a few weeks into the course, now u need to fetch the updated videos. Don't worry, there's a way to do it ! The above command takes care of fetching the updated video content and synching it with your local directories.
coursera_offline -a <Day of the week> -s intrologic-005 -e <email> -p <password>
You're downloading the course for the first time, and you don't want to
keep using the 'Synch' command whenever you want to update the video
content, you can just pass the -a
flag which creates a crontab entry
for the Synch command whch will be run at 11:59:59 pm on that particular
day of the week. If no day is specified, it is defaulted to Sunday.
Note: You can still force the script to synch with Coursera by using the Synch command described above.