def doTask(self, tstamp): """Download image.""" tstamp = coils.string2time(tstamp) fname = coils.time2fname(tstamp) + '.jpg' dest_dir = os.path.join(self._config['pics_dir'], coils.time2dir(tstamp)) dest_fname = os.path.join( dest_dir, fname, ) if os.path.exists(dest_fname): print('Skipping {}'.format(dest_fname)) return try: os.makedirs(dest_dir) except os.error: pass saved = os.getcwd() os.chdir(dest_dir) url = '{}/pics/{}.jpg'.format( self._url, coils.time2fname(tstamp, full=True), ) print(url) wget.download(url, bar=None) os.chdir(saved) # Propagate timestamp downstream. return tstamp
def doTask(self, tstamp): """Read image from disk and propagate it downstream.""" tstamp = coils.string2time(tstamp) fname = coils.time2fname(tstamp, full=True) + '.jpg' fname = os.path.join(self._config['pics_dir'], fname) image = cv2.imread(fname) return tstamp, image
def slide(): """Return image of given slider time.""" # Time this functions. timer = coils.Timer() # Parse the URL parameter "time". errors = list() try: query = flask.request.args.get('time1') tstamp1 = coils.string2time(query) assert tstamp1 != None except: errors.append('Failed to parse "time1" parameter.') try: query = flask.request.args.get('time2') tstamp2 = coils.string2time(query) assert tstamp2 != None except: errors.append('Failed to parse "time2" parameter.') try: query = flask.request.args.get('amount') amount = float(query) except: errors.append('Failed to parse "amount" parameter.') # Bail on any errors. if errors: return flask.jsonify(errors=errors) # Compute target time. diff = (tstamp2 - tstamp1).total_seconds() delta = dt.timedelta(seconds=diff*amount) tstamp3 = tstamp1 + delta # Get time closest to target time. result_time = getNearestTime(tstamp3) # Convert time to url. if result_time: result_url = coils.time2fname(coils.string2time(result_time), full=True) result_url = 'pics/{}.jpg'.format(result_url) else: result_url = None return flask.jsonify( result_time=result_time, result_url=result_url, elapsed=timer.get().total_seconds(), )
def info(): """Return system information.""" now = dt.datetime.now() now = coils.time2string(now) size = db.session.query(mapping.Datum).\ filter(mapping.Datum.name=='size')[0] latest_tstamp = db.session.query(mapping.Datum).\ filter(mapping.Datum.name=='latest_tstamp')[0] latest_url = coils.time2fname( coils.string2time( latest_tstamp.value), full=True) latest_url = 'pics/{}.jpg'.format(latest_url) load_avg = os.getloadavg() return flask.jsonify( server_time=now, db_size=size.value, latest_tstamp=latest_tstamp.value, latest_url=latest_url, load_avg='{:.2f}, {:.2f}, {:.2f}'.format(*load_avg), )