A Rust library for scraping data from the ILIAS learning management system. It provides functionality for session management, configuration of courses, and downloading course materials.
- Session management with support for Shibboleth authentication (Currently only for KIT)
- JSON-based configuration for courses via CLI
- Downloading course materials with progress indication
- Syncing course materials to a local directory
### Build from source
1. Clone the repository:
```bash
git clone
cd iliasScraper
- Build the project using Cargo:
cargo run -r -- [COMMAND]Usage: ilias [COMMAND]
Commands:
tree Fetch a course tree
sync Sync courses to local storage
cli Start interactive command line interface
config Show or edit configuration
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
The configuration is stored in a JSON file located at ~/.config/ilias/config.json. You can edit this file directly or use the CLI to manage your courses and settings.
{
"path": "<path_to_download_directory>",
"courses": [
{
"name": "<course_name>", // Directory and display name for the course
"id": 1234567 // ILIAS course ID
}
]
}This repository provides a nix Flake. You can use it either as a standard package or via the provided Home Manager module to manage your configuration declaratively.
This is the cleanest way to use iliasScraper. It handles both the package installation and the creation of ~/.config/ilias/config.json.
In your flake.nix:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
iliasScraper.url = "github:FelixSmtt/iliasScraper";
};
outputs = { iliasScraper, ... }: {
# In your Home Manager configuration:
homeConfigurations."user" = home-manager.lib.homeManagerConfiguration {
modules = [
iliasScraper.homeManagerModules.default
{
programs.ilias = {
enable = true;
settings = {
path = "/home/user/Documents/University";
courses = [
{ name = "Linear Algebra"; id = 1234567; }
{ name = "Computer Science 1"; id = 7654321; }
];
};
};
}
];
};
};
}If you just want the binary without Nix-managed configuration:
{
description = "A Rust library for scraping data from the ILIAS learning management system";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/release-25.11";
iliasScraper = {
url = "github:FelixSmtt/iliasScraper";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, iliasScraper, ... }: {
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
{
environment.systemPackages = [
inputs.iliasScraper.packages.${pkgs.system}.default
];
}
];
};
};
}This project is licensed under the MIT License. See the LICENSE file for details.