Bevor ich meine Frage stelle, also der Python-Quellcode (CountdownToAdvend.py) funktioniert als Converter und wird für eine VU+ Tv-Box benutzt.
Sollten doch noch irgendwelche Fragen auftauchen, bitte einfach fragen ich weis leider auch nicht alles.
Wie man so schön sagt es ist noch kein Meister vom Himmel gefallen!
Nun zu meiner Frage:
Ich würde gerne wissen ob es möglich ist anstatt des Textes z. B. (Heute ist der 1. Advent) ein Bild.png auf dem Skin anzuzeigen.
Das ganze natürlich am 1., 2., 3. und 4. Advent.
Ich hoffe das mir hier jemand weiterhelfen kann.
Schon jetzt vielen Dank, Highlander55
Code: Alles auswählen
Python-Quellcode: CountdownToAdvent.py
# -*- coding: utf-8 -*-
from Converter import Converter
from Components.Element import cached
from datetime import time, date, timedelta
class CountdownToAdvent(Converter, object):
def __init__(self, type):
Converter.__init__(self, type)
self.heute = date.today()
#self.heute = date(2021, 1, 1) # Datum verändern zum Testen
self.aktJahr = self.heute.year
self.Auswahl = type
@cached
def getText(self):
time = self.source.time
if time is None:
return ""
self.EreignisseFestlegen(self.heute)
if len(self.EreignisseJahr) == 0:
return "Ereignis " + self.Auswahl + " fehlt oder falsche Eingabe im Skin"
else:
return self.calculate()
text = property(getText)
def calculate(self):
idx = 0
Ereignisbeschreibung = self.aktEreignis[idx][7]
jahr = self.aktEreignis[idx][0]
monat = self.aktEreignis[idx][1]
tag = self.aktEreignis[idx][2]
dauer = self.aktEreignis[idx][4]
if jahr > self.heute.year:
textZusatz = " im nächsten Jahr"
else:
textZusatz = ""
if dauer < 1:
return "Ereignisbeschreibung " + self.Auswahl + " unvollständig"
anz = len(Ereignisbeschreibung[0])
E1 = Ereignisbeschreibung[0][0]
if anz > 1:
E2 = Ereignisbeschreibung[0][1]
else:
E2 = E1
if anz > 2:
E3 = Ereignisbeschreibung[0][2]
else:
E3 = E2
Ereignis = date(jahr, monat, tag)
Tage_bis = (Ereignis - self.heute).days
if Tage_bis > 1:
return "Es sind noch " + str(Tage_bis) + " Tage bis " + E1 + textZusatz
elif Tage_bis > 0:
return "Es ist nur noch ein Tag bis " + E1 + textZusatz
elif Tage_bis >= (-dauer + 1):
return Ereignisbeschreibung[1 - Tage_bis]
else:
return "Fehler in der Ereignisdefinition"
def EreignisseFestlegen(self, heute):
self.EreignisseJahr = []
while True:
name = "Advent"
use = False
if name == self.Auswahl or (self.Auswahl == "Alle" and use == True):
diffTage = 0
text = "" # wenn difftage <> 0 text hier eingeben [["Ereignis"], "Heute ist ..."]
show_future = False
level = 3
self.Ereignis_Advent(name, diffTage, show_future, level, text)
if name == self.Auswahl:
break
name = "1Adventsonntag"
use = True
if name == self.Auswahl or (self.Auswahl == "Alle" and use == True):
diffTage = 0
text = [["zum 1. Adventsonntag"], "Advent, Advent, das erste Lichtlein brennt!"] # anstatt Text ein Bild.png anzeigen
show_future = False
level = 4
self.Ereignis_Advent(name, diffTage, show_future, level, text)
if name == self.Auswahl:
break
name = "2Adventsonntag"
use = True
if name == self.Auswahl or (self.Auswahl == "Alle" and use == True):
diffTage = 7
text = [["zum 2. Adventsonntag"], "Advent, Advent, das zweite Lichtlein brennt!"] # anstatt Text ein Bild.png anzeigen
show_future = False
level = 3
self.Ereignis_Advent(name, diffTage, show_future, level, text)
if name == self.Auswahl:
break
name = "3Adventsonntag"
use = True
if name == self.Auswahl or (self.Auswahl == "Alle" and use == True):
diffTage = 14
text = [["zum 3. Adventsonntag"], "Advent, Advent, das dritte Lichtlein brennt!"] # anstatt Text ein Bild.png anzeigen
show_future = False
level = 3
self.Ereignis_Advent(name, diffTage, show_future, level, text)
if name == self.Auswahl:
break
name = "4Adventsonntag"
use = True
if name == self.Auswahl or (self.Auswahl == "Alle" and use == True):
diffTage = 21
text = [["zum 4. Adventsonntag"], "Advent, Advent, das vierte Lichtlein brennt!"] # anstatt Text ein Bild.png anzeigen
show_future = False
level = 3
self.Ereignis_Advent(name, diffTage, show_future, level, text)
if name == self.Auswahl:
break
break
self.EreignisseJahr.sort()
self.aktEreignis = []
cnt = len(self.EreignisseJahr)
if cnt == 0:
return
prio = 999
if self.Auswahl == "Alle":
for idx in range(0, cnt):
jahr = self.EreignisseJahr[idx][0]
monat = self.EreignisseJahr[idx][1]
tag = self.EreignisseJahr[idx][2]
level = self.EreignisseJahr[idx][3]
if date(jahr, monat, tag) <= self.heute:
if level < prio:
prio = level
aktIdx = idx
else:
break
if prio == 999:
for idx in range(0, cnt):
jahr2 = self.EreignisseJahr[idx][0]
monat2 = self.EreignisseJahr[idx][1]
tag2 = self.EreignisseJahr[idx][2]
level = self.EreignisseJahr[idx][3]
if date(jahr, monat, tag) == date(jahr2, monat2, tag2):
if level < prio:
prio = level
aktIdx = idx
else:
break
if prio == 999:
aktIdx = 0
self.aktEreignis.append(self.EreignisseJahr[aktIdx])
def Ereignis_fest(self, name, mon, tag, show_future, level, text):
dauer = len(text) - 1
if dauer < 1:
return
jahr = self.aktJahr
if self.heute > (date(jahr, mon, tag) + timedelta(dauer - 1)):
jahr += 1
if (self.Auswahl <> "Alle") or show_future or (self.heute >= date(jahr, mon, tag)) and (self.heute <= (date(jahr, mon, tag) + timedelta(dauer - 1))):
self.EreignisseJahr.append([jahr, mon, tag, level, dauer, name, show_future, text])
def Ereignis_Advent(self, name, diffTage, show_future, level, text):
dauer = 0
if len(text) > 1:
dauer = len(text) - 1
jahr, mon, tag, new_dauer, text2 = self.calcAdvent(self.aktJahr, diffTage, dauer)
if self.heute > (date(jahr, mon, tag) + timedelta(new_dauer - 1)):
jahr, mon, tag, new_dauer, text2 = self.calcAdvent(self.aktJahr + 1, diffTage, dauer)
dauer = new_dauer
if dauer < 1:
return
if len(text2) > 1:
text = text2
del text2
if (self.Auswahl <> "Alle") or show_future or (self.heute >= date(jahr, mon, tag)) and (self.heute <= (date(jahr, mon, tag) + timedelta(dauer - 1))):
self.EreignisseJahr.append([jahr, mon, tag, level, dauer, name, show_future, text])
def calcAdvent(self, jahr, diffTage = 0, dauer_in = 0):
monat = 12
tag = 24
vday = date(jahr, monat, tag).isoweekday() # monday = 1
dauer_adv = 21 + vday % 7 + (vday == 7)
anfang = date(jahr, monat, tag) - timedelta(dauer_adv - (vday == 7))
if diffTage == 0 and dauer_in == 0:
Ereignisbeschreibung = [["zum 1. Adventsonntag"]]
dauer = dauer_adv
for x in range(1, dauer_adv + 1):
if (x % 7) == 1:
Ereignisbeschreibung.append("Heute ist der " + str(int(x / 7) + 1) + ". Adventsonntag")
else:
Ereignisbeschreibung.append("Wir befinden uns nun in der " + str(int((x - 1) / 7) + 1) +". Adventswoche")
else:
Ereignisbeschreibung = ""
dauer = dauer_in
temp = anfang + timedelta(diffTage)
return temp.year, temp.month, temp.day, dauer, Ereignisbeschreibung