From 346c5db046fb1dc17127e62bd785c13f50aa0683 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Sat, 6 Dec 2025 18:08:13 +0100 Subject: [PATCH] track data --- modules/web.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/modules/web.py b/modules/web.py index cb584d7..195746a 100644 --- a/modules/web.py +++ b/modules/web.py @@ -1,4 +1,4 @@ -import multiprocessing +import multiprocessing, json from . import PlayerModule, Track from http.server import HTTPServer, BaseHTTPRequestHandler @@ -10,21 +10,33 @@ data_lock = manager.Lock() class Handler(BaseHTTPRequestHandler): def do_GET(self): global data - if self.path == "/": + if self.path == "/api/playlist": rdata = repr(data["playlist"]).encode() - self.send_response(200) - self.send_header("Content-Length", str(len(rdata))) - self.end_headers() - self.wfile.write(rdata) + elif self.path == "/api/track": + rdata = repr(data["track"]).encode() + else: rdata = b"?" + self.send_response(200) + self.send_header("Content-Length", str(len(rdata))) + self.end_headers() + self.wfile.write(rdata) -def web(): - HTTPServer(("0.0.0.0", 3001), Handler).serve_forever() +def web(): HTTPServer(("0.0.0.0", 3001), Handler).serve_forever() p = multiprocessing.Process(target=web) class Module(PlayerModule): def on_new_playlist(self, playlist: list[Track]) -> None: global data, data_lock - with data_lock: data["playlist"] = playlist + with data_lock: + api_data = [] + for track in playlist: api_data.append({"path": str(track.path), "fade_out": track.fade_out, "fade_in": track.fade_in, "official": track.official, "args": track.args, "offset": track.offset}) + data["playlist"] = json.dumps(api_data) + def on_new_track(self, index: int, track: Track, next_track: Track | None) -> None: + global data, data_lock + with data_lock: + track_data = {"path": str(track.path), "fade_out": track.fade_out, "fade_in": track.fade_in, "official": track.official, "args": track.args, "offset": track.offset} + if next_track: next_track_data = {"path": str(next_track), "fade_out": next_track.fade_out, "fade_in": next_track.fade_in, "official": next_track.official, "args": next_track.args, "offset": next_track.offset} + else: next_track_data = None + data["track"] = json.dumps({"index": index, "track": track_data, "next_track": next_track_data}) def shutdown(self): global p p.terminate()