view bin/vidrefsetup @ 1637:cb39ef3dc1d5

fix colorselect so you can drag off the edge to pick white or pure-color Ignore-this: b234a17b44c9a7ae3ea219c436e78acb
author Drew Perttula <drewp@bigasterisk.com>
date Sat, 10 Jun 2017 04:51:54 +0000
parents 95dfce5c12ce
children 6fa4288da8a6
line wrap: on
line source

#!bin/python
""" this should be part of vidref, but I haven't worked out sharing
camera captures with a continuous camera capture yet """

from run_local import log
import sys, optparse, logging, json, subprocess, datetime
from dateutil.tz import tzlocal
from twisted.internet import reactor, defer
import cyclone.web, cyclone.httpclient, cyclone.websocket
from rdflib import RDF, URIRef, Literal
import pyjade.utils
from light9.rdfdb.syncedgraph import SyncedGraph
from light9.rdfdb.patch import Patch
from light9.namespaces import L9, DCTERMS
from light9 import networking, showconfig

from lib.cycloneerr import PrettyErrorHandler

class RedirToCamera(PrettyErrorHandler, cyclone.web.RequestHandler):
    def get(self):
        return self.redirect(networking.picamserve.path(
            'pic?' + self.request.query))
        
class UrlToCamera(PrettyErrorHandler, cyclone.web.RequestHandler):
    def get(self):
        self.set_header('Content-Type', 'text/plain')
        self.write(networking.picamserve.path('pic'))
                   
class VidrefCamRequest(PrettyErrorHandler, cyclone.web.RequestHandler):
    def get(self):
        graph = self.settings.graph
        show = showconfig.showUri()
        with graph.currentState(tripleFilter=(show, None, None)) as g:
            ret = g.value(show, L9['vidrefCamRequest'])
            if ret is None:
                self.send_error(404)
            self.redirect(ret)
            
    def put(self):
        graph = self.settings.graph
        show = showconfig.showUri()
        graph.patchObject(context=URIRef(show + '/vidrefConfig'),
                          subject=show,
                          predicate=L9['vidrefCamRequest'],
                          newObject=URIRef(self.get_argument('uri')))
        self.send_error(202)

def main():
    parser = optparse.OptionParser()
    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)
    graph = SyncedGraph(networking.rdfdb.url, "vidrefsetup")

    # deliberately conflict with vidref since they can't talk at once to cam
    port = networking.vidref.port 

    reactor.listenTCP(port, cyclone.web.Application(handlers=[
        (r'/pic', RedirToCamera),
        (r'/picUrl', UrlToCamera),
        (r'/vidrefCamRequest', VidrefCamRequest),
        (r'/()', cyclone.web.StaticFileHandler, {'path': 'light9/vidref/', 'default_filename': 'vidref.html'}),
        ], debug=True, graph=graph))
    log.info("serving on %s" % port)
    reactor.run()

main()