import csv import re import urllib.request import json import os import time SPREADSHEET_ID = "1bsO07WG6ymV4UzHZyB0ayrKCn2zv67SpFaeE4Zmghcc" GID = "0" CSV_URL = f"https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/gviz/tq?tqx=out:csv&gid={GID}" def parse_csv_data(reader): result_data = {} users = {} # 1. Zeile auslesen (für die Deadline in Zelle A1) # next() holt das nächste (hier: das erste) Element aus dem Reader first_row = next(reader, None) if first_row and len(first_row) > 0: result_data['deadline'] = first_row[0].strip() # 2. Den restlichen Reader durchlaufen (ab Zeile 2) for row in reader: # Prüfen, ob die Zeile mindestens 5 Spalten hat (wegen Spalte E) # und ob Spalte A (Index 0) nicht leer ist if len(row) >= 5 and row[0].strip(): users[row[0].strip()] = row[4].strip() result_data['users'] = users return result_data def update_data(): try: req = urllib.request.Request(CSV_URL, headers={"User-Agent": "Mozilla/5.0"}) response = urllib.request.urlopen(req) lines = [line.decode("utf-8") for line in response.readlines()] reader = csv.reader(lines) parsed_data = parse_csv_data(reader) with open("countries.json", "w") as f: f.write(json.dumps(parsed_data)) return parsed_data except Exception as e: return {"success": False, "error": str(e)} def read_data(): file_path = "countries.json" max_age_seconds = 60 * 60 # eine Stunde Cache-Dauer # Prüfen, ob die Datei existiert und wie alt sie ist if os.path.exists(file_path): # Mtime = Letzte Änderungszeit der Datei in Sekunden seit Epoch file_age = time.time() - os.path.getmtime(file_path) if file_age > max_age_seconds: update_data() else: # Falls die Datei noch gar nicht existiert, direkt initial Daten holen update_data() # Nach dem potenziellen Update die Datei einlesen with open(file_path, "r", encoding="utf-8") as f: return json.load(f) if __name__ == "__main__": # bindet an 0.0.0.0, damit es im gesamten Netzwerk erreichbar ist read_data()