| .vscode | ||
| .gitignore | ||
| .python-version | ||
| main.py | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
"Der Adler" PDF Downloader
A command-line tool to download PDF archives of "Der Adler" magazine from the BWLV (Baden-Württembergischer Luftfahrtverband) website.
Features
✨ CLI - Rich formatting with progress bars and colorized output
🚀 Parallel Downloads - Configurable concurrent downloads (default: 5)
📁 Smart Organization - Automatically organizes PDFs by year
♻️ Resume Support - Skips already downloaded files
🎯 Selective Downloads - Download specific years or all available years
🎨 Rich Progress Tracking - Real-time download progress with speed and ETA
Installation
This project uses uv for dependency management. If you don't have it installed:
curl -LsSf https://astral.sh/uv/install.sh | sh
Then install the project dependencies:
uv sync
Usage
Download All Available Years
uv run main.py
Download Specific Years
Download only PDFs from 2024 and 2025:
uv run main.py --year 2024 --year 2025
Custom Output Directory
uv run main.py --output-dir /path/to/pdfs
Adjust Concurrent Downloads
Download up to 10 files in parallel:
uv run main.py --max-concurrent 10
Get Help
uv run main.py --help
Command-Line Options
| Option | Description | Default |
|---|---|---|
--url TEXT |
URL of the 'der adler' online archive page | BWLV archive page |
--max-concurrent INTEGER |
Maximum concurrent downloads (1-20) | 5 |
--year INTEGER |
Specific year(s) to download (repeatable) | All years |
--output-dir PATH |
Directory to save downloaded PDFs | ./downloaded |
--help |
Show help message and exit | - |
Output Structure
Downloaded PDFs are organized by year:
downloaded/
├── 2025/
│ ├── adler01-2025.pdf
│ ├── adler02-2025.pdf
│ └── ...
├── 2024/
│ ├── adler01-2024.pdf
│ ├── adler02-2024.pdf
│ └── ...
└── ...
How It Works
- Fetches the BWLV online archive page
- Parses HTML to extract PDF links grouped by year (2016-2025)
- Filters by requested years (if specified)
- Checks for existing files to avoid re-downloading
- Downloads PDFs in parallel with progress tracking
- Organizes files into year-based directories
Dependencies
- Python 3.13+
- beautifulsoup4 - HTML parsing
- httpx - Async HTTP client for downloads
- rich - Beautiful terminal output
- rich-click - Enhanced Click with Rich formatting
Development
The project follows Python best practices:
- 📝 Type hints throughout
- 🎨 Rich logging (no print statements)
- ⚡ Async/await for efficient parallel downloads
- 🧹 Clean code with proper error handling
License
Credits
Built for downloading archives from BWLV "Der Adler" online.