Mercurial > code > home > repos > light9
view bin/effectsequencer @ 1827:cc65c40802f6
checkpoint show data
Ignore-this: b36efe828d197f5940ff1ba2ef8c05d0
author | drewp@bigasterisk.com |
---|---|
date | Sat, 09 Jun 2018 17:41:45 +0000 |
parents | b680d6f50a93 |
children | 8e0e5b3db301 |
line wrap: on
line source
#!bin/python """ plays back effect notes from the timeline """ from __future__ import division from run_local import log from twisted.internet import reactor from light9.greplin_cyclone import StatsForCyclone from rdfdb.syncedgraph import SyncedGraph from light9 import networking, showconfig from greplin import scales import optparse, sys, logging import cyclone.web from rdflib import URIRef from light9.effect.sequencer import Sequencer, sendToCollector, Updates from light9 import clientsession class App(object): def __init__(self, show, session): self.show = show self.session = session self.graph = SyncedGraph(networking.rdfdb.url, "effectSequencer") self.graph.initiallySynced.addCallback(self.launch) self.stats = scales.collection('/', scales.PmfStat('sendLevels'), scales.PmfStat('getMusic'), scales.PmfStat('evals'), scales.PmfStat('sendOutput'), scales.IntStat('errors'), ) def launch(self, *args): self.seq = Sequencer( self.graph, lambda settings: sendToCollector('effectSequencer', self.session, settings)) self.cycloneApp = cyclone.web.Application(handlers=[ (r'/()', cyclone.web.StaticFileHandler, {"path" : "light9/effect/", "default_filename" : "sequencer.html"}), (r'/updates', Updates), (r'/stats', StatsForCyclone), ], debug=True, seq=self.seq, graph=self.graph, stats=self.stats) reactor.listenTCP(networking.effectSequencer.port, self.cycloneApp) log.info("listening on %s" % networking.effectSequencer.port) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option('--show', help='show URI, like http://light9.bigasterisk.com/show/dance2008', default=showconfig.showUri()) parser.add_option("-v", "--verbose", action="store_true", help="logging.DEBUG") parser.add_option("--twistedlog", action="store_true", help="twisted logging") clientsession.add_option(parser) (options, args) = parser.parse_args() log.setLevel(logging.DEBUG if options.verbose else logging.INFO) if not options.show: raise ValueError("missing --show http://...") session = clientsession.getUri('effectSequencer', options) app = App(URIRef(options.show), session) if options.twistedlog: from twisted.python import log as twlog twlog.startLogging(sys.stderr) reactor.run()