No description
Find a file
2026-03-05 16:52:30 +01:00
.vscode Initial commit: amazon invoice downloader 2026-03-04 14:02:29 +01:00
scripts Reduce default login wait to 60 seconds 2026-03-04 16:54:58 +01:00
.dockerignore make projekt as docker 2026-03-04 14:20:53 +01:00
.gitignore make projekt as docker 2026-03-04 14:20:53 +01:00
docker-compose.yml Add session-expiry email notifications with configurable SMTP 2026-03-05 16:52:30 +01:00
Dockerfile make projekt as docker 2026-03-04 14:20:53 +01:00
Dockerfile.novnc Fix noVNC entrypoint format handling and DISPLAY warning 2026-03-04 16:58:52 +01:00
main.py Add session-expiry email notifications with configurable SMTP 2026-03-05 16:52:30 +01:00
README.md Add session-expiry email notifications with configurable SMTP 2026-03-05 16:52:30 +01:00
requirements.txt Fix noVNC startup and pin Playwright version for container compatibility 2026-03-04 16:27:54 +01:00
startConfigure.sh Reduce default login wait to 60 seconds 2026-03-04 16:54:58 +01:00
startDownload.sh Add noVNC configure flow and helper start scripts 2026-03-04 15:03:56 +01:00

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 Zeitzone
  • configure --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-YYYY auf your-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-json nutzen.
  • Der Login ist absichtlich sessionbasiert statt Passwortspeicherung.
  • Bitte nur gemaess Amazon-AGB nutzen.