Files
@ 7cb53b510a6a
Branch filter:
Location: light9/bin/vidrefsetup - annotation
7cb53b510a6a
2.6 KiB
text/plain
draw notes, colors. position adjusters better.
Ignore-this: 1ccdb7109cfa67cc0486d9418b42be4e
Ignore-this: 1ccdb7109cfa67cc0486d9418b42be4e
087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 6fa4288da8a6 6fa4288da8a6 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 a38955ba6f40 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 087f6cbe4b22 | #!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 rdfdb.syncedgraph import SyncedGraph
from 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()
|