Skip to main content

A client for the moodle page of JKU Linz.

Project description

PyMoodle-JKU Linz

A local python client for accessing the jku moodle page. Passwords aren't sent anywhere except to the official moodle page https://moodle.jku.at/jku/login/index.php! Optionally you can store them in the local system keyring.

It's also a python library, which you can use in your project.

Overview

What can you do with PyMoodle? A Short Overview.

You can do all this from the commandline and much more:

  • Download files from moodle videos/pdf/folder/etc. and even Exams as markdown
  • List all your grades without needing to open the browser and search moodle
  • List your timetable from moodle.
  • Password of moodle can be stored in the local system keyring. No need to enter it every time!

Install

pip3 install -U pymoodle-jku

To get autocompletion working add this to your bash .bashrc/.zshrc/....:

eval "$(register-python-argcomplete pymoodle)"

If you are using fish/Tcsh or another shell, have a closer look here.

Requirements

To Download streams, you need ffmpeg installed.

Commandline Scripts

The commandline script is called pymoodle.

With pymoodle you can call these Utilities:

  • download
  • grades
  • timeline
  • config

You will find everything you need if you call: pymoodle --help or pymoodle {Utility} --help

Credentials won't be stored anywhere. If the username/password is entered while running Utilities (not with -c), you will be asked if you want to store your password in the keyring. The Keyring is a local Password Storage where all passwords are securely stored.

Config

With the config utility you can configure your environment. You can either specify arguments that should be changed ( see pymoodle config --help) or launch the config in interactive mode like this: pymoodle config

Its recommended to configure your environment once if you want. You can also set a default download Path. (which needs to exist before downloading.)

Download

With the download utility you can download files and exams from moodle. There are multiple ways to select a course. If nothing is specified it will download everything. But you can also launch Download in interactive mode like this: pymoodle download -i

Or it's possible to search and download courses, which includes the word "Logic" or "Daten" like this: pymoodle download -s Logic -s Daten

To download stuff from old courses specify the -o option, else only running courses will be considered. In interactive mode you can press m to load old courses.

Only for people who used PyMoodle before

Exams are now downloaded too. To force a redownload of only exams use the -e option. This future will be removed later. Its currently only implemented so that you don't have to download everything else again.

Grades

grades

Grades will launch automatically in interactive mode. It can give you a short overview about your grades, or you can look at the specific evaluations from a course. Just like {download} it's also possible to use -o for old courses or -s to search for courses.

Timeline

timeline

Timeline shows your next few moodle events from the moodle calendar. The only argument you could specify is the max limit of events to show (--limits 26).

Python Package

There are multiple examples how to use the PyMoodle package. Just look in the examples folder and start with moodle_client.py.

There are examples for:

  • Login
  • Courses (Data/Section/Urls from a course)
  • Valuation of a course.
  • Moodle Calendar
  • Downloads

Good To Know

Unittests

I have set up multiple unittests, to ensure that the next releases won't introduce bugs.

Dependencies

  • argcomplete: Is for commandline auto completion.
  • html2markdown: Converts HTML from Moodle to Markdown
  • keyring: Saves your password secure locally. (on windows called Credential Locker)
  • io-uuid: One of my own packages. Is for creating unique filenames.
  • lxml: Is to parse HTML.
  • pick: A simple Terminal Picker.
  • pytube: For downloads from youtube.
  • sty: Colors for the terminal. Still needs to be implemented.
  • urllib3: for parsing urls and so stuff.
  • requests: for sending requests
  • requests-futures: A Wrapper around future to send asynchrones requests.

Unsupported

  • Downloading of Zoom streams of jku.zoom.us isn't supported for now. If somebody get it working please feel free to do a merge request.

Support/Community

If you want to add something, create an issue and do a pull request.

Install for testing

  • clones this repo
  • pip3 install -r requirements.txt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymoodle-jku-1.0.0.tar.gz (23.8 kB view details)

Uploaded Source

File details

Details for the file pymoodle-jku-1.0.0.tar.gz.

File metadata

  • Download URL: pymoodle-jku-1.0.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.1

File hashes

Hashes for pymoodle-jku-1.0.0.tar.gz
Algorithm Hash digest
SHA256 89e54b0b4308bcc7ee8a9f1d97d201d8cc0f78c620d81cace4e99101babdb039
MD5 37a60a07948499f9c2e57214931c2af8
BLAKE2b-256 0108f5af21b30f1738183f60488a2b14b7440f3b5fe9cc2aef1cc011c4cfa799

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page