Skip to main content

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.

Table of Contents

Description
Install
Terminal Application
Development
Dependencies and Unittests
Unsupported
Contribution
Planned

Description

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 Download streams, you need ffmpeg installed. Can also be done after installing pymoodle.

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.

Commandline Scripts

The commandline script is called pymoodle.

With pymoodle you can call these Utilities:

  • download
  • grades
  • timeline
  • config

Just call pymoodle from the terminal to get the Help page.

You will also 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 you run the pymoodle download without any arguments, you can pick the downloadable courses. But you can also Download everything from the current semester like this: pymoodle download -a To download really everything call pymoodle download -a -o. This will also download all older semesters.

Or it's possible to search and download courses, which name 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/current courses will be considered. In interactive mode you can press M or m to load old/more courses.

Only for people who used PyMoodle before

It seems like, Pymoodle had some problems. Thus a lot of not downloaded urls got written to 'urls.txt'. Just delete the file if you want to try a redownload. Or if you only want to redownload the exams/quizes call: pymoodle download -e -o

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 15).

Development

If you want to run pymoodle locally: python3 -m pymoodle_jku.pymoodle

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.
  • cryptography: To encrypt cookies/session key with the users password.
  • antimarkdown: 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.
  • psutil: For getting the network download transfers to check if we should download more.

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.

Contribution

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

Planned

  • Log file support
  • file uploader for assignments

Something that also seems interesting would be a kusss integration:

  • a kusss integration for checking grades
  • a kusss integration for registering in courses (so you don't have struggles when the kusss webserver is dying)

I don't really know if I want to integrate or should integrate that, if a few people are interested in that I am more willing to spend time on it.

Metadata

Release files for pymoodle-jku 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymoodle-jku 1.2.0
File Size Uploaded
pymoodle-jku-1.2.0.tar.gz 30.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pymoodle-jku 1.2.0
File Interpreter ABI Platform
pymoodle_jku-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 63.6 kB

Release files / pymoodle-jku-1.2.0.tar.gz

Download URL pymoodle-jku-1.2.0.tar.gz
Size 30.2 kB
Tags Source
SHA-256 checksum
How to use checksums
fa9544bffce0129675676b9d734a4e398e9b28ab41fa3611427c813d4d43ae75
BLAKE2b-256 checksum
How to use checksums
08815e40aa7942680be9defd75a1e9de2096de3758aa2a459806f98ba3739a14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.28.1 setuptools/54.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.1

Release files / pymoodle_jku-1.2.0-py3-none-any.whl

Download URL pymoodle_jku-1.2.0-py3-none-any.whl
Size 33.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89c631a025009c8146fe7f57789af23583dba1057bc4557fdb06f3721e4f8552
BLAKE2b-256 checksum
How to use checksums
d2e8502a85c0a2a9eb2e6b293ff9df1843607e308b44ef74dceda4efd2dbb57b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.28.1 setuptools/54.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.1

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.5

2 release files

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.7

1 release file

0.2.6

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page