Files
2026-08-13 08:11:10 +02:00

73 lines
2.2 KiB
Python

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()