Skip to main content

PFERD

Programm zum Flotten, Einfachen Runterladen von Dateien

Other resources:

Installation

Direct download

Binaries for Linux, Windows and Mac can be downloaded directly from the latest release.

With pip

Ensure you have at least Python 3.11 installed. Run the following command to install PFERD or upgrade it to the latest version:

# install from GitHub
$ pip install --upgrade git+https://github.com/Garmelon/PFERD@latest
# install from PyPi
$ pip install PFERD

The use of venv is recommended.

With package managers

Unofficial packages are available for:

See also PFERD's repology page.

Basic usage

PFERD can be run directly from the command line with no config file. Run pferd -h to get an overview of available commands and options. Run pferd <command> -h to see which options a command has.

For example, you can download your personal desktop from the KIT ILIAS like this:

$ pferd kit-ilias-web desktop <output_directory>

Also, you can download most ILIAS pages directly like this:

$ pferd kit-ilias-web <url> <output_directory>

PFERD supports other ILIAS instances as well, using the ilias-web crawler (see the config section on ilias-web for more detail on the base-url, client-id and login-type parameters). Without --client-id, shibboleth login is used. Use --login-type to choose explicitly:

$ pferd ilias-web \
    --base-url https://ilias.my-university.example \
    --client-id My_University desktop \
    <output_directory>

However, the CLI only lets you download a single thing at a time, and the resulting command can grow long quite quickly. Because of this, PFERD can also be used with a config file.

To get started, just take a command you've been using and add --dump-config directly after pferd, like this:

$ pferd --dump-config kit-ilias-web <url> <output_directory>

This will make PFERD write its current configuration to its default config file path. You can then run pferd without a command and it will execute the config file. Alternatively, you can use --dump-config-to and specify a path yourself. Using --dump-config-to - will print the configuration to stdout instead of a file, which is a good way to see what is actually going on when using a CLI command.

Another good way to see what PFERD is doing is the --explain option. When enabled, PFERD explains in detail what it is doing and why. This can help with debugging your own config.

If you don't want to run all crawlers from your config file, you can specify the crawlers you want to run with --crawler or -C, like this:

$ pferd -C crawler1 -C crawler2

Advanced usage

PFERD supports lots of different options. For example, you can configure PFERD to use your system's keyring instead of prompting you for your username and password. PFERD also supports transformation rules that let you rename or exclude certain files.

For more details, see the comprehensive config format documentation.

Example

This example downloads a few courses from the KIT ILIAS with a common keyring authenticator. It reorganizes and ignores some files.

[DEFAULT]
# All paths will be relative to this.
# The crawler output directories will be <working_dir>/Foo and <working_dir>/Bar.
working_dir = ~/stud
# If files vanish from ILIAS the local files are not deleted, allowing us to
# take a look at them before deleting them ourselves.
on_conflict = no-delete

[auth:ilias]
type = keyring
username = foo

[crawl:Foo]
type = kit-ilias-web
auth = auth:ilias
# Crawl a course by its ID (found as `ref_id=ID` in the URL)
target = 1234567

# Plaintext files are easier to read by other tools
links = plaintext

transform =
  # Ignore unneeded folders
  Online-Tests --> !
  Vorlesungswerbung --> !

  # Rename folders
  Lehrbücher --> Vorlesung
  # Note the ">>" arrow head which lets us apply further rules to files moved to "Übung"
  Übungsunterlagen -->> Übung

  # Move exercises to own folder. Rename them to "Blatt-XX.pdf" to make them sort properly
  "Übung/(\d+). Übungsblatt.pdf" -re-> Blätter/Blatt-{i1:02}.pdf
  # Move solutions to own folder. Rename them to "Blatt-XX-Lösung.pdf" to make them sort properly
  "Übung/(\d+). Übungsblatt.*Musterlösung.pdf" -re-> Blätter/Blatt-{i1:02}-Lösung.pdf

  # The course has nested folders with the same name - flatten them
  "Übung/(.+?)/\\1" -re-> Übung/{g1}

[crawl:Bar]
type = kit-ilias-web
auth = auth:ilias
target = 1337420

Metadata

Release files for PFERD 3.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PFERD 3.10.0
File Size Uploaded Provenance Actions
pferd-3.10.0.tar.gz 84.4 kB With provenance Details for pferd-3.10.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for PFERD 3.10.0
File Interpreter ABI Platform Actions
pferd-3.10.0-py3-none-any.whl Python 3 none any Details for pferd-3.10.0-py3-none-any.whl

Total release size: 177.5 kB

Release files / pferd-3.10.0.tar.gz

Download URL pferd-3.10.0.tar.gz
Size 84.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8ba7f642eabd518f428845177d7f08e129171db4002c98b3c193fffc2d630c46
BLAKE2b-256 checksum
How to use checksums
abf6e8467cbaae08b5cae54a2ce31fddbc076d13174d9e5e028cfcb535195a46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pferd-3.10.0-py3-none-any.whl

Download URL pferd-3.10.0-py3-none-any.whl
Size 93.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c54e3f2aa35da95e77a8e38e2d76b3cd03a895894debb11e685e2e0e52dccd6
BLAKE2b-256 checksum
How to use checksums
ae2e3b0bf734f9691e7a21f48547c7e5ebefb04da356c6edf74f3d912d08029b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for PFERD 3.10.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pferd-3.10.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page