mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Systemd changes | root script | URL support for gif effects (#1319)
* Systemd changes and URL option for Gif Effects * Add grayscale to gif effect * WebUI adjustments * Rename version to .version * Copy runHyperionAsRoot.sh to rpi packages * Pack script into all unix packages * Start hyperion only after network is available * Snap builds removed due to poor server connection * Flexible updateHyperionUser.sh * updateHyperionUser script entered in the package * Print help on none sudo execute * Corrected embedded Python location * Replacement for the QWindowsScreen grabWindow function * Updated to latest 2.x mbedtls version 2.27 Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
This commit is contained in:
@@ -3,8 +3,14 @@
|
||||
"script" : "gif.py",
|
||||
"args" :
|
||||
{
|
||||
"image" : ":fire.gif",
|
||||
"cropBottom": 0,
|
||||
"cropLeft": 0,
|
||||
"cropRight": 0,
|
||||
"cropTop": 0,
|
||||
"file" : ":fire.gif",
|
||||
"fps" :25,
|
||||
"grayscale": false,
|
||||
"imageSource": "file",
|
||||
"reverse" : false
|
||||
}
|
||||
}
|
||||
|
@@ -1,18 +1,27 @@
|
||||
import hyperion, time
|
||||
|
||||
# Get the parameters
|
||||
imageFile = hyperion.args.get('image')
|
||||
imageData = hyperion.args.get('url') if hyperion.args.get('imageSource', "") == "url" else hyperion.args.get('file')
|
||||
framesPerSecond = float(hyperion.args.get('fps', 25))
|
||||
reverse = bool(hyperion.args.get('reverse', False))
|
||||
reverse = bool(hyperion.args.get('reverse', False))
|
||||
cropLeft = int(hyperion.args.get('cropLeft', 0))
|
||||
cropTop = int(hyperion.args.get('cropTop', 0))
|
||||
cropRight = int(hyperion.args.get('cropRight', 0))
|
||||
cropBottom = int(hyperion.args.get('cropBottom', 0))
|
||||
grayscale = bool(hyperion.args.get('grayscale', False))
|
||||
|
||||
sleepTime = 1./framesPerSecond
|
||||
imageList = []
|
||||
imageFrameList = []
|
||||
|
||||
if imageFile:
|
||||
imageList = [reversed(hyperion.getImage(imageFile))] if reverse else hyperion.getImage(imageFile)
|
||||
if imageData:
|
||||
if reverse:
|
||||
imageFrameList = reversed(hyperion.getImage(imageData, cropLeft, cropTop, cropRight, cropBottom, grayscale))
|
||||
else:
|
||||
imageFrameList = hyperion.getImage(imageData, cropLeft, cropTop, cropRight, cropBottom, grayscale)
|
||||
|
||||
# Start the write data loop
|
||||
while not hyperion.abort() and imageList:
|
||||
for image in imageList:
|
||||
hyperion.setImage(image["imageWidth"], image["imageHeight"], image["imageData"])
|
||||
time.sleep(sleepTime)
|
||||
while not hyperion.abort() and imageFrameList:
|
||||
for image in imageFrameList:
|
||||
if not hyperion.abort():
|
||||
hyperion.setImage(image["imageWidth"], image["imageHeight"], image["imageData"])
|
||||
time.sleep(sleepTime)
|
||||
|
@@ -3,8 +3,14 @@
|
||||
"script" : "gif.py",
|
||||
"args" :
|
||||
{
|
||||
"image" : ":lights.gif",
|
||||
"cropBottom": 0,
|
||||
"cropLeft": 0,
|
||||
"cropRight": 0,
|
||||
"cropTop": 0,
|
||||
"file" : ":lights.gif",
|
||||
"fps" :25,
|
||||
"reverse" : false
|
||||
"grayscale": false,
|
||||
"imageSource": "file",
|
||||
"reverse": false
|
||||
}
|
||||
}
|
||||
|
16
effects/matrix.json
Normal file
16
effects/matrix.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name" : "Matrix",
|
||||
"script" : "gif.py",
|
||||
"args" :
|
||||
{
|
||||
"cropBottom": 0,
|
||||
"cropLeft": 0,
|
||||
"cropRight": 0,
|
||||
"cropTop": 0,
|
||||
"fps": 30,
|
||||
"grayscale": false,
|
||||
"imageSource": "url",
|
||||
"reverse": false,
|
||||
"url": "https://i.gifer.com/1j6F.gif"
|
||||
}
|
||||
}
|
@@ -4,17 +4,79 @@
|
||||
"title":"edt_eff_gif_header",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"image": {
|
||||
"imageSource": {
|
||||
"type": "string",
|
||||
"title": "edt_eff_image_source",
|
||||
"format": "radio",
|
||||
"enum": ["url", "file"],
|
||||
"options" : {
|
||||
"enum_titles" : ["edt_eff_image_source_url", "edt_eff_image_source_file"]
|
||||
},
|
||||
"propertyOrder" : 1
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"title":"edt_eff_url",
|
||||
"default": "",
|
||||
"options": {
|
||||
"dependencies": {
|
||||
"imageSource": "url"
|
||||
}
|
||||
},
|
||||
"propertyOrder" : 2
|
||||
},
|
||||
"file": {
|
||||
"type": "string",
|
||||
"title":"edt_eff_image",
|
||||
"format" : "url",
|
||||
"options" :
|
||||
{
|
||||
"upload" : true,
|
||||
"auto_upload" : true
|
||||
"auto_upload" : true,
|
||||
"dependencies": {
|
||||
"imageSource": "file"
|
||||
}
|
||||
},
|
||||
"default": "",
|
||||
"propertyOrder" : 1
|
||||
"propertyOrder" : 3
|
||||
},
|
||||
"cropLeft": {
|
||||
"type": "integer",
|
||||
"title":"edt_conf_v4l2_cropLeft_title",
|
||||
"default": 0,
|
||||
"minimum" : 0,
|
||||
"step" : 1,
|
||||
"propertyOrder" : 4
|
||||
},
|
||||
"cropTop": {
|
||||
"type": "integer",
|
||||
"title":"edt_conf_v4l2_cropTop_title",
|
||||
"default": 0,
|
||||
"minimum" : 0,
|
||||
"step" : 1,
|
||||
"propertyOrder" : 5
|
||||
},
|
||||
"cropRight": {
|
||||
"type": "integer",
|
||||
"title":"edt_conf_v4l2_cropRight_title",
|
||||
"default": 0,
|
||||
"minimum" : 0,
|
||||
"step" : 1,
|
||||
"propertyOrder" : 6
|
||||
},
|
||||
"cropBottom": {
|
||||
"type": "integer",
|
||||
"title":"edt_conf_v4l2_cropBottom_title",
|
||||
"default": 0,
|
||||
"minimum" : 0,
|
||||
"step" : 1,
|
||||
"propertyOrder" : 7
|
||||
},
|
||||
"grayscale": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_grayscale",
|
||||
"default": false,
|
||||
"propertyOrder" : 8
|
||||
},
|
||||
"fps": {
|
||||
"type": "integer",
|
||||
@@ -23,13 +85,13 @@
|
||||
"minimum" : 1,
|
||||
"maximum" : 100,
|
||||
"step" : 1,
|
||||
"propertyOrder" : 2
|
||||
"propertyOrder" : 9
|
||||
},
|
||||
"reverse": {
|
||||
"type": "boolean",
|
||||
"title":"edt_eff_reversedirection",
|
||||
"default": false,
|
||||
"propertyOrder" : 3
|
||||
"propertyOrder" : 10
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
Reference in New Issue
Block a user