Hallo,
ich hab' bei mir das "live-Wallpaper" laufen, welches normalerweise auch gut funktioniert.
Dies hier ist das script das die eigentliche Arbeit tut, also die Bilder holen und in einem Ordner ablegen wo sie von der "Diaschau" geholt werden:
#! /usr/bin/python
#PortalView Live Desktop Wallpaper, Version 1.5
#Created by GoldNugget / contact: michelle@goldnuggetwebs.com
#See readme for instructions
import cStringIO
import urllib
import Image
import time
while True:
#file = urllib.urlopen('http://www.kaiserslautern.de/live_tools/webcam/cam2_r_640.jpg')
file = urllib.urlopen('http://schulebza.selfhost.bz/GetImage.cgi?Size=1280x800')
#file = urllib.urlopen('http://www.djk-landau.de/fileadmin/webcam/cam2-huge.jpg')
#file = urllib.urlopen('http://www.nabu-nw.de/weinbiet/svga_links.jpg')
im = cStringIO.StringIO(file.read())
img = Image.open(im)
print img.format, img.size, img.mode
if img.format == ('JPEG'):
img.save('/home/cal/Bilder/current.jpg')
elif img.format == ('PNG'):
img.save('/home/cal/Bilder/current.png')
elif img.format == ('GIF'):
img.save('/home/cal/Bilder/current.gif')
time.sleep(20)
Es geht noch weiter, es werden noch 2 andere Images geholt, aber das ist nur eine Wiederholung ab "file=urllib..."
Es gibt da nur ein Problem: Gelegentlich wird ein Image nicht korrekt übertragen, was dann dazu führt daß das Script abbricht und das letzte korrekte Image im Ordner bleibt, also die Diaschau nur noch ein Image zeigt.
Über Konsole aufgerufen gibts diese Fehlermeldung:
Traceback (most recent call last):
File "Downloads/live_wallpaper/getbild.py", line 53, in <module>
img.save('/home/cal/Bilder/current.jpg')
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1631, in save
self.load()
File "/usr/lib/python2.7/dist-packages/PIL/ImageFile.py", line 218, in load
raise IOError("image file is truncated (%d bytes not processed)" % len(b))
IOError: image file is truncated (28 bytes not processed)
Nun hab' ich absolut keine Ahnung von phyton...
Wäre es möglich das Script so abzuändern, daß, im Fall eines defekten Images, dieser Fehler abgefangen und das Image -oder das nächste- neu geladen wird oder einfach neu zum Schleifenanfang gesprungen?
Oder kann ich -das Script, sowie ein zweites für den zweiten Monitor, wird per bash-script beim KDE-Start gestartet- irgendwo (wo?) ein Fehlersignal bekommen mit dem ich wiederum das Start-script neu starten kann? hmm - ein script das regelmäßig nachschaut ob kein Fehler aufgetreten ist, bzw auf diesen Fehler wartet... dass recht einfache Start-script (unten) eventuell selbst erweitern?
#!/bin/bash
python /home/cal/Downloads/live_wallpaper/getpic.py & python /home/cal/Downloads/live_wallpaper/getbild.py
Für Denkanstöße dankbar
ayla
EDIT:
Ich versuche gerade herauszufinden ob ich mit der pid weiterkomme (leider ist meine verfügbare Zeit mal wieder um
).
Meine Idee ist ein "& pid$!" an den Aufruf anhängen und mit "ls /proc|grep $pid" nach dem noch Vorhandensein der pid zu schauen und falls negativ das script neu zu starten bzw eine Schleife daraus zu machen... Würde das so funktionieren?