#!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()