Problem: Students often face challenges in accessing educational resources when they are faced with eCampus blackouts or other technical difficulties. As Texas A&M shifts from Blackboard software to Canvas, transitions always bring an adjustment period. Anecdotally, I have witnessed professors accidentally delete entire Canvas courses. If there is a Canvas blackout when students need to access homework, notes, or lecture materials, this may create unnecessary pressure. With a large number of courses, many students do not keep local copies of all materials on their computers all the time.

Solution: A script that automatically logs onto Canvas, downloads all course materials for all of a student's classes, and overwrites the second most recent backup. With this solution, the script can be run at a schedule (for instance, once per day), to consistently create an offline backup of all course materials a student may need in the event of a Canvas blackout or technical mixup. With this system, there will always be two copies of Canvas course materials. I would recommend this tool be implemented using Git.

How it works: I used selenium to automate control of a web browser (Chrome or Firefox). Selenium allows you to create a script to follow a sequence of steps in a web browser. For instance: Go to Select the user name box, enter the username Select the password box, enter the password Press the submit button See if the login was successful or if Duo authentication is required etc. Once these series of steps were written to encompass everything a person would need to do to download all Canvas course content, the last step was to automate kicking off the process. I exported the python script as an executable. This allowed me to use window's native task scheduler to automatically run this process daily. I am for now choosing to download all course content at 3AM daily, but I will see what works best for me with extended use.

How to use: Once setup, the user doesn't need to do anything. The only time a user may have to take any action is if they have not logged into Canvas through within 60 days. In which case, they will need to approve the Duo push notification.

Support: I developed this to be supported using either Chrome or Firefox.

Requirements: Python 3.8 Python dependencies: selenium time os zipfile Task Scheduler Chrome or Firefox Browser drivers (i.e. ChromeDriver, Geckodriver (firefox))

How to setup: Download canvasAPI script executable Download ChromeDriver or Geckodriver for which browser you want to use. Enter canvas login information into a secure text file for the Python script to decrypt and read Enter the names of the canvas courses you want downloaded to the course_list array Enter the desired output filepath for your Canvas content backups Setup an scheduled run of the executable using Task Scheduler

Congrats, you're now prepared for Canvas blackouts!

Built With

Share this project: