Displaying PNG/GIF dynamic on a temp file structure?

Hi All,
Im really new with everything matrix/raspberry/python. I have got panels working and using imagine viewer and all the examples.
What im trying to get working now is using the same logic as a program called Pimarquee2 that displays automatically on the PI4 second HDMI display.
I have changed the code to point to led-image-viewer instead of the omxplayer.

Can anyone give some pointers on how to get this working?
Or suggest another way with the working result? perhaps a way to copy whatever is displaying on the second HDMI port and display on the LCD’s?

thanks in advance!

here is the script i have been changing - credit to Loosernator built built the script on Github.

#!/usr/bin/python3

import os
from subprocess import *
from time import *
import xml.etree.ElementTree as ET

INTRO = “/home/pi/PieMarquee2/intro.mp4”

INTRO = “/home/pi/PieMarquee2/intro.png”

for DPI screen

#VIEWER = “/opt/retropie/configs/all/PieMarquee2/omxiv-marquee /tmp/marquee.txt -f -b -d 4 -t 5 -T blend --duration 900 > /dev/null 2>&1 &”

for Pi4 hdmi1

#VIEWER = “/opt/retropie/configs/all/PieMarquee2/omxiv-marquee /tmp/marquee.txt -f -b -d 7 -t 5 -T blend --duration 900 > /dev/null 2>&1 &”

#Tesing line for imageviewer software
VIEWER = “/opt/retropie/configs/all/PieMarquee2/led-image-viewer /tmp/marquee.txt --led-no-hardware-pulse --led-rows=32 --led-cols=64 --led-chain=2 --led-slowdown-gpio=2 --led-gpio-mapping=adafruit-hat &”
arcade = [‘arcade’, ‘fba’, ‘mame-advmame’, ‘mame-libretro’, ‘mame-mame4all’]

def run_cmd(cmd):

runs whatever in the cmd variable

p = Popen(cmd, shell=True, stdout=PIPE)
output = p.communicate()[0]
return output.decode()

def kill_proc(name):
ps_grep = run_cmd("ps -aux | grep " + name + “| grep -v ‘grep’”)
if len(ps_grep) > 1:
os.system("killall " + name)

def is_running(pname):
ps_grep = run_cmd(“ps -ef | grep " + pname + " | grep -v grep”)
if len(ps_grep) > 1:
return True
else:
return False

def get_publisher(romname):
filename = romname+".zip"
publisher = “”
for item in root:
if filename in item.findtext(‘path’):
publisher = item.findtext(‘publisher’)
break
if publisher == “”:
return “”
words = publisher.split()
return words[0].lower()

if os.path.isfile(INTRO) == True:
## for DPI screen
#run_cmd("omxplayer --display 4 " + INTRO)
## for Pi4 hdmi1
run_cmd("omxplayer --display 7 " + INTRO)
## for LED
run_cmd("led-image-viewer --led-no-hardware-pulse --led-rows=32 --led-cols=64 --led-chain=2 --led-slowdown-gpio=2 --led-gpio-mapping=adafruit-hat " + INTRO )

doc = ET.parse("/opt/retropie/configs/all/PieMarquee2/gamelist_short.xml")
root = doc.getroot()

if os.path.isfile("/home/pi/PieMarquee2/marquee/system/maintitle.gif") == True:
## for DPI screen
#os.system(“omxplayer --loop --no-osd --display 4 /home/pi/PieMarquee2/marquee/system/maintitle.mp4 &”)
## for Pi4 hdmi1
os.system(“omxplayer --loop --no-osd --display 7 /home/pi/PieMarquee2/marquee/system/maintitle.mp4 &”)
## for LED added into script
os.system(“led-image-viewer -C /home/pi/PieMarquee2/marquee/system/maintitle.png --led-no-hardware-pulse --led-rows=32 --led-cols=64 --led-chain=2 --led-slowdown-gpio=2 --led-gpio-mapping=adafruit-hat &”)
else:
os.system(“echo ‘/home/pi/PieMarquee2/marquee/system/maintitle.png’ > /tmp/marquee.txt”)
os.system(VIEWER)

cur_imgname = “system/maintitle”

while True:
sleep_interval = 1
ingame = “”
romname = “”
sysname = “”
pubpath = “”
instpath = “”
imgpath = “”
ps_grep = run_cmd(“ps -aux | grep emulators | grep -v ‘grep’”)
if len(ps_grep) > 1: # Ingame
ingame=""
words = ps_grep.split()
if ‘advmame’ in ps_grep:
sysname = “arcade”
romname = words[-1]
else:
pid = words[1]
if os.path.isfile("/proc/"+pid+"/cmdline") == False:
continue
path = run_cmd(“strings -n 1 /proc/”+pid+"/cmdline | grep roms")
path = path.replace(’/home/pi/RetroPie/roms/’,’’)
if len(path.replace(’"’,’’).split("/")) < 2:
continue
sysname = path.replace(’"’,’’).split("/")[0]
if sysname in arcade:
sysname = “arcade”
romname = path.replace(’"’,’’).split("/")[-1].rsplit(’.’, 1)[0]
elif is_running(“gif”) == True: # Video screensaver (OMXplayer)
ps_grep = run_cmd(“ps -aux | grep mp4 | grep -v ‘grep’”)
if ‘RetroPie’ in ps_grep:
words = ps_grep.split()
pid = words[1]
if os.path.isfile("/proc/"+pid+"/cmdline") == False:
continue
path = run_cmd(“strings -n 1 /proc/”+pid+"/cmdline | grep roms")
if len(path.replace(’"’,’’).split("/")) < 2:
continue
sysname = path.replace(’"’,’’).split("/")[-3]
if sysname in arcade:
sysname = “arcade”
romname = path.replace(’"’,’’).split("/")[-1].rsplit(’.’, 1)[0]
elif os.path.isfile("/tmp/PieMarquee.log") == True: # Extended ES
f = open(’/tmp/PieMarquee.log’, ‘r’)
line = f.readline()
f.close()
words = line.split()
if len(words) > 1 and words[0] == “Game:”: # In the gamelist-> Game: /home/pi/…/
.zip
path = line.replace(‘Game: ‘,’’)
path = path.replace(’/home/pi/RetroPie/roms/’,’’)
sysname = path.replace(’"’,’’).split("/")[0]
if sysname in arcade:
sysname = “arcade”
romname = path.replace(’"’,’’).split("/")[-1].rsplit(’.’, 1)[0]
sleep_interval = 0.1 # for quick view
elif len(words) == 1:
sysname = “system”
if words[0] == “SystemView”:
romname = “maintitle”
else:
romname = words[0]
else:
sysname = “system”
romname = “maintitle”

if os.path.isfile("/home/pi/PieMarquee2/marquee/" + sysname  + "/" + romname + ".png") == True:
    imgname = sysname + "/" + romname
    if ingame == "*":
        publisher = get_publisher(romname)
        if os.path.isfile("/home/pi/PieMarquee2/marquee/publisher/" + publisher + ".png") == True:
            pubpath = "/home/pi/PieMarquee2/marquee/publisher/" + publisher + ".png"
        if os.path.isfile("/home/pi/PieMarquee2/marquee/instruction/" + romname + ".png") == True:
            instpath = "/home/pi/PieMarquee2/marquee/instruction/" + romname + ".png"
elif os.path.isfile("/home/pi/PieMarquee2/marquee/system/" + sysname + ".png") == True:
    imgname = "system/" + sysname
else:
    imgname = "system/maintitle"

if imgname+ingame != cur_imgname: # change marquee images
    kill_proc("omxplayer.bin")
    if imgname == "system/maintitle" and os.path.isfile("/home/pi/PieMarquee2/marquee/system/maintitle.mp4") == True:
        ## for DPI screen
        #os.system("omxplayer --loop --no-osd --display 4 /home/pi/PieMarquee2/marquee/system/maintitle.mp4 &")
        ## for Pi4 hdmi1
        ##kill_proc("omxiv-marquee")
        ##os.system("omxplayer --loop --no-osd --display 7 /home/pi/PieMarquee2/marquee/system/maintitle.mp4 &")
         ## for LED  added into script
        kill_proc("led-image-viewer")
        os.system("led-image-viewer -C /home/pi/PieMarquee2/marquee/system/maintitle.gif --led-no-hardware-pulse --led-rows=32 --led-cols=64  --led-chain=2 --led-slowdown-gpio=2 --led-gpio-mapping=adafruit-hat &")
        cur_imgname = imgname+ingame
    else:
        '''
        f = open("/tmp/marquee.txt", "w")
        if pubpath != "":
            f.write(pubpath+"\n")
        f.write("/home/pi/PieMarquee2/marquee/" + imgname + ".png")
        if instpath != "":
            f.write("\n"+instpath)
        f.close()
        '''
        if os.path.isfile("/home/pi/PieMarquee2/marquee/custom/" + romname  + ".txt") == True and ingame == "*":
            os.system("cp /home/pi/PieMarquee2/marquee/custom/" + romname  + ".txt /tmp/marquee.txt")
        else:
            imgpath = "/home/pi/PieMarquee2/marquee/" + imgname + ".png"
            if ingame == "*":
                if pubpath != "":
                    imgpath = pubpath+"\n"+imgpath
                if instpath != "":
                    imgpath = imgpath+"\n"+instpath
            os.system('echo "' + imgpath + '" > /tmp/marquee.txt')
        sleep(0.2) 
        if is_running("led-image-viewer") == False: # if omxiv failed, execute again
            os.system("clear > /dev/tty1")
            os.system('echo "' + imgpath + '" > /tmp/marquee.txt')
            os.system(VIEWER)
        cur_imgname = imgname+ingame

sleep(sleep_interval)