view bin/ascoltami2 @ 695:0b8fc64a896c

goocanvas drawing a little Ignore-this: aae191151f454a98caa671b65d080029
author Drew Perttula <drewp@bigasterisk.com>
date Fri, 08 Jun 2012 07:54:32 +0000
parents a301a0039c66
children 8d87a3528369
line wrap: on
line source

#!bin/python
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
from light9 import networking, showconfig


import BaseHTTPServer
BaseHTTPServer.BaseHTTPRequestHandler.log_message = \
                     lambda self, format, *args: None

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
        thread.start_new(web.httpserver.runbasic,
                         (makeWebApp(self).wsgifunc(),
                          ('0.0.0.0', musicPort)))

        mainloop = gobject.MainLoop()
        mainloop.run()

    def onEOS(self, song):
        self.player.pause()
        self.player.seek(0)

        # stop here for now- no go-button behavior
        return
        try:
            nextSong = self.playlist.nextSong(song)
        except NoSuchSong: # we're at the end of the playlist
            return

        self.player.setSong(nextSong, play=False)

if __name__ == "__main__":
    logging.basicConfig()
    log = logging.getLogger()
    gobject.threads_init()

    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)