Go to file
Maximilian Bosch 08e1658d7f
flake.lock: Update
Flake lock file updates:

• Updated input 'crane':
    'github:ipetkov/crane/8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e' (2023-07-07)
  → 'github:ipetkov/crane/7ce92819802bc583b7e82ebc08013a530f22209f' (2024-08-18)
• Removed input 'crane/flake-compat'
• Removed input 'crane/flake-utils'
• Removed input 'crane/rust-overlay'
• Updated input 'flake-compat':
    'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17)
  → 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25)
  → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3c7487575d9445185249a159046cc02ff364bff8' (2023-07-06)
  → 'github:nixos/nixpkgs/8a3354191c0d7144db9756a74755672387b702ba' (2024-08-18)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/5a932f10ac4bd59047d6e8b5780750ec76ea988a' (2023-07-09)
  → 'github:oxalica/rust-overlay/48e61fe824f5823e4f3f15dd9a75c19c63649269' (2024-08-20)
• Removed input 'rust-overlay/flake-utils'
2024-08-20 21:00:32 +02:00
.github/workflows CI: Remove unneeded dbus installation 2022-01-06 16:01:47 +01:00
src Update dependencies 2023-07-24 08:50:34 +02:00
.gitignore Updated .gitignore to exclude .vscode 2022-01-21 15:25:47 +01:00
build.sh build script: require up to date lock file 2021-06-04 10:13:33 +02:00
Cargo.lock Update dependencies 2024-03-06 12:18:28 +01:00
Cargo.toml Version 0.3.7 2023-07-24 08:52:31 +02:00
CHANGELOG.md Version 0.3.7 2023-07-24 08:52:31 +02:00
flake.lock flake.lock: Update 2024-08-20 21:00:32 +02:00
flake.nix flake: Init 2023-07-09 11:54:42 +02:00
LICENSE Update dependencies and license 2021-05-28 13:21:49 +02:00
README.md Update README.md with another tool 2023-11-18 18:19:22 +01:00
rustfmt.toml Split downloading logic into modules 2021-06-02 11:13:13 +02:00
shell.nix Basic shell.nix 2021-05-13 13:29:18 +02:00

KIT-ILIAS-downloader

Download content from ILIAS. That includes:

  • files
  • exercise sheets and solutions
  • Opencast lectures
  • forum posts

Installation

Windows/Linux users: go to the releases and download the executable for your operating system.

macOS users: Install Rust:

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

and compile from source:

$ cargo install --all-features --git 'https://github.com/FliegendeWurst/KIT-ILIAS-downloader'

Usage

First, open a terminal. Navigate to the directory that contains the downloaded binary.

Then execute the program (use -o <directory> to specify the download directory):

$ KIT-ILIAS-downloader -o ./ILIAS

By default, only content on your personal desktop will be downloaded.
Use the --sync-url option to download a specific page and its sub-pages: (the URL should be copied from an ILIAS link, not the browser URL bar)

$ KIT-ILIAS-downloader -o ./ILIAS/WS2021-HM1 --sync-url 'https://ilias.studium.kit.edu/ilias.php?ref_id=1276968&cmdClass=ilrepositorygui&cmdNode=uk&baseClass=ilRepositoryGUI'

Options

KIT-ILIAS-downloader 0.3.5

USAGE:
    KIT-ILIAS-downloader [FLAGS] [OPTIONS] --output <output>

FLAGS:
        --all                 Download all courses
        --check-videos        Re-check OpenCast lectures (slow)
        --combine-videos      Combine videos if there is more than one stream (requires ffmpeg)
        --content-tree        Use content tree (experimental)
    -f                        Re-download already present files
    -t, --forum               Download forum content
    -h, --help                Prints help information
        --keep-session        Attempt to re-use session cookies
        --keyring             Use the system keyring
    -n, --no-videos           Do not download Opencast videos
        --save-ilias-pages    Save overview pages of ILIAS courses and folders
    -s, --skip-files          Do not download files
    -V, --version             Prints version information
    -v                        Verbose logging

OPTIONS:
    -j, --jobs <jobs>              Parallel download jobs [default: 1]
    -o, --output <output>          Output directory
        --pass-path <pass-path>    Path inside `pass(1)` to the password for your KIT account
    -P, --password <password>      KIT account password
    -p, --proxy <proxy>            Proxy, e.g. socks5h://127.0.0.1:1080
        --rate <rate>              Requests per minute [default: 8]
        --sync-url <sync-url>      ILIAS page to download
    -U, --username <username>      KIT account username

.iliasignore

.gitignore syntax can be used in a .iliasignore file: (located in the output directory)

# example 1: only download a single course
/*/
!/InsertCourseHere/
# example 2: only download files related to one tutorial
/Course/Tutorien/*/
!/Course/Tutorien/Tut* 3/

Credentials

You can use the --user and --keyring options to get/store the password using the system password store:

$ KIT-ILIAS-downloader -U uabcd --keyring [...]

If you use pass, you can use the --pass-path option to specify which password store entry to use:

$ KIT-ILIAS-downloader -U uabcd --pass-path edu/kit/uskyk [...]

You can also save your username and password in a .iliaslogin file: (located in the output folder)

username
password

When running the downloader multiple times in a short period of time, you may want to use the --keep-session flag. If specified, the downloader will save and restore session cookies (.iliassession file in the output directory).

Renaming course names (0.2.24+)

If you'd like to avoid unwieldy course names (e.g. "24030 Programmierparadigmen"), you can create a course_names.toml file in the output directory. It should contain the desired mapping of course names to folder names, e.g.:

"24030  Programmierparadigmen" = "ProPa"
"Numerische Mathematik  für die Fachrichtungen Informatik und Ingenieurwesen" = "Numerik"

Troubleshooting

Error when using --keyring option

PlatformFailure(Zbus(MethodError("org.freedesktop.DBus.Error.ServiceUnknown", Some("The name org.freedesktop.secrets was not provided by any .service files"), Msg { type: Error, sender: "org.freedesktop.DBus", reply-serial: 2, body: Signature: [
        s (115),
] })))

If you get the above error when activating the --keyring option, you need to make sure that your system keyring service (KeePassXC, GNOME Keyring, ...) is running.

Other useful programs