diff --git a/bin/captureDevice b/bin/captureDevice --- a/bin/captureDevice +++ b/bin/captureDevice @@ -15,25 +15,25 @@ from greplin import scales from run_local import log from lib.cycloneerr import PrettyErrorHandler -from light9.namespaces import L9 +from light9.namespaces import L9, RDF from light9 import networking, showconfig from light9.rdfdb.syncedgraph import SyncedGraph from light9.paint.capture import writeCaptureDescription from light9.greplin_cyclone import StatsForCyclone from light9.effect.settings import DeviceSettings from light9.effect.sequencer import sendToCollector +from light9.rdfdb.patch import Patch stats = scales.collection('/webServer', scales.PmfStat('setAttr')) - class Camera(object): def __init__(self, imageUrl): self.imageUrl = imageUrl def takePic(self, uri, writePath): log.info('takePic %s', uri) - return treq.get(self.imageUrl).addCallbacks(lambda r: self._done(writePath, r), - log.error) + return treq.get(self.imageUrl).addCallbacks( + lambda r: self._done(writePath, r), log.error) @inlineCallbacks def _done(self, writePath, response): @@ -56,6 +56,7 @@ class Capture(object): settleTime = .5 def __init__(self, graph, dev): self.graph = graph + self.dev = dev def steps(a, b, n): return [round(a + (b - a) * i / n, 5) for i in range(n)] @@ -77,6 +78,15 @@ class Capture(object): (dev, L9['color'], '#ffffff'), ])) + self.devTail = dev.rsplit('/')[-1] + self.session = URIRef('/'.join([showconfig.showUri(), + 'capture', self.devTail, self.captureId])) + self.ctx = URIRef(self.session + '/index') + + self.graph.patch(Patch(addQuads=[ + (self.session, RDF.type, L9['CaptureSession'], self.ctx), + ])) + self.numPics = 0 self.settingsCache = set() self.step().addErrback(log.error) @@ -101,20 +111,17 @@ class Capture(object): yield deferSleep(self.firstMoveTime if self.numPics == 0 else self.settleTime) - dev = settings.devices()[0] - devTail = dev.rsplit('/')[-1] picId = 'pic%s' % self.numPics - path = '/'.join(['capture', devTail, self.captureId, picId]) + '.jpg' - ctx = URIRef('/'.join([showconfig.showUri(), - 'capture', devTail, self.captureId, 'index'])) - uri = URIRef('/'.join([showconfig.showUri(), - 'capture', devTail, self.captureId, picId])) + path = '/'.join([ + 'capture', self.devTail, self.captureId, picId]) + '.jpg' + uri = URIRef(self.session + '/' + picId) yield camera.takePic(uri, os.path.join(showconfig.root(), path)) self.numPics += 1 - writeCaptureDescription(self.graph, ctx, uri, dev, path, - self.settingsCache, settings) + writeCaptureDescription(self.graph, self.ctx, self.session, uri, + self.dev, + path, self.settingsCache, settings) reactor.callLater(0, self.step)