#!/usr/bin/python3 # -*- coding: utf-8 -*- # -*- mode: Python -*- ''' This generator reads a frame from redis v0.1.0 Use it to create feedback loops by writing to the same frame or to copy the frame from someone else Licensed under GNU GPLv3 by cocoa ''' from __future__ import print_function import ast import argparse import json import redis import sys import time from os import path, getcwd abspath, filename = path.split(path.realpath(__file__ )) sys.path.insert(0, path.join(abspath,"../lib")) from clitools import Clitools def debug(*args, **kwargs): if( verbose == False ): return print(*args, file=sys.stderr, **kwargs) argsparser = argparse.ArgumentParser(description="Dummy generator") argsparser.add_argument("-k","--key",required=True,help="Redis key to look after",default=30,type=str) argsparser.add_argument("-i","--ip",help="IP address of the Redis server ",default="127.0.0.1",type=str) argsparser.add_argument("-p","--port",help="Port of the Redis server ",default="6379",type=str) argsparser.add_argument("-f","--fps",help="Frame Per Second",default=30,type=int) argsparser.add_argument("-v","--verbose",action="store_true",help="Verbose output") args = argsparser.parse_args() fps = args.fps verbose = args.verbose key = args.key ip = args.ip port = args.port cli = Clitools({ "verbose" : verbose, "looptime" : 1 / fps, "name" : "generator::fromRedis" }) r = redis.Redis( host=ip, port=port ) while True: cli.startFrame() # Read from Redis line = r.get(key) # Decode as list of tuples pointsList = ast.literal_eval(line.decode('ascii')) # convert to list of lists pointsList = [list(elem) for elem in pointsList] # Convert to JSON string line = json.dumps( pointsList ) cli.debug(name,"Key:{} line:{}".format(key,line)) print(line, flush=True); cli.endFrame()