def main(): graph = getGraph() graph.query = graph.queryd index = ImageIndex(graph) iset = ImageSet(graph, index) @route('/update', methods=['POST']) def update(request): log.info('updating %r', request.args) index.update(URIRef(request.args['uri'][0])) log.info('done updating') # schedule updateSorts? maybe they need to schedule themselves return 'indexed' @route('/set.json') def main(request): pairs = [] for k, vs in request.args.items(): for v in vs: pairs.append((k, v)) q = queryFromParams(pairs) result = iset.request(q) return json.dumps(result) run("0.0.0.0", networking.imageSet()[1])
def __init__(self): pool = Pool(processes=2) self.graph = getGraph() files = findFiles(opts) self.progressQueue = Queue() reporter = Process(target=ProgressReport, args=(self.progressQueue, len(files))) reporter.start() result = pool.map(self.cacheFile, enumerate(files), chunksize=5) self.progressQueue.put('END') log.info("finished, %s results", len(result)) reporter.join()
def main(): graph = getGraph() graph.query = graph.queryd index = ImageIndex(graph) iset = ImageSet(graph, index) @route('/update', methods=['POST']) def update(request): log.info('updating %r', request.args) index.update(URIRef(request.args['uri'][0])) log.info('done updating') # schedule updateSorts? maybe they need to schedule themselves return 'indexed' @route('/created', methods=['GET']) def created(request): def tOut(uri): t = index.byUri[uri]['t'] if t is None: return 'None' return t.isoformat() return '\n'.join(tOut(URIRef(uri)) for uri in request.args['uri']) @route('/set.json') def main(request): pairs = [] for k, vs in request.args.items(): for v in vs: pairs.append((k, v)) q = queryFromParams(pairs) t1 = time.time() result = iset.request(q) log.info('iset.request in %.1f ms', 1000 * (time.time() - t1)) return json.dumps(result) run("0.0.0.0", networking.imageSet()[1])
stmts.append((newAltUri, PHO[k], Literal(v))) graph.add(stmts, context=ctx) return "added %s statements to context %s" % (len(stmts), ctx) def pickNewUri(self, uri, tag): for suffix in itertools.count(1): proposed = URIRef("%s/alt/%s%s" % (uri, tag, suffix)) if not graph.contains((proposed, None, None)): return proposed def personAgeString(isoBirthday, photoDate): try: sec = iso8601.parse(str(photoDate)) except Exception: sec = iso8601.parse(str(photoDate) + '-0700') birth = iso8601.parse(isoBirthday) days = (sec - birth) / 86400 if days / 30 < 12: return "%.1f months" % (days / 30) else: return "%.1f years" % (days / 365) if __name__ == '__main__': graph = db.getGraph() run('0.0.0.0', networking.oneImageServer()[1])
picUri = scanFs.fileChanged(filename) log.info('picUri is %r', picUri) if picUri is not None: # this will fail on videos (though i wish i could get the Pre metadata out of them) scanExif.addPic(picUri, rerunScans=True) mr = MediaResource(graph, picUri) if mr.isVideo(): mr.videoProgress() # todo: freshen thumbs here too? that should be on a lower # priority queue than getting the exif/file data v2.imageset.client.changed(picUri) quick = False graph = getGraph() scanFs = ScanFs(graph, '/my/pic') scanExif = ScanExif(graph) syncs = {} subdirs = picSubDirs( syncs, SesameSync, graph, quick) # root directories for fileschanged to watch underneath if quick: onChange('/my/site/photo/input/local.n3') onChange('/my/pic/flickr/3716645105_27bca1ba5a_o.jpg') onChange('/my/pic/phonecam/dt-2009-07-16/CIMG0074.jpg') onChange('/my/pic/digicam/dl-2009-07-20/DSC_0092.JPG')
import sys from klein import run, route import json sys.path.append("../..") from db import getGraph import auth graph = getGraph() @route('/allTags') def allTags(request): tags = set() for row in graph.queryd( "SELECT ?tag WHERE { ?pic scot:hasTag [ rdfs:label ?tag ] }"): tag = unicode(row['tag']) if tag in auth.hiddenTags: continue tags.add(tag) tags = sorted(tags) return json.dumps({'tags': tags}) if __name__ == '__main__': run("0.0.0.0", 8054)
import logging logging.basicConfig() import unittest from db import getGraph from imageurl import ImageSetDesc from ns import SITE logging.getLogger('restkit.client').setLevel(logging.WARN) graph1 = getGraph() class TestImageSetDesc(unittest.TestCase): def testCanonicalOmitsCurrentParam(self): s = ImageSetDesc(graph1, None, "/set?tag=t¤t=foo") self.assertEqual(s.canonicalSetUri(), SITE["set?tag=t"]) def testCanonicalIncludesDirParam(self): s = ImageSetDesc(graph1, None, "/set?dir=http%3A%2F%2Fexample.com%2Fd1¤t=foo") self.assertEqual(s.canonicalSetUri(), SITE["set?dir=http%3A%2F%2Fexample.com%2Fd1"]) def testCanonicalIncludesStarParam(self): s = ImageSetDesc(graph1, None, "/set?dir=http%3A%2F%2Fexample.com%2Fd1&star=only") self.assertEqual( s.canonicalSetUri(), SITE["set?dir=http%3A%2F%2Fexample.com%2Fd1&star=only"])
?pic wgs:location [ wgs:lat ?lat ; wgs:long ?long ] FILTER (?lat > ?lat1 && ?lat < ?lat2 && ?long > ?long1 && ?long < ?long2 ) }""", initBindings=bindings) print "%s -> %s rows in %s" % (bindings, len(rows), time.time() - t1) if len(rows) > 200: random.shuffle(rows) print "reducing" rows = rows[:200] # or two pics at same point should make a cluster too self.write({ 'markers': [ dict(uri=row['pic'], lat=row['lat'], long=row['long']) for row in rows ] }) if __name__ == '__main__': reactor.listenTCP( 9088, cyclone.web.Application(handlers=[ (r"/(|gui.js)", cyclone.web.StaticFileHandler, { 'path': '.', 'default_filename': 'index.html' }), (r'/photos', Photos), ], graph=db.getGraph())) reactor.run()
from arango import ArangoClient import db if __name__ == "__main__": authoring_graph = db.getGraph("authoring") user_col = db.getVertexCollection(authoring_graph, "v2_users") tweets_col = db.getVertexCollection(authoring_graph, "v2_tweets") authoring_col = db.getEdgeDefinition(authoring_graph, "v2_authoring", ["v2_users"], ["v2_tweets"]) # user_col.insert({'_key': 'user1', 'screen_name': 'User1'}) # user_col.insert({'_key': 'user2', 'screen_name': 'User2'}) # tweets_col.insert({'_key': 'tweet1', 'text': 't1'}) # tweets_col.insert({'_key': 'tweet2', 'text': 't2'}) authoring_col.insert({ '_key': '13421322', '_to': 'v2_tweets/tweet2', '_from': 'v2_users/user2' }) authoring_col.insert({ '_key': '13421321', '_to': 'v2_tweets/tweet1', '_from': 'v2_users/user1' })
long2=SparqlFloat(max(float(arg("e")), float(arg("w")))), ) rows = graph.queryd(""" PREFIX wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#> SELECT DISTINCT ?pic ?lat ?long WHERE { ?pic wgs:location [ wgs:lat ?lat ; wgs:long ?long ] FILTER (?lat > ?lat1 && ?lat < ?lat2 && ?long > ?long1 && ?long < ?long2 ) }""", initBindings=bindings) print "%s -> %s rows in %s" % (bindings, len(rows), time.time() - t1) if len(rows) > 200: random.shuffle(rows) print "reducing" rows = rows[:200] # or two pics at same point should make a cluster too self.write({'markers': [dict(uri=row['pic'], lat=row['lat'], long=row['long']) for row in rows]}) if __name__ == '__main__': reactor.listenTCP( 9088, cyclone.web.Application(handlers=[ (r"/(|gui.js)", cyclone.web.StaticFileHandler, { 'path': '.', 'default_filename': 'index.html' }), (r'/photos', Photos), ], graph=db.getGraph())) reactor.run()
import logging logging.basicConfig() import unittest from db import getGraph from imageurl import ImageSetDesc from ns import SITE logging.getLogger('restkit.client').setLevel(logging.WARN) graph1 = getGraph() class TestImageSetDesc(unittest.TestCase): def testCanonicalOmitsCurrentParam(self): s = ImageSetDesc(graph1, None, "/set?tag=t¤t=foo") self.assertEqual(s.canonicalSetUri(), SITE["set?tag=t"]) def testCanonicalIncludesDirParam(self): s = ImageSetDesc(graph1, None, "/set?dir=http%3A%2F%2Fexample.com%2Fd1¤t=foo") self.assertEqual(s.canonicalSetUri(), SITE["set?dir=http%3A%2F%2Fexample.com%2Fd1"]) def testCanonicalIncludesStarParam(self): s = ImageSetDesc(graph1, None, "/set?dir=http%3A%2F%2Fexample.com%2Fd1&star=only") self.assertEqual(s.canonicalSetUri(), SITE["set?dir=http%3A%2F%2Fexample.com%2Fd1&star=only"]) def testCanonicalIncludesDateParam(self): s = ImageSetDesc(graph1, None, "/set?date=2010-11-20") self.assertEqual(s.canonicalSetUri(), SITE["set?date=2010-11-20"]) def testCanonicalErrorsOnRandomParam(self): s = ImageSetDesc(graph1, None, "/set?random=10") self.assertRaises(ValueError, s.canonicalSetUri)