Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iliasScraper

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.

Features

  • 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

Installation


### Build from source

1. Clone the repository:

```bash
git clone
cd iliasScraper
  1. Build the project using Cargo:
cargo run -r -- [COMMAND]

Usage

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

Configuration

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
    }
  ]
}

Nix Integration

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.

1. Using the Home Manager Module (Recommended)

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; }
              ];
            };
          };
        }
      ];
    };
  };
}

2. Adding to System Packages

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
          ];
        }
      ];
    };
  };
}

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

A scraper for the ILIAS learning management system.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages