Files @ f066d6e874db
Branch filter:

Location: light9/bin/ascoltami2 - annotation

drewp@bigasterisk.com
2to3 with these fixers: all idioms set_literal
Ignore-this: cbd28518218c2f0ddce8c4f92d3b8b33
#!bin/python
from run_local import log
from twisted.internet import reactor
import web, _thread, sys, optparse, logging
from rdflib import URIRef
sys.path.append(".")
sys.path.append('/usr/lib/python2.7/dist-packages')  # For gi

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