# HG changeset patch # User drewp@bigasterisk.com # Date 2023-05-19 23:59:45 # Node ID 8cab6a80215a1e24726a32455854479eabffb47c # Parent c921e1cae0af28d5d22deefd8317cc07ba47adab asco cleanup, including a bugfix (rdflib dropped graph.label?) diff --git a/bin/ascoltami b/bin/ascoltami --- a/bin/ascoltami +++ b/bin/ascoltami @@ -1,4 +1,4 @@ #!/bin/zsh pnpm exec vite -c light9/ascoltami/vite.config.ts & -PYTHONPATH=`pwd` pdm run python light9/ascoltami/main.py +pdm run python light9/ascoltami/main.py wait diff --git a/light9/ascoltami/musictime_client.py b/light9/ascoltami/musictime_client.py --- a/light9/ascoltami/musictime_client.py +++ b/light9/ascoltami/musictime_client.py @@ -1,5 +1,6 @@ import time, json, logging -from typing import Dict +from typing import Dict, cast +from twisted.internet.interfaces import IReactorTime from twisted.internet import reactor from twisted.internet.defer import inlineCallbacks @@ -80,11 +81,11 @@ class MusicTime(object): self.position = position self.onChange(position) - reactor.callLater(self.period, self.pollMusicTime) + cast(IReactorTime, reactor).callLater(self.period, self.pollMusicTime) def eb(err): log.warn("talking to ascoltami: %s", err.getErrorMessage()) - reactor.callLater(2, self.pollMusicTime) + cast(IReactorTime, reactor).callLater(2, self.pollMusicTime) d = treq.get(networking.musicPlayer.path("time").toPython()) d.addCallback(cb) diff --git a/light9/ascoltami/webapp.py b/light9/ascoltami/webapp.py --- a/light9/ascoltami/webapp.py +++ b/light9/ascoltami/webapp.py @@ -11,7 +11,7 @@ from cycloneerr import PrettyErrorHandle from light9.metrics import metricsRoute from light9.namespaces import L9 from light9.showconfig import getSongsFromShow, showUri, songOnDisk -from rdflib import URIRef +from rdflib import RDFS, Graph, URIRef from twisted.internet import reactor from twisted.internet.interfaces import IReactorTime @@ -124,12 +124,20 @@ class timeStreamResource(cyclone.websock class songs(PrettyErrorHandler, cyclone.web.RequestHandler): def get(self): - graph = self.settings.app.graph + graph = cast(Graph, self.settings.app.graph) songs = getSongsFromShow(graph, self.settings.app.show) self.set_header("Content-Type", "application/json") - self.write(json.dumps({"songs": [{"uri": s, "path": graph.value(s, L9['showPath']), "label": graph.label(s)} for s in songs]})) + self.write(json.dumps({ + "songs": [ + { # + "uri": s, + "path": graph.value(s, L9['songFilename']), + "label": graph.value(s, RDFS.label) + } for s in songs + ] + })) class songResource(PrettyErrorHandler, cyclone.web.RequestHandler): diff --git a/light9/ascoltami/webapp_test.py b/light9/ascoltami/webapp_test.py new file mode 100644 --- /dev/null +++ b/light9/ascoltami/webapp_test.py @@ -0,0 +1,2 @@ +# todo +# test that GET /songs doesn't break, etc