TimEnglart / BlackBoard-Course-Downloader

Simple Python Script to Download Course Documents from Black Board Learn Sites
MIT License
86 stars 18 forks source link

NO LONGER MAINTAINED

Due to my graduation I no longer have access to my Institutes Blackboard Service, so I can no longer test or verify compatability with my particular University (James Cook University)


BlackBoard Course Downloader

GitHub issues GitHub stars

Python script to navigate a Black Board Learn sites API.

Currently, only supports basic Black Board Course, Content and Attachment navigation via the Public Blackboard API


Features


Setup

Using Source (All Commands are Executed in the Command Line or Terminal)
  1. Clone this repository.
  2. Have Python 3 installed
  3. Install required modules using pip install -r requirements.txt or python -m pip install -r requirements.txt
  4. Navigate to downloaded repository and run command python main.py

Launch Arguments

-v, --version           Displays Application Version                            Default: False
-g, --gui               Use GUI instead of CLI                                  Default: False              (Not Implemented)
-m, --mass-download     Download All Course Documents                           Default: False
-u, --username          Username to Login With                                  Default: None
-p, --password          Password to Login With                                  Default: None
-s, --site              Base Website Where Institute Black Board is Located     Default: None
-l, --location          Local Path To Save Content                              Default: './'
-c, --course            Course ID to Download                                   Default: None
-r, --record            Create A Manifest For Downloaded Data                   Default: True
-b, --backup            Keep Local Copy of Outdated Files                       Default: False
-V, --verbose           Print Program Runtime Information                       Default: False              (Not Implemented)
-C, --config            Location of Configuration File                          Default: './config.json'
-i, --ignore-input      Ignore Input at Runtime                                 Default: False              (Not Implemented)
-t, --threaded          Allows For Mass Downloads to Run in Multiple Threads    Default: True
-n, --num-threads       Sets the Maximum Number of Threads to Download With     Default: 4                  (4 Concurrent Downloads)
-B, --browser           Browser to Get Login Cookies from                       Default: None               (Browsers Available: Chrome, Firefox, Opera, Edge, Chromium)

My Launch Arguments

python main.py -t -n 8 -m -l "../" -r


Using The Program

When you launch the program it will prompt you for your login credentials for your Institution:

  1. The first prompt is your username. This will be what you usually used to log in to your account. (The square brackets indicate what will be placed in the field if left blank) > Input Username [ ]: < Enter Username Here >
  2. The next prompt will be for your password. (This will not show input when you enter a character)

    Input Password: < Enter Password Here >

  3. The final login prompt will be for your Institutes base learn URL. If you are unsure about the URl enter 'c' to search for your institute.

    Enter Black Board Host Website [ [ ] or 'c' to Search ]:

  4. If you are successfully logged in you will then be shown a list of courses to chose from.

    Sample Output (Layout is still a work in progress) image

    By entering a number shown within the square brackets the program will then attempt to get the given course data from either the Rest API (or BlackBoardMobile API). This will then output a new selection asking whether you want to get the child contents of the course or download all attachments within the course

    Sample Output (Layout is still a work in progress) image

    1. If Get Content is selected the console will output a sub-selection of the child elements of the course

      image

      When a child element is selected the console will clear and show all the child elements of the course (similar to the child content output)

      image

      1. Selecting Get Child Attachments will output a sub-selection similar to the previous menu listing all possible child elements to access (Will show error message and navigate back if not child content is found)
      2. Selecting Get Attachments will output a sub-selection of all possible attached files to download.

        image

        When an attachment is selected the console will once again clear and show two options:

        1. Download which will download the attachment then navigate back to the parent element
        2. Back which will just go back to the parent element

          image

    2. If Download All Content is selected the program will then iterate through all the elements of the course and its children and download all attachments (while Emulating the Blackboard Folder Structure) and print the filename when the download of that file is finished


License

Full license here

This project is licensed under the terms of the MIT license.