MODIFIED SCRIPTS — Date Cutoff from .env ========================================= Date: 2026-03-24 All scripts below now read their cutoff window from the .env file. Update the corresponding variable in .env to change how far back each scraper goes. .env variables to update: -------------------------- TENDERA_DAYS=30 → tendara.at cutoff (days back from today) EUROPA_DAYS=30 → europa (ted.europa.eu) cutoff NIPEZ_DAYS=30 → nen.nipez.cz cutoff EVERGABE_DAYS=30 → evergabe-online.de cutoff Modified scripts: ----------------- tendara/tendara_keywords.py - Added: from datetime import timedelta - Added: CUTOFF_DAYS = int(os.getenv('TENDERA_DAYS', 30)) - Added: CUTOFF_DATE = (datetime.now() - timedelta(days=CUTOFF_DAYS)).strftime('%Y-%m-%d') - Changed: SORTING_DATE range filter 'gte' from None → CUTOFF_DATE (API-level filter) tendara/tendara_all.py - Added: from datetime import timedelta - Added: CUTOFF_DAYS = int(os.getenv('TENDERA_DAYS', 30)) - Added: CUTOFF_DATE = (datetime.now() - timedelta(days=CUTOFF_DAYS)).strftime('%Y-%m-%d') - Added: SORTING_DATE range filter in fetch_page() payload (API-level filter) europa-python/europa_keywords.py - Changed: CUTOFF_DATE from hardcoded timedelta(days=30) → timedelta(days=int(os.getenv('EUROPA_DAYS', 30))) evergabe/evergabe_keywords.py - Added: from datetime import timedelta - Added: CUTOFF_DAYS = int(os.getenv('EVERGABE_DAYS', 30)) - Added: CUTOFF_DATE = datetime.now() - timedelta(days=CUTOFF_DAYS) - Added: per-row publication_date check in scrape_cpv() — stops pagination when record older than cutoff