A simple Python-based tool to automate module downloads from Universitas Terbuka's Virtual Reading Room (RBV).
Project description
📕 RBV-DL — Module Downloader
Fast, asynchronous, and reliable module downloader for Universitas Terbuka (UT).
📖 About
RBV-DL is a lightweight, asynchronous Python-based tool designed to automate authentication, retrieve module metadata, and concurrently download pages to compile them into high-quality PDFs.
With the introduction of the Hybrid Auth Bridge, RBV-DL now utilizes PyQt6 and QtWebEngine for a robust, seamless experience. The background auto-login system synchronizes sessions effortlessly between the CLI and GUI without requiring manual user intervention.
✨ Key Features
- Smart Session Sync: CLI and GUI share the same authentication logic via the new
auth_bridge. - Zero-Touch Login: Automatic background SSO handling—just input your course code and let the tool do the rest.
- Asynchronous Core: Highly concurrent downloads ensuring maximum speed and efficiency.
- Native GUI: A sleek, responsive, and native-feeling graphical interface built with
PyQt6. - Lightweight Footprint: Efficient architecture without relying on heavy browser engines like Playwright.
⚙️ Prerequisites
To run RBV-DL, ensure your system meets the following requirements:
- Python: Version
3.9or higher.- Download from the official Python website.
- Important: During installation (especially on Windows), ensure the "Add Python to PATH" option is checked.
🚀 Installation
Installing RBV-DL is straightforward and universal.
Open your terminal or command prompt and execute:
pip install rbv-ut-downloader
Note for Linux Users: We highly recommend using
pipxfor a cleaner, isolated environment:pipx install rbv-ut-downloader
💻 Usage
Command-Line Interface (CLI)
To launch the CLI application, simply run:
rbv-dl
You will be prompted to provide:
- NIM / Email: Your UT account email.
- Password: Your E-Campus password (input is securely hidden).
- Course Code: The target module code (e.g.,
ADPU4433).
The tool will autonomously handle authentication, download the pages concurrently, and generate a final PDF within a directory named after the course code.
Graphical User Interface (GUI)
The new and improved GUI offers an intuitive, lightweight experience natively integrated into your OS. Simply launch the application via your application menu or command line, and follow the on-screen instructions for a seamless downloading process.
🛠️ Running from Source
If you wish to contribute or modify the tool locally:
1. Clone the repository
git clone https://codeberg.org/fyodor-dostoevsky-bit/rbv-dl.git
cd rbv-dl
2. Set up a virtual environment
python -m venv venv
# On Linux/macOS
source venv/bin/activate
# On Windows
venv\Scripts\activate
3. Install dependencies
pip install -r requirements.txt
4. Run the application
python app.py
🧪 Testing
RBV-DL includes a robust unit testing suite built with pytest to ensure stability across core components like the network rate limiter, chapter parsing, and image collection.
To run the tests:
- Ensure the virtual environment is active.
- Install test dependencies:
pip install -r tests/requirements-test.txt
- Run the test suite:
PYTHONPATH=. pytest
Example Output:
================================ test session starts =================================
platform linux -- Python 3.12.3, pytest-9.0.2, pluggy-1.6.0
rootdir: /media/dapa/HDD2/Ubuntu/Desktop/rbv-dl
configfile: pyproject.toml
testpaths: tests
plugins: mock-3.15.1, asyncio-1.3.0
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 13 items
tests/test_helper.py ... [ 23%]
tests/test_network.py ...... [ 69%]
tests/test_pustaka_ut.py .... [100%]
================================= **13 passed** in 0.72s =================================
🐛 Troubleshooting
| Issue | Solution |
|---|---|
Command not found or rbv-dl is not recognized |
Python is likely not correctly added to your system's PATH. Reinstall Python and ensure "Add Python to PATH" is selected during setup. |
Installation fails on Python 3.14 |
pythonnet (a transitive dependency) does not yet support Python 3.14 on Windows. Use Python 3.11, 3.12, or 3.13 to install and run the application successfully. |
Login Failed |
Verify your E-Campus password. Try logging in manually via the official RBV website to ensure your account is active and accessible. |
⚖️ Disclaimer
Educational Purposes Only This tool was strictly developed for educational and archival purposes to help students back up their learning materials. The author shall not be held responsible for any misuse, policy violations, or unauthorized distribution of downloaded content. Please use it responsibly.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rbv_ut_downloader-0.1.4.tar.gz.
File metadata
- Download URL: rbv_ut_downloader-0.1.4.tar.gz
- Upload date:
- Size: 30.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdde5196202b159f1cb2051456f9d15dff71a0aa11e4d2e596dd477964fe390e
|
|
| MD5 |
855d1c52a96af42e535a827d79933b47
|
|
| BLAKE2b-256 |
39a47fe757e5f0696cb18937798389c9f97ef23ab3810f8bbe3557ba7148a7f1
|
File details
Details for the file rbv_ut_downloader-0.1.4-py3-none-any.whl.
File metadata
- Download URL: rbv_ut_downloader-0.1.4-py3-none-any.whl
- Upload date:
- Size: 34.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
897af96fbe02c7e478e8360f98b2265d5b83fd73d0fbf3a1a28af4eed3565667
|
|
| MD5 |
2ec199c04068d0b6baf2376886ca5c87
|
|
| BLAKE2b-256 |
74c6d743f6d4b044d6fa85af2f1f69afd7a98cb7507397a16d370fc0e3116a89
|