Package: pymoodle-jku
PyMoodle-JKU LinzA local python client for accessing the jku moodle page. Passwords aren't sent anywhere except to the official moodle
pagehttps://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 ContentsDescriptionInstallTerminal ApplicationDevelopmentDependencies and UnittestsUnsupportedContributionPlannedDescriptionWhat 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 evenExamsas markdownList all your grades without needing to open the browser and search moodleList your timetable from moodle.Password of moodle can be stored in the local system keyring. No need to enter it every time!Installpip3 install -U pymoodle-jkuTo Download streams, you needffmpeginstalled. 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
lookhere.Commandline ScriptsThe commandline script is calledpymoodle.Withpymoodleyou can call these Utilities:downloadgradestimelineconfigJust callpymoodlefrom the terminal to get the Help page.You will also find everything you need if you call:pymoodle --helporpymoodle {Utility} --helpCredentials 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.ConfigWith the config utility you can configure your environment. You can either specify arguments that should be changed (
seepymoodle config --help) or launch the config in interactive mode like this:pymoodle configItsrecommendedto configure your environment once if you want. You can also set a default download Path. (which
needs to exist before downloading.)DownloadWith the download utility you can download files and exams from moodle. There are multiple ways to select a course. If
you run thepymoodle downloadwithout any arguments, you can pick the downloadable courses. But you can also Download
everything from the current semester like this:pymoodle download -aTo download really everything callpymoodle 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 DatenTo download stuff from old courses specify the-ooption, else only running/current courses will be considered. In
interactive mode you can pressMormto load old/more courses.Only for people who used PyMoodle beforeIt 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 -oGradesGrades 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-ofor old courses
or-sto search for courses.TimelineTimeline 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).DevelopmentIf you want to run pymoodle locally:python3 -m pymoodle_jku.pymoodleThere are multiple examples how to use the PyMoodle package. Just look in
theexamplesfolder and start
withmoodle_client.py.There are examples for:LoginCourses (Data/Section/Urls from a course)Valuation of a course.Moodle CalendarDownloadsGood To KnowUnittestsI have set up multipleunittests, to ensure
that the next releases won't introduce bugs.Dependenciesargcomplete: Is for commandline auto completion.cryptography: To encrypt cookies/session key with the users password.antimarkdown: Converts HTML from Moodle to Markdownkeyring: 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 requestsrequests-futures: A Wrapper around future to send asynchrones requests.psutil: For getting the network download transfers to check if we should download more.UnsupportedDownloading 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.ContributionIf you want to add something, create an issue and do a pull request.Install for testingclones this repopip3 install -r requirements.txtPlannedLog file supportfile uploader for assignmentsSomething that also seems interesting would be a kusss integration:a kusss integration for checking gradesa 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.