Programm zum Flotten, Einfachen Runterladen von Dateien
Go to file
I-Al-Istannen 1ca6740e05 Improve log messages when parsing ILIAS HTML
Previously some logs were split around an "await", which isn't a great
idea.
2021-05-27 17:59:22 +02:00
.github/workflows Set up build and release workflow 2021-05-24 17:27:39 +02:00
PFERD Improve log messages when parsing ILIAS HTML 2021-05-27 17:59:22 +02:00
scripts Add script for releasing new versions 2021-05-24 20:23:14 +02:00
.gitignore Set up pyinstaller 2021-05-24 15:21:25 +02:00
CHANGELOG.md Document --debug-transforms 2021-05-26 11:47:51 +02:00
CONFIG.md Fix error when capturing group is None 2021-05-27 15:41:00 +02:00
DEV.md Add script for releasing new versions 2021-05-24 20:23:14 +02:00
LICENSE Fix merge marker in LICENSE 2020-12-07 22:55:28 +01:00
mypy.ini Extend mypy config 2021-04-29 11:44:47 +02:00
pferd.py Document why /pferd.py exists 2021-05-25 13:31:29 +02:00
pyproject.toml Do project setup from scratch 2021-04-27 00:07:54 +02:00
README.md Update README, CHANGELOG 2021-05-25 17:18:31 +02:00
setup.cfg Use certifi to ensure CA certificates are bundled in pyinstaller 2021-05-25 18:24:06 +02:00

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.8 installed. Run the following command to install PFERD or upgrade it to the latest version:

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

The use of venv is recommended.

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>

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, for example.

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 --> !

  # Move exercises to own folder. Rename them to "Blatt-XX.pdf" to make them sort properly
  "Übungsunterlagen/(\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
  "Übungsunterlagen/(\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
  "Übungsunterlagen/(.+?)/\\1/(.*)" -re-> Übung/{g1}/{g2}

  # Rename remaining folders
  Übungsunterlagen --> Übung
  Lehrbücher --> Vorlesung

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