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 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 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)
| File | Size | Uploaded | |
|---|---|---|---|
| pymoodle-jku-1.2.0.tar.gz | 30.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|