This is a program that allows you to easily download all your lectures for all your subjects. It does this by piloting the browser and navigating through the LMS on your behalf.
- Logs in to the Unimelb LMS.
- Builds a list of the subjects.
- For each subject, navigates through to the Echocenter (Lecture Capture System).
- Builds a list of the lectures.
- For each lecture, queue up a download. The lectures are downloaded in a separate thread while the main thread continues to collect links by navigating through the LMS.
- Downloads all of the queued downloads to the appropriate folders.
The lecture downloader is able to:
- ~ Download only some of your subjects.
- ~ Download video or audio copies of the lectures.
- ~ Download specific weeks.
- ~ Download from the current week onwards.
- ~ Choose where to download the lectures to.
- ~ Autogenerate folders for each subject.
- ~ Assign week numbers based on date and appends lecture numbers if there are more than one lecture per week - formatted eg. "LING30001 Week 1 Lecture 02.m4v"
- Find pre-existing folders for each subject (given appropriate naming, see the Naming your folders section below).
- Skip lectures that you've already downloaded.
- Resume downloads that were cancelled partway through.
- Display a progress bar as you download each lecture.
- ~ Read the username and password from the settings file.
- ~ Run in headless mode (where the Chrome window is hidden).
- ~ Run with different settings files with minimal modification, for example if you are both a student and a tutor and you want to download the lectures for both.
The features with the ~
are configurable through the settings file(s).
lectureDL is written in Python 3 and uses the Selenium library coupled with ChromeDriver.
- Make sure you have Chrome installed.
- Get the latest Chromedriver for your system from here. You might have to modify the code to point to this Chromedriver. For some easy instructions:
- Download Chromedriver and drag it into this folder.
- Go to the line
driver = webdriver.Chrome('ChromeDriver/chromedriver 2.31', chrome_options=chrome_options)
and change it todriver = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
- In the future you might need to download a new Chromedriver, so make sure you keep track of which is which (perhaps by renaming it to
chromedriver <version>
, likechromedriver2.32
).
- Edit the settings. See the Configuration section.
- Make sure your clock is correct. If it is the wrong day, the script will crash.
Prerequsities:
- Make sure you have brew installed.
- Python 3.6 or greater. It's easiest to install this with the installer from https://www.python.org.
Setup instructions:
python3.6 -m venv myvenv
source myvenv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
python lectureDL.py # Success!!!
These steps have been tested on Ubuntu 16.04, adapt accordingly to your system.
Prerequsities:
- Python 3.6 or greater. Follow the instructions in this Stack Overflow article.
Setup instructions:
# Install Python 3.6 virtualenv stuff
sudo apt-get install python3.6-venv
# Now just follow the MacOS instructions
TODO
See the file other/initial_differences.md
. There have been many more improvements since that markdown file was written.
See the file other/todo.md
.
See the file other/heads_up_2017_07_29.md
.
Note: I'd recommend hiding subjects that are not active this semester because the script may try to find lecture recordings for past semesters. These days this is probably not necessary, but if you're having issues this might help.