From c48ed231553ceb0a63c28abd8e7a4ee9f119ca8e Mon Sep 17 00:00:00 2001 From: Felix Pankratz Date: Sat, 20 Dec 2025 13:33:59 +0100 Subject: [PATCH] helper webservice --- fahrplan/schedhelp.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 fahrplan/schedhelp.py diff --git a/fahrplan/schedhelp.py b/fahrplan/schedhelp.py new file mode 100644 index 0000000..49dfbd9 --- /dev/null +++ b/fahrplan/schedhelp.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +import json +import datetime +import requests + +from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler + +def run(): + schedule = requests.get('https://api.events.ccc.de/congress/2025/schedule.json').json() # json.load(open('schedule.json', 'r')) + talks = [] + for day in schedule['schedule']['conference']['days']: + for room in ['Zero', 'One', 'Fuse', 'Ground']: #day['rooms']: + talks += day['rooms'][room] + + + talks.sort(key=lambda talk: talk['date']) + now = datetime.datetime.now() + + upcoming = [] + for talk in talks: + if datetime.datetime.fromisoformat(talk['date']).timestamp() < now.timestamp(): + continue + upcoming.append({'start': talk['start'], 'room': talk['room'], 'title': talk['title']}) + + return json.dumps(upcoming) + + +class Handler(BaseHTTPRequestHandler): + def do_GET(self): + data = run().encode("utf-8") + self.send_response(200) + self.send_header("Content-Type", "text/plain; charset=utf-8") + self.send_header("Content-Length", str(len(data))) + self.end_headers() + self.wfile.write(data) + +if __name__ == '__main__': + server = ThreadingHTTPServer(("0.0.0.0", 8000), Handler) + server.serve_forever()