Countdown für Ereignisse

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Das mit events habe ich dir im Post #17 schon beschrieben. Das ist nur eine Tabelle (Liste), die die Texte enthält, damit diese nicht im Programmcode eingegeben werden müssen. Du kannst alle 'events'-Textstellen z. B. durch 'Ereignisbeschreibung' ersetzen und es funktioniert genauso.

      Die events, nach denen du gesucht hast, sind ganz etwas anderes. Events werden durch übergeordnete Pogramme ausgelöst und man kann im eingenen Programm danach abfragen. Ein Event könnte z. B. durch Druck auf eine Taste der Fernbedienung ausgelöst werden. Im Programm wird das dann definiert, was ausgeführt werden soll, wenn das event ausgelöst wurde.

      Ich habe jetzt auch gefunden, warum meine Version im Converter nicht funktioniert: Da ist ein Sonderzeichen (ä) enthalten - dann must du das coding definieren:
      1. Zeile im py # -*- coding: utf-8 -*-
      Dann geht's

      Ich habe im Nikolaus-IPK gesehen, dass du für jedes Ereignis einen Converter baust. Das ist nicht notwendig, du must nur das Ereignis (z. B. Christmas, SantaClaus, Birthday, ...) im Skin auswählen:
      <convert type="CountdownToEreignis">Christmas</convert>

      Ich habe jetzt einen universellen Converter gebaut und als Datei angehängt.

      Eine Bitte: stelle deine Programme als py und nicht als pyo ein - ist mühsam, wenn man diese erst decompilieren muss, um sie zu lesen.
      Dateien
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Hallo WeFraJo

      Habe deinen Code jetzt ausprobiert, funktioniert jetzt einwandfrei aber ein kleines Problem besteht doch noch hier in Zeile 10

      Quellcode

      1. def calculate(self, monat, tag, Ereignisbeschreibung):
      2. now = datetime.now()
      3. dauer = max(1, len(Ereignisbeschreibung) -1)
      4. Ereignis = datetime(now.year, monat, tag, 23, 59, 59)
      5. final = (Ereignis - now).days
      6. if final > 0:
      7. return "Es sind noch " + str(final) + " Tage bis " + Ereignisbeschreibung[0]
      8. elif final >= (-dauer + 1):
      9. if dauer == 1:
      10. return "Heute ist " + Ereignisbeschreibung[0] ### Hier sollte doch stehen (Heute ist HeiligAbend) was aber nicht der fall ist
      11. else:
      12. return "Heute ist der " + Ereignisbeschreibung[1 - final] ### Sondern hier steht (Heute ist der HeiligAbend) was Grammatikalisch ja falsch ist, für den (1. und 2. Weihnachtstag) stimmt es ja wieder
      13. else:
      14. return Ereignisbeschreibung[0] + " ist vorbei, nun sind es wieder " + str((datetime(now.year+1,monat, tag,23,59,59)-now).days) + " Tage bis zum nächsten " + Ereignisbeschreibung[0]
      Alles anzeigen
      Zu deiner Feststellung dass ich für jedes Ereignis einen Converter baue, das mache ich, weil ich dann am Ereignistag einen individuellen Text ausgeben kann z.B. bei Halloween (Happy Halloween, Trick or Treat) usw.
      Und die folgenden Skins werde ich als py einstellen.

      Frage: Kann man in diesen Converter auch bewegliche Feiertage einbauen und das dieser dann zum Text auch noch eine GIF ausgeben kann. z.B. (1. - 4. Advent) oder braucht es dafür einen eigenen Converter?

      Lg Highlander55
    • Zeile 10 ist richtig, nur deine Schlussfolgerung ist falsch:
      Das Ereignis 'Weihnachten' besteht in der Tabelle 'Ereignisbeschreibung' aus vier Einträgen - ergibt dauer = 3. Die Zeile wird daher bei Weihnachten nie angesprungen. Diese Abfrage soll ersparen, dass man bei Ereignissen, die nur aus einem Tag bestehen, in der Ereignisbeschreiung zwei (gleiche) Einträge machen muss.

      Im österreichischen Sprachgebrauch heisst es 'Heute ist der Heilige Abend', aber egal, dass kannst du ja individuell gestalten. Nimm einfach
      "Heute ist " +
      aus der Zeile 12 raus und gestalte Ereignisbeschreibung entsprechend.

      Wenn Du das gleiche auch mit eintägigen Ereignissen machen willst (z. B. Geburtstag), dann Zeile 9 bis 11 zusätzlich löschen (und 12 eine Ebene höher) und in der Ereignisbeschreibung für jedes Ereignis zwei Einträge machen. In den zweiten kannst Du dann z. B. schreiben 'Alles Gute zum Geburtstag!'

      Beweglich Feiertage sind natürlich möglich, es müsste nur statt der fixen Definition von tag und monat eine entsprechende Berechnungsroutine aufgerufen werden. Ich kenne als bewegliche Feiertage nur Ostern und davon abhängige Feiertage. Dafür kann ich dir eine Routine schreibenwenn du möchtest.

      Ein gif hier zurückgeben funktioniert nicht. Darüber solltest du einen skin-Spezialisten befragen.

      RickX hat es dir schon geschrieben, dieser Converter deckt ja schon verschiedene Ereignisse ab und kann um weitere erweitert werden. Wie habe ich dir im Post #21 schon beschrieben.

      edit: Nachfolgend noch die Berechnung für Ostern. Bei Tagediff = 0 wird der Oster-Samstag zurückgegeben (Jahr, Monat, Tag)
      tagediff:
      Christi Himmelfahrt 40
      Pfingstmontag 51
      Fronleichnam 61

      Python-Quellcode: CalcEaster.py

      1. from datetime import date, timedelta
      2. def calcEaster(jahr, tagediff = 0):
      3. vb = jahr % 19
      4. vc = int(jahr / 100)
      5. vd = jahr % 100
      6. ve = int(vc / 4)
      7. vf = vc % 4
      8. vg = int((vc + 8) / 15)
      9. vh = int((vc - vg + 1) / 3)
      10. vi = (vb *19 + vc - ve - vh + 15) % 30
      11. vj = int(vd / 4)
      12. vk = vd % 4
      13. vl = (32 + vf * 2 + vj * 2 - vi - vk) % 7
      14. vm = int((vb + vi * 11 + vl * 22) / 451)
      15. monat = int((vi + vl - vm * 7 + 114) / 31)
      16. tag = (vi + vl + vm * 7 + 114) % 31
      17. temp = date(jahr, monat, tag) + timedelta(tagediff)
      18. return temp.year, temp.month, temp.day
      Alles anzeigen
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von WeFraJo () aus folgendem Grund: Berechnung für Ostern ergänzt

    • Ich habe das Beschriebene in einen neuen Converter eingebaut. Funktioniert bei mir, aber alle Situationen austesten musst du selbst.

      Bei neuen Ereignissen einfach einen ähnlichen elif-Block im __init__ kopieren. Bitte beachten, dass bei beweglichen Ereignissen self.Ereignisart auf 'var' gesetzt werden muss. Jedes Ereignis muss in Ereignisbeschreibung genau (Dauer in Tagen + 1) EInträge enthalten.

      Als bewegliches Ereignis ist jetzt nur Ostern (calcEaster) und die davon abängigen Feste abgebildet. Jedes weitere bewegliche Ereignis bedarf eines separaten codings, wobei dieses immer Jahr, Monat und Tag zurückgeben muss.

      Wenn das Ereignis aktuell ist kannst Du dich jetzt im Text (ab 2. Eintrag der Ereignisbeschreibung) austoben.

      Für die Textierung der Ausgabe vor und nach dem Ereignis wird der 1. Eintrag verwendet. Hier musst du den Text rundherum im calculate entsprechend gestalten, dass er für alle Ereignisse gilt.

      Noch mühsamer wird es, wenn du auch noch zwischen Ein- und Mehrzahl der Differenztage unterscheiden willst, das ist jetzt nicht vorgesehen. Könnte man natürlich auch noch machen, daber dann wird die Pflege der Ereignistabelle immer umfangreicher.
      Dateien
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Das ist der Converter, mit dem Highlander55 zu entwickeln begonnen hat und der noch immer Basis des adaptierten Converters ist. Die Anforderungen werden aber immer komplexer...
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Hallo WeFraJo

      Der Converter funktioniert einwandfrei, habe ihn schon mit allen Feiertagen erweitert.

      Also vielen Dank nochmals für deine Hilfe

      Highlander55

      Ps.: Ich bin jetzt am versuchen einen Converter für die Vier Adventtage zu erstellen, hoffe das ich das Schaffe?
      Wenn nicht könnte ich Dich nochmals belästigen?
    • Freut mich!

      Für die Adventsonntage brauchst du eine Routine a nalog calcEaster und im __init__ einen Block mit 'var' einstellen.

      Wenn Du ein Ereignis 'Advent' definierst und darunter die vier Adventsonntage hast Du aber eine ganz neue Herausforderung ...

      Kannst dich gerne wieder melden, wenn du Hilfe brauchst.
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Hallo WeFraJo,
      habe jetzt 2 Bücher über Programmieren in Python durch gekaut aber leider ohne Erfolg. Irgendwie bring ich das einfach nicht auf die Reihe, das ganze um zusetzen.

      Habe einige Versuche gemacht find aber meine Fehler nicht heraus.

      Sende dir die Versuche als Code mit, der Quellcode für Berechnung der Advent Sonntage habe ich

      Im Run Module von Python geprüft (Berechnung Funktioniert) aber wie gesagt als Converter für die Box kann ich es nicht umsetzen.

      Jetzt Muss ich doch wieder auf deine Hilfe hoffen, vielleicht kannst du einen von den beiden Quellcodes die ja hauptsächlich eh von dir geschrieben wurden, die 4 Adventsonntage hinzufügen.

      Ich Danke dir schon jetzt für deine Hilfe

      PS.: Bitte keinen Stress machen, das pressiert nicht.

      Quellcode

      1. # -*- coding: utf-8 -*-
      2. import datetime
      3. now = datetime.datetime.now()
      4. jahr = now.year
      5. monat = now.month
      6. tag = now.day
      7. weihnachten = datetime.datetime(jahr, 12, 25, 0, 0, 0)
      8. wochentag = weihnachten.weekday()
      9. vierter_advent = weihnachten - datetime.timedelta(wochentag + 1)
      10. dritter_advent = weihnachten - datetime.timedelta(wochentag + 8)
      11. zweiter_advent = weihnachten - datetime.timedelta(wochentag + 15)
      12. erster_advent = weihnachten - datetime.timedelta(wochentag + 22)
      13. if(now <= weihnachten):
      14. print ("Die Advent-Sonntage im Jahr " + str(jahr))
      15. if(now >= erster_advent):
      16. print ("Heute ist der 1. Avent " + str(erster_advent))
      17. if(now >= zweiter_advent):
      18. print ("Heute ist der 2. Avent " + str(zweiter_advent))
      19. if(now >= dritter_advent):
      20. print ("Heute ist der 3. Avent " + str(dritter_advent))
      21. if(now >= vierter_advent):
      22. print ("Heute ist der 4. Avent " + str(vierter_advent))
      Alles anzeigen


      Quellcode

      1. # -*- coding: utf-8 -*-
      2. from Converter import Converter
      3. from Components.Element import cached
      4. from datetime import time, date, timedelta
      5. class EventToAdvent(Converter, object):
      6. def __init__(self, type):
      7. Converter.__init__(self, type)
      8. self.type = 1
      9. jahr = date.today().year
      10. self.Ereignisart = "beweglich"
      11. if type == "ErsterAdvent":
      12. tagediff = 0
      13. x, self.monat, self.tag = self.calcXmas(jahr, tagediff)
      14. ereignisadvent = self.calcXmas(jahr + 1, tagediff)
      15. self.TageWennVorbei = (date(ereignisadvent) - date.today()).days
      16. self.Ereignisbeschreibung = ["Advent", "Heute ist der 1. Advent"]
      17. self.Ereignisart = "var"
      18. elif type == "ZweiterAdvent":
      19. tagediff = 7
      20. x, self.monat, self.tag = self.calcXmas(jahr, tagediff)
      21. ereignisadvent = self.calcXmas(jahr + 1, tagediff)
      22. self.TageWennVorbei = (date(ereignisadvent) - date.today()).days
      23. self.Ereignisbeschreibung = ["Advent", "Heute ist der 2. Advent"]
      24. self.Ereignisart = "var"
      25. elif type == "DritterAdvent":
      26. tagediff = 14
      27. x, self.monat, self.tag = self.calcXmas(jahr, tagediff)
      28. ereignisadvent = self.calcXmas(jahr + 1, tagediff)
      29. self.TageWennVorbei = (date(ereignisadvent) - date.today()).days
      30. self.Ereignisbeschreibung = ["Advent", "Heute ist der 3. Advent"]
      31. self.Ereignisart = "var"
      32. elif type == "VierterAdvent":
      33. tagediff = 21
      34. x, self.monat, self.tag = self.calcXmas(jahr, tagediff)
      35. ereignisadvent = self.calcXmas(jahr + 1, tagediff)
      36. self.TageWennVorbei = (date(ereignisadvent) - date.today()).days
      37. self.Ereignisbeschreibung = ["Advent", "Heute ist der 4. Advent"]
      38. self.Ereignisart = "var"
      39. else:
      40. self.type = 2
      41. @cached
      42. def getText(self):
      43. time = self.source.time
      44. if time is None:
      45. return ""
      46. if self.type == 1:
      47. return self.calculate(self.monat, self.tag, self.Ereignisbeschreibung)
      48. else:
      49. return "???"
      50. text = property(getText)
      51. def calculate(self, monat, tag, Ereignisbeschreibung):
      52. now = date.today()
      53. dauer = len(Ereignisbeschreibung) -1
      54. if dauer < 1:
      55. return ""
      56. Ereignis = date(now.year, monat, tag)
      57. final = (Ereignis - now).days
      58. if final > 0:
      59. return "Es sind noch " + str(final) + " Tage bis " + Ereignisbeschreibung[0]
      60. elif final >= (-dauer + 1):
      61. return Ereignisbeschreibung[1 - final]
      62. else:
      63. if self.Ereignisart == "beweglich":
      64. TageWennVorbei = (date(now.year + 1, monat, tag) - date.today()).days
      65. else:
      66. TageWennVorbei = self.TageWennVorbei
      67. return Ereignisbeschreibung[0] + " ist vorbei, nun sind es wieder " + str(TageWennVorbei) + " Tage bis zum nächsten " + Ereignisbeschreibung[0]
      68. def calcXmas(self, jahr, tagediff = 0):
      69. now = date.datetime.now()
      70. jahr = now.year
      71. xmas = date(jahr, 12, 25, 0, 0, 0) + timedelta(tagediff)
      72. tagediff = xmas.weekday()
      73. VierterAdvent = xmas - date.timedelta(tagediff + 1)
      74. DritterAdvent = xmas - date.timedelta(tagediff + 8)
      75. ZweiterAdvent = xmas - date.timedelta(tagediff + 15)
      76. ErsterAdvent = xmas - date.timedelta(tagediff + 22)
      77. return xmas.year, xmas.month, xmas.day
      Alles anzeigen

      Quellcode

      1. # -*- coding: utf-8 -*-
      2. from Converter import Converter
      3. from Components.Element import cached
      4. from datetime import datetime, time
      5. class EventToAdvent(Converter, object):
      6. DAYS = 0
      7. def __init__(self, type):
      8. Converter.__init__(self, type)
      9. if type == "Advent":
      10. self.type = self.DAYS
      11. @cached
      12. def getText(self):
      13. time = self.source.time
      14. if time is None:
      15. return ""
      16. if self.type == self.DAYS:
      17. return self.calculate()
      18. else:
      19. return "???"
      20. text = property(getText)
      21. def calculate(self,what=True):
      22. now = datetime.datetime.now()
      23. jahr = now.year
      24. events = ("1. Advent", "2. Advent", "3. Advent", "4. Advent")
      25. christmas = datetime.datetime(jahr, 12, 25, 0, 0, 0)
      26. wochentag = christmas.weekday()
      27. events = christmas - datetime.timedelta(wochentag + 1)
      28. events = christmas - datetime.timedelta(wochentag + 8)
      29. events = christmas - datetime.timedelta(wochentag + 15)
      30. events = christmas - datetime.timedelta(wochentag + 22)
      31. final = (christmas - now).days
      32. if final > 0:
      33. return "Es sind noch " + str(final) + " Tage bis zum " + events[0]
      34. elif final == 0:
      35. return "Heute ist der " + events[0]
      36. else:
      37. return "Der " + events[0] + " ist vorbei, nun sind es noch " + str((datetime(now.year+1,23,59,59)-now).days) + " Tage bis zum " + events[0]
      Alles anzeigen
    • Sorry, das hab ich gestern gelöscht. War für mich nur ein Zwschenschritt zum Endergebnis.

      Du kannst aber gerne die Komplettlösung verwenden:

      Countdown Converter für Feiertage uns sonstige Ereignisse eines Jahres

      Dabei hast du zwei Möglichkeiten:
      1) im Skin mit 'Advent' aufrufen
      2) im Converter im Modul 'EreignisseFestlegen' alle use = auf False setzen ausser bei den Adventsonntagen (es sind 5 Adventsonntage drin, den letzten Block ganz löschen) und im Skin mit 'Alle' aufrufen. 'show_future' bei den 4 Adventsonntagen auch noch auf True setzen.

      Die Umsetzung kannst du dir im Programm anschauen, ist aber jetzt um einiges komplexer.
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Hallo WeFraJo,

      Erstmal ein gutes neues Jahr, wenn das noch gilt.

      Habe da noch eine Bitte an Dich, habe probiert die Advent Routine in eine calc.Muttertag zu ändern aber das funktioniert leider nicht.
      Könntest du mir meine Fehler und Unwissenheit ausbessern.
      Ich weis nach längerer Recherche im Internet nur das die Berechnung an welchem Wochentag ist der 1. Mai z. B. (an einem Donnerstag "15 - Weekday(1. Mai) => 11" also der 11 Mai. währe dann der Muttertag).
      Und was ich auch noch erfahren habe, das der Muttertag wenn Pfingsten auf den zweiten Sonntag im Mai fällt, dann der Muttertag einen Sonntag davor ist.

      Ich hoffe du kannst mir nochmals helfen.

      Ich bedanke mich schon jetzt für deine Hilfe und die bisherigen Hilfen von Dir.


      Python-Quellcode: CountdownToMuttertag.py

      1. # -*- coding: utf-8 -*-
      2. from Converter import Converter
      3. from Components.Element import cached
      4. from datetime import time, date, timedelta
      5. class CountdownToMuttertag(Converter, object):
      6. def __init__(self, type):
      7. Converter.__init__(self, type)
      8. self.heute = date.today()
      9. #self.heute = date(2021, 12, 28)
      10. self.aktJahr = self.heute.year
      11. self.Auswahl = type
      12. @cached
      13. def getText(self):
      14. time = self.source.time
      15. if time is None:
      16. return ""
      17. self.EreignisseFestlegen(self.heute)
      18. if len(self.EreignisseJahr) == 0:
      19. return "Ereignis " + self.Auswahl + " fehlt oder falsche Eingabe im Skin"
      20. else:
      21. return self.calculate()
      22. text = property(getText)
      23. def calculate(self):
      24. idx = 0
      25. Ereignisbeschreibung = self.aktEreignis[idx][7]
      26. jahr = self.aktEreignis[idx][0]
      27. monat = self.aktEreignis[idx][1]
      28. tag = self.aktEreignis[idx][2]
      29. dauer = self.aktEreignis[idx][4]
      30. if jahr > self.heute.year:
      31. textZusatz = " im nächsten Jahr"
      32. else:
      33. textZusatz = ""
      34. if dauer < 1:
      35. return "Ereignisbeschreibung " + self.Auswahl + " unvollständig"
      36. anz = len(Ereignisbeschreibung[0])
      37. E1 = Ereignisbeschreibung[0][0]
      38. if anz > 1:
      39. E2 = Ereignisbeschreibung[0][1]
      40. else:
      41. E2 = E1
      42. if anz > 2:
      43. E3 = Ereignisbeschreibung[0][2]
      44. else:
      45. E3 = E2
      46. Ereignis = date(jahr, monat, tag)
      47. Tage_bis = (Ereignis - self.heute).days
      48. if Tage_bis > 1:
      49. return "Es sind noch " + str(Tage_bis) + " Tage bis " + E1 + textZusatz
      50. elif Tage_bis > 0:
      51. return "Es ist nur noch ein Tag bis " + E1 + textZusatz
      52. elif Tage_bis >= (-dauer + 1):
      53. return Ereignisbeschreibung[1 - Tage_bis]
      54. else:
      55. return "Fehler in der Ereignisdefinition"
      56. def EreignisseFestlegen(self, heute):
      57. self.EreignisseJahr = []
      58. while True:
      59. # Muttertag = der 2. Sonntag im Mai
      60. name = "Muttertag"
      61. use = False
      62. if name == self.Auswahl or (self.Auswahl == "Alle" and use == True):
      63. diffTage = 0
      64. text = "" # wenn difftage <> 0 text hier eingeben [["Ereignis"], "Heute ist ..."]
      65. show_future = False
      66. level = 3
      67. self.Ereignis_Muttertag(name, diffTage, show_future, level, text)
      68. if name == self.Auswahl:
      69. break
      70. break
      71. self.EreignisseJahr.sort()
      72. self.aktEreignis = []
      73. cnt = len(self.EreignisseJahr)
      74. if cnt == 0:
      75. return
      76. prio = 999
      77. if self.Auswahl == "Alle":
      78. for idx in range(0, cnt):
      79. jahr = self.EreignisseJahr[idx][0]
      80. monat = self.EreignisseJahr[idx][1]
      81. tag = self.EreignisseJahr[idx][2]
      82. level = self.EreignisseJahr[idx][3]
      83. if date(jahr, monat, tag) <= self.heute:
      84. if level < prio:
      85. prio = level
      86. aktIdx = idx
      87. else:
      88. break
      89. if prio == 999:
      90. for idx in range(0, cnt):
      91. jahr2 = self.EreignisseJahr[idx][0]
      92. monat2 = self.EreignisseJahr[idx][1]
      93. tag2 = self.EreignisseJahr[idx][2]
      94. level = self.EreignisseJahr[idx][3]
      95. if date(jahr, monat, tag) == date(jahr2, monat2, tag2):
      96. if level < prio:
      97. prio = level
      98. aktIdx = idx
      99. else:
      100. break
      101. if prio == 999:
      102. aktIdx = 0
      103. self.aktEreignis.append(self.EreignisseJahr[aktIdx])
      104. def Ereignis_Muttertag(self, name, diffTage, show_future, level, text):
      105. dauer = 0
      106. if len(text) > 1:
      107. dauer = len(text) - 1
      108. jahr, mon, tag, new_dauer, text2 = self.calcMuttertag(self.aktJahr, diffTage, dauer)
      109. if self.heute > (date(jahr, mon, tag) + timedelta(new_dauer - 1)):
      110. jahr, mon, tag, new_dauer, text2 = self.calcMuttertag(self.aktJahr + 1, diffTage, dauer)
      111. dauer = new_dauer
      112. if dauer < 1:
      113. return
      114. if len(text2) > 1:
      115. text = text2
      116. del text2
      117. if (self.Auswahl <> "Alle") or show_future or (self.heute >= date(jahr, mon, tag)) and (self.heute <= (date(jahr, mon, tag) + timedelta(dauer - 1))):
      118. self.EreignisseJahr.append([jahr, mon, tag, level, dauer, name, show_future, text])
      119. def calcMuttertag(self, jahr, diffTage = 0, dauer_in = 0):
      120. monat = 5
      121. tag = 1
      122. vday = date(jahr, monat, tag).isoweekday() # monday = 1
      123. dauer_adv = 15 - vday % 1 - (vday == 1)
      124. anfang = date(jahr, monat, tag) - timedelta(dauer_adv - (vday == 1))
      125. if diffTage == 0 and dauer_in == 0:
      126. Ereignisbeschreibung = [["Muttertag"]] #Ausgabe (Es sind noch x Tage bis Muttertag)
      127. dauer = dauer_adv
      128. for x in range(1, dauer_adv - vday):
      129. if (x % 1) == 1:
      130. Ereignisbeschreibung.append("Heute ist Muttertag") #Ausgabe (Heute ist Muttertag)
      131. else:
      132. Ereignisbeschreibung = ""
      133. else:
      134. Ereignisbeschreibung = ""
      135. dauer = dauer_in
      136. temp = anfang + timedelta(diffTage)
      137. return temp.year, temp.month, temp.day, dauer, Ereignisbeschreibung
      Alles anzeigen
    • Hallo,

      anbei eine Version mit eingebautem Muttertag nach den von dir genannten Regeln.

      Wenn du es in deinen bereits vorhandene Converter einbaust (in den, den ich dir zuletzt adaptiert habe) sind folgende Zeilen relevant:
      Neu:
      118 - 127 name = Muttertag"
      457 - 470 def calc_Muttertag(self):
      geändert:
      420 - 429 def Ereignis_fest(self, name, mon, tag, show_future, level, text, jahr=False):

      Und auf die Gefahr hin dass ich mich wiederhole:
      Es reicht ein einziger Converter für alle Ereignisse!
      Dateien
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von WeFraJo ()

    • Hallo MaFreJo,

      Danke noch für die Muttertags Erweiterung.

      Um auf deinen nochmaligen Hinweis wegen einen einzigen Converter für alle Events habe ich mir schon zu Herzen genommen, die einzelnen Ereignisse als Converter benutze ich jetzt hauptsächlich zu Testzwecken für mich.

      Nichtsdestotrotz hat sich, glaube ich mal ein kleiner Fehler eingeschlichen.

      (Es sind noch x Tage bis zum Muttertag) und dann (Es ist nur noch ein Tag bis zum Muttertag) wird angezeigt
      aber (Heute ist Muttertag) wird nicht angezeigt hier wird schon der Countdown für das nächste Ereignis angezeigt.

      Würdest du dir das nochmals ansehen?
      Sonst Funktioniert alles einwandfrei.
      Danke, Danke, Danke
      Highlander55
    • In Zeile 462 abändern:

      alt:
      if date(jahr, monat, vday) <= self.heute:
      neu:
      if date(jahr, monat, vday) < self.heute:
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter
    • Highlander55 schrieb:

      Und was ich auch noch erfahren habe, das der Muttertag wenn Pfingsten auf den zweiten Sonntag im Mai fällt, dann der Muttertag einen Sonntag davor ist.
      Quelle? Ich finde auf die schnelle keinen Beleg dafür, sondern im Gegenteil, dass das dann so ist, dass beides auf denselben Tag fällt (2008, 2035).
      Diskutiere nie mit einem Idioten. Er zieht dich auf sein Niveau runter und schlägt dich mit seiner Erfahrung.
    • Ich habe die Berechnung im Link aus Post #37 geändert - Muttertag ist jetzt fix der 2. Sonntag im Mai.
      Die Regel mit Pfingsten wollten die deutschen Blumenhändler, wurde aber verworfen.
      Skin: Nemesis FHD (mit vielen eigenen Skinparts), MyEPG, EMC, OScam 1.20 rev.11682, ORF-Karte, MCC MovieCutCenter

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von WeFraJo ()

    • Hallo MaFreDo

      Habe eine Frage zum Plugin (CountdownToMultipleEvents.py) wenn ich ein bestimmtes Ereignis wähle, dann funktioniert der Countdown einwandfrei, aber wenn ich dann Alle (<convert type="HiCountdownToMultipleEvents">Alle</convert>) auswähle und (use = True) und (show_future = True) bei allen Ereignissen einstelle, funktioniert der Countdown nicht.

      Ich weis das du den Hinweis (# show_future = False: Ereignisse werden bei "Alle" berücksichtigt wenn aktuell, aber nicht für die Anzeige der Tage bis dorthin) geschrieben hast.
      Seit dem Neustart der GUI steht jetzt (Es sind noch 9 Tage bis Rosenmontag) und Heute (also der 24.2.2022) ist ein Geburtstag als Ereignis mit der Einstellung (use = True) und (show_future = False) und es müsste mir, doch Heute diesen Geburtstag anzeigen, aber das tut es nicht es zeigt mir immer noch (Es sind noch 9 Tage bis Rosenmontag) erst bei Neustart der Gui aktualisiert er den Countdown und der Geburtstag wird angezeigt.
      Habe das auch schon (use = True) und (show_future = True) probiert gleiches Ergebnis.

      Währe es vielleicht möglich wenn ich auf Alle stelle das das mir immer angezeigt wird wie viele Tage es noch bis zum Ereignis sind und am Tag des Ereignisses dieser auch angezeigt wird und das fortwährend bis zum nächsten Ereignis.

      Ich würde mich auch noch bezüglich der Unannehmlichkeiten wegen meiner Online eingestellten Skins entschuldigen.
      Ich habe wirklich übersehen das ich meine (Components, Converter, Renderer und Tools) zum installieren mit gepackt habe. Das hatte natürlich zur folge das bei den geschädigten alle Daten überschrieben wurden.
      Ich werde in Zukunft wenn ich überhaupt noch darf meine Skins nur noch mit den wirklich benötigten (Converter und Renderer) bestücken und zwar so das die benötigten jetzt HiExtraNumText.py, HiServiceInfo.py usw. heißen.
      Dann wird mein Skin nur noch auf diese Converter und Renderer zugreifen.

      Somit wird beim Anwender nichts mehr überschrieben und wenn er auf seinen ursprünglichen Skin geht wird alles wieder sein wie gehabt.

      Also nochmals Entschuldigung
      Mit freundlichen Grüßen
      Highlander55
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Highlander55 ()