#!/usr/bin/env python3 """ Bakdatera artiklar för att simulera publicering över tid. Används för att testa flödet med historisk data. """ import json import random from datetime import datetime, timedelta, timezone from pathlib import Path def bakdatera_artiklar(filnamn, dagar_tillbaka=30): """ Bakdatera artiklar i en kandidatfil. Args: filnamn: Sökväg till kandidatfil dagar_tillbaka: Antal dagar bakåt att fördela artiklar över """ with open(filnamn, "r", encoding="utf-8") as f: data = json.load(f) kandidater = data["kandidater"] antal = len(kandidater) print(f"Bakdaterar {antal} artiklar över {dagar_tillbaka} dagar...") # Fördela artiklar jämnt över dagarna for i, kandidat in enumerate(kandidater): # Beräkna dag (0 = idag, dagar_tillbaka = längst bak) dag = int((i / antal) * dagar_tillbaka) # Slumpa tid på dagen (06:00 - 22:00) timme = random.randint(6, 22) minut = random.randint(0, 59) # Beräkna datum datum = datetime.now(timezone.utc) - timedelta(days=dag, hours=random.randint(0, 12)) datum = datum.replace(hour=timme, minute=minut, second=0, microsecond=0) # Uppdatera kandidat datum_str = datum.strftime("%Y-%m-%d") tid_str = datum.isoformat() kandidat["kandidat_id"] = f"K-{datum.strftime('%Y%m%d')}-test-{i+1:03d}" kandidat["post"]["proveniens"]["skapad"] = datum_str kandidat["post"]["proveniens"]["uppdaterad"] = datum_str print(f" {i+1}. {kandidat['post']['namn']['sv']} → {datum_str} {timme:02d}:{minut:02d}") # Uppdatera metadata data["genererad"] = datetime.now(timezone.utc).strftime("%Y-%m-%d") data["beskrivning"] = f"Landvex produktionsagent — bakdaterade kandidatposter ({antal} artiklar över {dagar_tillbaka} dagar)" # Spara with open(filnamn, "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2) print(f"\n✓ Sparade bakdaterade artiklar till {filnamn}") return antal if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Användning: python3 bakdatera.py [dagar_tillbaka]") sys.exit(1) filnamn = sys.argv[1] dagar = int(sys.argv[2]) if len(sys.argv) > 2 else 30 bakdatera_artiklar(filnamn, dagar)