view bin/ascoltami2 @ 876:e263c4bd73f9

pass dmx choice into dmxserver Ignore-this: 182e13858be1aa68fc956e345dbbf8ed
author Drew Perttula <drewp@bigasterisk.com>
date Fri, 07 Jun 2013 07:13:24 +0000
parents 224d6cd7e1e4
children cca75951554a
line wrap: on
line source

#!bin/python
from run_local import log
from twisted.internet import gtk2reactor, reactor
import web, thread, gobject, sys, optparse, logging
from rdflib import URIRef
sys.path.append(".")
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


class App:
    def __init__(self, graph, show):
        self.graph = graph
        self.player = Player(onEOS=self.onEOS)
        self.show = show
        self.playlist = Playlist.fromShow(graph, show)

    def run(self, musicPort):
        # the cherrypy server would wedge when vidref pounds on it; this
        # one seems to run
        #gtk2reactor.install(useGtk=False)
        reactor.listenTCP(musicPort, makeWebApp(self))
        log.info("listening on %s" % musicPort)
        reactor.run()

    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() # this is in gtk2reactor too

    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")
    (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))
    app.run(networking.musicPlayer.port)