Zum Inhalt

Examples

Grundlegende Verwendung

Einfacher Download

form-download-helper /tmp/ozg ck@novareto.de mein-passwort 2 https://formulare.uv-kooperation.de/ozg/rul/ozg-90

Ausgabe:

INFO! Download - https://formulare.uv-kooperation.de/ozg/rul/ozg-90 💥
Write - /tmp/ozg/ozg-90/v2_0/schema.json 
Write - /tmp/ozg/ozg-90/v2_0/deptree._json 
Write - /tmp/ozg/ozg-90/v2_0/form.pt 
Write - /tmp/ozg/ozg-90/v2_0/form.py 
Write - /tmp/ozg/ozg-90/v2_0/__init__.py 
Write - /tmp/ozg/ozg-90/v2_0/tests/test_form.py 
READY !!! 💥

Batch-Processing

Mehrere Versionen herunterladen

#!/bin/bash
BASE_URI="https://formulare.uv-kooperation.de/ozg/rul/ozg-90"
USERNAME="ck@novareto.de"
PASSWORD="mein-passwort"
TARGET_DIR="/tmp/ozg"

# Versionen 1, 2 und 3 herunterladen
for version in 1 2 3; do
    echo "Downloading version $version..."
    form-download-helper "$TARGET_DIR" "$USERNAME" "$PASSWORD" "$version" "$BASE_URI"
done

Mehrere Formulare herunterladen

#!/bin/bash
USERNAME="ck@novareto.de"  
PASSWORD="mein-passwort"
TARGET_DIR="/tmp/ozg"
VERSION=2

# Liste der Formular-URIs
FORMS=(
    "https://formulare.uv-kooperation.de/ozg/rul/ozg-90"
    "https://formulare.uv-kooperation.de/ozg/rul/ozg-91" 
    "https://formulare.uv-kooperation.de/ozg/rul/ozg-92"
)

for form_uri in "${FORMS[@]}"; do
    echo "Downloading from $form_uri..."
    form-download-helper "$TARGET_DIR" "$USERNAME" "$PASSWORD" "$VERSION" "$form_uri"
done

CI/CD Integration

GitLab CI Job

download-forms:
  stage: prepare
  script:
    - pip install git+https://git.bg-kooperation.de/novareto/form_download_helper.git
    - form-download-helper ./forms $FORM_USERNAME $FORM_PASSWORD 2 $FORM_URI
  artifacts:
    paths:
      - forms/
    expire_in: 1 day
  only:
    - main

GitHub Actions

name: Download Forms
on:
  workflow_dispatch:
  schedule:
    - cron: '0 2 * * *'  # Täglich um 2 Uhr

jobs:
  download:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.9'
      - name: Install tool
        run: pip install git+https://git.bg-kooperation.de/novareto/form_download_helper.git
      - name: Download forms
        run: |
          form-download-helper ./forms \
            ${{ secrets.FORM_USERNAME }} \
            ${{ secrets.FORM_PASSWORD }} \
            2 \
            https://formulare.uv-kooperation.de/ozg/rul/ozg-90
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: forms
          path: forms/

Python Integration

Als Python-Modul verwenden

from pathlib import Path
from form_download_helper import DownloadOZG

# Downloader initialisieren
downloader = DownloadOZG(
    path="/tmp/ozg",
    uri="https://formulare.uv-kooperation.de/ozg/rul/ozg-90",
    username="ck@novareto.de", 
    password="mein-passwort",
    version=2
)

# Download starten
downloader.get()

Mit Umgebungsvariablen

import os
from pathlib import Path
from form_download_helper import download

# Konfiguration aus Umgebung
config = {
    'path': Path(os.getenv('FORM_TARGET_DIR', '/tmp/ozg')),
    'username': os.getenv('FORM_USERNAME'), 
    'password': os.getenv('FORM_PASSWORD'),
    'version': int(os.getenv('FORM_VERSION', '2')),
    'uri': os.getenv('FORM_URI')
}

# Download mit Fehlerbehandlung
try:
    download(**config)
    print("Download erfolgreich!")
except Exception as e:
    print(f"Fehler beim Download: {e}")

Erweiterte Konfiguration

Mit Docker

FROM python:3.9-slim

RUN pip install git+https://git.bg-kooperation.de/novareto/form_download_helper.git

WORKDIR /app
VOLUME ["/app/forms"]

ENTRYPOINT ["form-download-helper"]
CMD ["/app/forms", "user", "pass", "2", "https://formulare.uv-kooperation.de/ozg/rul/ozg-90"]
# Docker Container ausführen
docker run -v $(pwd)/forms:/app/forms \
  -e FORM_USERNAME=ck@novareto.de \
  -e FORM_PASSWORD=mein-passwort \
  form-downloader

Monitoring und Logging

import logging
from form_download_helper import DownloadOZG

# Logging konfigurieren
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('form_download.log'),
        logging.StreamHandler()
    ]
)

class MonitoredDownloadOZG(DownloadOZG):
    def get(self):
        logging.info(f"Starting download from {self.uri}")
        try:
            super().get()
            logging.info("Download completed successfully")
        except Exception as e:
            logging.error(f"Download failed: {e}")
            raise

# Verwendung
downloader = MonitoredDownloadOZG(
    "/tmp/ozg", 
    "https://formulare.uv-kooperation.de/ozg/rul/ozg-90",
    "ck@novareto.de", 
    "mein-passwort", 
    2
)
downloader.get()