Hallo Vu+ Team, erstmal ein gutes Neues Jahr allen Miteinander.
Ich würde gerne wissen ob es möglich ist anstatt eines Textes z. B. (Heute ist der 1. Advent) ein animiertes Bild (bestehend aus 3 od. 4 xxxx.png Bilder) 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
Alles anzeigen
Ich würde gerne wissen ob es möglich ist anstatt eines Textes z. B. (Heute ist der 1. Advent) ein animiertes Bild (bestehend aus 3 od. 4 xxxx.png Bilder) 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
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 AnimatedPictures 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 AnimatedPictures 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 AnimatedPictures 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 AnimatedPictures 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"]] #Ereignisbeschreibung = [["zum 1. Adventsonntag", "Der Advent", "Advent"]]
- 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