view bin/ascoltami2 @ 1993:a322fba0035c

tintable cyc effect Ignore-this: 61408125389e6146f5835d56a26df07a
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 09 Jun 2019 18:31:47 +0000
parents f66dbe512025
children 5154f5a23e85
line wrap: on
line source

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