Mercurial > code > home > repos > light9
view bin/ascoltami2 @ 2042:8849c9e5da30 main
strip dmx_usb_module/.git dir
author | drewp@bigasterisk.com |
---|---|
date | Mon, 09 May 2022 21:44:04 -0700 |
parents | 5154f5a23e85 |
children |
line wrap: on
line source
#!bin/python from run_local import log from twisted.internet import reactor import sys, optparse, logging from rdflib import URIRef import gi gi.require_version('Gst', '1.0') gi.require_version('Gtk', '3.0') from light9.ascoltami.player import Player from light9.ascoltami.playlist import Playlist, NoSuchSong from light9.ascoltami.webapp import makeWebApp, songUri, songLocation from light9 import networking, showconfig from standardservice.scalessetup import gatherProcessStats from gi.repository import GObject, Gst gatherProcessStats() class App(object): def __init__(self, graph, show): self.graph = graph self.player = Player(onEOS=self.onEOS) self.show = show self.playlist = Playlist.fromShow(graph, show) def onEOS(self, song): self.player.pause() self.player.seek(0) thisSongUri = songUri(graph, URIRef(song)) try: nextSong = self.playlist.nextSong(thisSongUri) except NoSuchSong: # we're at the end of the playlist return self.player.setSong(songLocation(graph, nextSong), play=False) if __name__ == "__main__": Gst.init(None) 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") (options, args) = parser.parse_args() log.setLevel(logging.DEBUG if options.verbose else logging.INFO) if not options.show: raise ValueError("missing --show http://...") graph = showconfig.getGraph() app = App(graph, URIRef(options.show)) if options.twistedlog: from twisted.python import log as twlog twlog.startLogging(sys.stderr) reactor.listenTCP(networking.musicPlayer.port, makeWebApp(app)) log.info("listening on %s" % networking.musicPlayer.port) reactor.run()