#!bin/python from run_local import log from twisted.internet import reactor import web, _thread, 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 gi.repository import GObject, Gst, Gtk 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__": GObject.threads_init() 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()