summaryrefslogtreecommitdiff
path: root/python-pymoodle-jku.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-pymoodle-jku.spec')
-rw-r--r--python-pymoodle-jku.spec607
1 files changed, 607 insertions, 0 deletions
diff --git a/python-pymoodle-jku.spec b/python-pymoodle-jku.spec
new file mode 100644
index 0000000..ff38732
--- /dev/null
+++ b/python-pymoodle-jku.spec
@@ -0,0 +1,607 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pymoodle-jku
+Version: 1.2.0
+Release: 1
+Summary: A client for the moodle page of JKU Linz.
+License: BSD 3-Clause
+URL: https://github.com/LeLunZ/pymoodle-jku-linz
+Source0: https://mirrors.aliyun.com/pypi/web/packages/08/81/5e40aa7942680be9defd75a1e9de2096de3758aa2a459806f98ba3739a14/pymoodle-jku-1.2.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-argcomplete
+Requires: python3-cryptography
+Requires: python3-antimarkdown
+Requires: python3-keyring
+Requires: python3-io-uuid
+Requires: python3-lxml
+Requires: python3-pick
+Requires: python3-readchar
+Requires: python3-pytube
+Requires: python3-sty
+Requires: python3-urllib3
+Requires: python3-requests
+Requires: python3-requests-futures
+Requires: python3-packaging
+Requires: python3-argparse
+Requires: python3-psutil
+
+%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.
+
+##### Table of Contents
+
+[Description](#Description) </br>
+[Install](#Install) </br>
+[Terminal Application](#Commandline-Scripts) </br>
+[Development](#Development) </br>
+[Dependencies and Unittests](#Good-To-Know) </br>
+[Unsupported](#Unsupported) </br>
+[Contribution](#Contribution) </br>
+[Planned](#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](https://ffmpeg.org/download.html) 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](https://github.com/kislyuk/argcomplete#zsh-support).
+
+## 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](https://user-images.githubusercontent.com/31982496/110263795-059fc980-7fb8-11eb-8724-4ded9c08ca09.mp4)
+
+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](https://raw.githubusercontent.com/LeLunZ/pymoodle-jku-linz/main/assets/timeline.png)
+
+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](https://github.com/LeLunZ/pymoodle-jku-linz/tree/main/examples) folder and start
+with [moodle_client.py](https://github.com/LeLunZ/pymoodle-jku-linz/tree/main/examples/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](https://raw.githubusercontent.com/LeLunZ/pymoodle-jku-linz/main/tests), 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](https://pypi.org/project/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.
+
+
+%package -n python3-pymoodle-jku
+Summary: A client for the moodle page of JKU Linz.
+Provides: python-pymoodle-jku
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pymoodle-jku
+
+# 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](#Description) </br>
+[Install](#Install) </br>
+[Terminal Application](#Commandline-Scripts) </br>
+[Development](#Development) </br>
+[Dependencies and Unittests](#Good-To-Know) </br>
+[Unsupported](#Unsupported) </br>
+[Contribution](#Contribution) </br>
+[Planned](#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](https://ffmpeg.org/download.html) 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](https://github.com/kislyuk/argcomplete#zsh-support).
+
+## 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](https://user-images.githubusercontent.com/31982496/110263795-059fc980-7fb8-11eb-8724-4ded9c08ca09.mp4)
+
+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](https://raw.githubusercontent.com/LeLunZ/pymoodle-jku-linz/main/assets/timeline.png)
+
+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](https://github.com/LeLunZ/pymoodle-jku-linz/tree/main/examples) folder and start
+with [moodle_client.py](https://github.com/LeLunZ/pymoodle-jku-linz/tree/main/examples/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](https://raw.githubusercontent.com/LeLunZ/pymoodle-jku-linz/main/tests), 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](https://pypi.org/project/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.
+
+
+%package help
+Summary: Development documents and examples for pymoodle-jku
+Provides: python3-pymoodle-jku-doc
+%description help
+
+# 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](#Description) </br>
+[Install](#Install) </br>
+[Terminal Application](#Commandline-Scripts) </br>
+[Development](#Development) </br>
+[Dependencies and Unittests](#Good-To-Know) </br>
+[Unsupported](#Unsupported) </br>
+[Contribution](#Contribution) </br>
+[Planned](#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](https://ffmpeg.org/download.html) 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](https://github.com/kislyuk/argcomplete#zsh-support).
+
+## 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](https://user-images.githubusercontent.com/31982496/110263795-059fc980-7fb8-11eb-8724-4ded9c08ca09.mp4)
+
+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](https://raw.githubusercontent.com/LeLunZ/pymoodle-jku-linz/main/assets/timeline.png)
+
+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](https://github.com/LeLunZ/pymoodle-jku-linz/tree/main/examples) folder and start
+with [moodle_client.py](https://github.com/LeLunZ/pymoodle-jku-linz/tree/main/examples/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](https://raw.githubusercontent.com/LeLunZ/pymoodle-jku-linz/main/tests), 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](https://pypi.org/project/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.
+
+
+%prep
+%autosetup -n pymoodle-jku-1.2.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-pymoodle-jku -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.0-1
+- Package Spec generated