diff bin/captureDevice @ 1585:17da56a3c8df

group device captures into sessions, limit solver to specific ones Ignore-this: b91d858ebb435973b9742bed00567ffd
author Drew Perttula <drewp@bigasterisk.com>
date Tue, 30 May 2017 08:37:25 +0000
parents 2239d5648932
children 9fe3052f8ced
line wrap: on
line diff
--- a/bin/captureDevice	Tue May 30 07:57:52 2017 +0000
+++ b/bin/captureDevice	Tue May 30 08:37:25 2017 +0000
@@ -15,25 +15,25 @@
 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 @@
     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 @@
                     (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 @@
         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)