Beispiel #1
0
    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
Beispiel #2
0
 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
Beispiel #3
0
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(),
        )
Beispiel #4
0
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),
        )