| .vscode | ||
| scripts | ||
| .dockerignore | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.novnc | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
| startConfigure.sh | ||
| startDownload.sh | ||
Amazon Invoice Downloader
Ladet Amazon-Rechnungen fuer einen konfigurierbaren Zeitraum herunter.
Voraussetzungen
- Windows/macOS/Linux
- Python 3.10+
- Ein Amazon-Konto
Installation
cd c:\projekte\amazon_invoice_downloader
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python -m playwright install chromium
Einmalige Konfiguration
python main.py configure --marketplace de --download-dir "C:\Users\<USER>\Downloads\amazon_rechnungen"
Explizit fuer Deutschland (Sprache/Zeitzone):
python main.py configure --marketplace de --locale de-DE --timezone Europe/Berlin --currency EUR --download-dir "C:\Users\<USER>\Downloads\amazon_rechnungen"
Falls Amazon trotzdem Englisch zeigt, Sprache explizit per URL erzwingen:
python main.py configure --marketplace de --amazon-language de_DE --locale de-DE --timezone Europe/Berlin --currency EUR
Session-Ablauf per E-Mail melden (Default-Empfaenger ist stefan.heyn@googlemail.com):
python main.py configure --notify-email stefan.heyn@googlemail.com --smtp-host smtp.gmail.com --smtp-port 587 --smtp-user "<dein-user>" --smtp-password "<app-passwort>"
Dann oeffnet sich ein Browser. Dort bei Amazon anmelden und auf Enter im Terminal druecken. Die Session wird lokal gespeichert in:
~/.amazon_invoice_downloader/config.json~/.amazon_invoice_downloader/storage_state.json
Rechnungen herunterladen
python main.py download --from 2025-01-01 --to 2025-12-31
Docker Compose
Container-Image bauen:
cd c:\projekte\amazon_invoice_downloader
docker compose build
Session direkt im Container erzeugen (Ubuntu mit Desktop/X11):
sudo apt-get update && sudo apt-get install -y x11-xserver-utils
xhost +local:docker
docker compose --profile configure run --rm amazon-invoice-configure
xhost -local:docker
Im geöffneten Browser bei Amazon anmelden und danach im Terminal Enter drücken.
Die Session liegt anschließend in ./state/storage_state.json.
Session auf Ubuntu Server ohne GUI (noVNC):
docker compose --profile configure-novnc build --no-cache amazon-invoice-configure-novnc
docker compose --profile configure-novnc up amazon-invoice-configure-novnc
Dann im Browser auf deinem PC oeffnen:
http://<SERVER-IP>:6080/vnc.html
Im noVNC-Fenster bei Amazon einloggen. Die Session wird nach LOGIN_WAIT_SECONDS (Standard: 60s) automatisch gespeichert.
Anschließend kannst du den noVNC-Container beenden (Ctrl+C im Terminal).
Alternative per Hilfsskript:
chmod +x ./startConfigure.sh
./startConfigure.sh
Rechnungen im Container herunterladen:
docker compose run --rm amazon-invoice-downloader download --from 2025-01-01 --to 2025-12-31 --headless true
Alternative per Hilfsskript:
chmod +x ./startDownload.sh
./startDownload.sh 2025-01-01 2025-12-31
Persistente Ordner:
./state->/root/.amazon_invoice_downloader(config + session)./downloads->/downloads(Ausgabedateien)
Falls noch nicht vorhanden, werden config.json und storage_state.json beim configure-Lauf in ./state angelegt.
Optionaler Zielordner im Container:
docker compose run --rm amazon-invoice-downloader download --from 2025-01-01 --to 2025-12-31 --output /downloads --headless true
Optionen:
--output <pfad>: anderes Zielverzeichnis--max-pages 25: Anzahl Bestellseiten, die durchsucht werden--headless true|false: Browser sichtbar oder unsichtbar--debug: zeigt, wie viele Detailseiten und Rechnungslinks gefunden werden--debug-json [pfad]: schreibt Laufdetails als JSON (ohne Pfad: Standarddatei)configure --locale de-DE --timezone Europe/Berlin --amazon-language de_DE: erzwingt deutsche Sprache (inkl.language=de_DE) und Berliner Zeitzoneconfigure --notify-email ... --smtp-host ...: aktiviert E-Mail-Benachrichtigung bei Session-Ablauf
SMTP kann alternativ auch ueber Umgebungsvariablen gesetzt werden:
NOTIFY_EMAIL,SMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASSWORD,SMTP_FROM,SMTP_STARTTLS,SMTP_SSL
Hinweise
- Das Skript setzt pro Jahr den Amazon-Filter
timeFilter=year-YYYYaufyour-orders/orders, damit Zeitraeume wie Januar 2025 korrekt durchlaufen werden. - Die Datumspruefung erfolgt direkt auf der Uebersichtsseite in den
order-card-Elementen; Detailseiten sind nicht mehr der Primaerpfad. - Amazon-HTML kann sich aendern. Falls keine Rechnungen gefunden werden,
--debug --debug-jsonnutzen. - Der Login ist absichtlich sessionbasiert statt Passwortspeicherung.
- Bitte nur gemaess Amazon-AGB nutzen.