lj-clitools/generators/fromRedis.py

75 lines
1.9 KiB
Python
Raw Normal View History

2020-11-11 16:31:08 +00:00
#!/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
2020-11-11 21:14:38 +00:00
Licensed under GNU GPLv3
2020-11-11 16:31:08 +00:00
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
2020-11-11 16:31:08 +00:00
def debug(*args, **kwargs):
if( verbose == False ):
return
print(*args, file=sys.stderr, **kwargs)
argsparser = argparse.ArgumentParser(description="Dummy generator")
2020-11-11 16:31:08 +00:00
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()
2020-11-11 16:31:08 +00:00
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"
})
2020-11-11 16:31:08 +00:00
r = redis.Redis( host=ip, port=port )
2020-11-11 16:31:08 +00:00
while True:
cli.startFrame()
2020-11-11 16:31:08 +00:00
# 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))
2020-11-11 16:31:08 +00:00
print(line, flush=True);
cli.endFrame()