Berechnungen / Datum über Skinning

  • Moin,

    da die Yahoo-Pipes geschlossen wurden, such ich eine Möglichkeit, Geburtstage in Kodi anzeigen zu lassen.
    Technisch geht es über Skinning, da man sich ja Elemente über die visible condition mittels Datum anzeigen lassen kann.
    <visible>System.Date(12-01)</visible>
    In diesem Fall also nur am 01. Dezember in jedem Jahr.
    Das ganze kann man auch mit einer variablen Eingabe im Skin bauen, um Namen und Datum direkt in Kodi eingeben zu können.

    Was mir aber fehlt ist zum einen das Alter und dann noch die Möglichkeit, x-Tage zuvor daran erinnert zu werden, dass in x-Tagen der Geburtstag von User1 ist.
    Also Berechnungen erstellen.

    Zwischenzeitlich hatte ich schon auf meinem NAS ein php-Bulletin Forum installiert und jeden Kollegen als User eingetragen und dann über ein Modul einen RSS Feed abgegriffen.
    Auch einen email-Dienst hatte ich als RSS umgeleitet.
    Ist aber alles irgendie zu extern.

    Direkt als Skincode mit Kodi-Boardmitteln wäre schon schick.

    Any Ideas?

  • Mit dem module 'datetime' in python lässt sich die Erinnerung ein paar Tage davor leicht machen.
    Zumindest kann man so leicht Tage addieren/subtrahieren

    Code
    t.date.today() - d.timedelta(3)

    So in etwas würde dem heutigen Datum 3 Tage abgezogen (nicht getestet)
    Denke nicht dass man das über einen Skin machen kann, da brauchst du dann schon ein kleines Skript für

    Und direkt als RSS Feed in Kodi ist dir nicht schick genug?

  • Direkt als Skincode mit Kodi-Boardmitteln wäre schon schick.

    Hey,

    Versuchs mal so..

    Variable aus Anhang die jeden Tag eins hochzählt..

    Das in ein Hiddenlabel irgendwo außerhalb mit ID.

    Dann würde dein visible mit
    Stringcompare(Control.GetLabel(ID des hiddenlabels mit VAR),Nummer aus VAR passend zum Geburtstag oder -2 je nachdem was willst)

    ungetestet x Tage davor erscheinen, oder mit mehren Stringcompare jeden Tag solang es true ist.

    Dann wäre auch ne zweite VAR mit den Geburtstagen drin möglich

    XML
    <variable name="Geburtstage">
    	<value condition="StringCompare(System.Date(dd),01) + StringCompare(System.Date(mm),01)">Don </value>
    </variable>


    dann hättest noch einen Labeltext und brauchst keine x labels..

    Aber alles nur geraten :)

    Grüße

  • So weit, so klar.
    Zumindest technisch verstanden.

    Jetzt frage ich mich gerade, ob ich damit auch eine Zahl erzeugen kann, um das Alter zu generieren.
    Wobei dass dann wahrscheinlich eher umgekehrt gehen würde.
    Ich müßte eine condition-List mit den Zahlen 1 bis 100 erzeugen und visible auf true setzen, wenn das aktuelle Jahr minus der Variabel Alter paßt.

    Muss ich noch mal drüber nachdenken.
    Es muss doch möglich sein, das Alter zu errechnen bzw über einen Vergleich von Wert X mit aktuellem Jahr zu kommen.

  • Ich müßte eine condition-List mit den Zahlen 1 bis 100 erzeugen und visible auf true setzen, wenn das aktuelle Jahr minus der Variabel Alter paßt.

    naja, rechnen geht aber nun mal nicht.. Wenn eine Liste mit 1-100 hast, ist ja immer noch das problem das der andere Wert, also das alter anhand von irgendwas geprüft werden muss.

    Mal angenommen Geburtsjahr
    1976

    Aktuelles Jahr
    2016

    Dann bräuchtest ja jetzt dafür eine Liste bzw. zwei Listen die dieselbe Zahl zurückgeben damit etwas true werden kann.
    wirklich berechnen ist das nicht.
    Bestimmt könnte man jetzt für jedes Geburtsjahr ab einem Anfangsjahr zwei Listen anlegen die die passende Zahl ausgeben,
    das wären aber sicher rießen Listen..

    Wäre das nicht pro Person sinnvoller?
    Also eine VAR für DON und dann dort eben alle Einträge anhand System.Date Year ab 2016 mit dem Alter drin..

    So was in der Art:
    <value condition="StringCompare(System.Date(yyyy),2016)>40</value>
    <value condition="StringCompare(System.Date(yyyy),2017)>41</value>


    Ist halt dann Personenabhängig.
    Das könnte man ja nur umgehen wenn jetzt noch ne andere komplexe Liste mit Condition anlegst, die dazu noch das Geburtsjahr auch noch Abfragt.
    Nur dann fängt es schon an kompliziert zu werden - wie fragt man dann ab welche Person was geboren wurde?
    Das müsste man dann auch wieder Anhand eines Eintrages davor Abfragen:

    Quasi wenn label text = DON, dann Geburtsjahr = 1976 das dann wieder in ein Label und mit

    <value condition="StringCompare(Control.Getlabel(ID DON),DON) + StringCompare(System.Date(yyyy),2016)>40</value>
    <value condition="StringCompare(Control.Getlabel(ID DON),DON) + StringCompare(System.Date(yyyy),2017)>41</value>

    Aber auch dann musst ja die ganze Liste für jedes Jahr, jeden namen oder sonst wie durchexorzieren..
    Zumindest in der Theorie aber machbar denk ich.

    Grüße

  • Quasi wenn label text = DON, dann Geburtsjahr = 1976 das dann wieder in ein Label und mit

    <value condition="StringCompare(Control.Getlabel(ID DON),DON) + StringCompare(System.Date(yyyy),2016)>40</value>
    <value condition="StringCompare(Control.Getlabel(ID DON),DON) + StringCompare(System.Date(yyyy),2017)>41</value>

    Aber auch dann musst ja die ganze Liste für jedes Jahr, jeden namen oder sonst wie durchexorzieren..


    Dann kann ich wahrscheinlich auch komplett das Datum abfragen um auf True zu kommen:

    XML
    <label>Heute wird Marco 40 Jahre alt</label>
    <visible>substring(system.date(mm),01)+substring(system.date(dd),06)+substring(system.date(yyyy),2016)</visible>

    Je User, je Jahr. Das wäre dann direkter, ohne externe Stringcompare-Liste.
    Ist vielleicht bei der Eingabe etwas übersichtlicher.
    Wenn ich dann noch die 3-Tage Warnung haben will, wird es dann der Code x3. Aber dann zumindest nur kopieren und einfügen.
    Die 40 als Ausgangslage zu nehmen wird wirklich abstrakt (hast du ja schon geschildert).

    Etwas kürzer wäre schön. Über eine Eingabemaske als Skinsetting sehe ich aber auch schwarz.
    Man könnte noch Name und Tag, Monat, Jahr als eigene Variable eingeben, aber das ändert nichts an der Altersanzeige.
    Wenn man dann den letzten Wert "Jahr" als Basis nimmt, landet man wieder bei der stringcompare-Liste.

  • Wo hast Du denn Deine Kalender/Kontaktdaten abgelegt? Da mal nach ner API suchen und in Python darauf zugreifen. N bisschen kann ich Dir ja behilifch sein :) Vielleicht wird daraus ja auch ein Addon für die Community :D

    mfg chmee

  • Dann kann ich wahrscheinlich auch komplett das Datum abfragen um auf True zu kommen:

    <label>Heute wird Marco 40 Jahre alt</label>
    <visible>substring(system.date(mm),01)+substring(system.date(dd),06)+substring(system.date(yyyy),2016)</visible>

    also VAR´s sind sicher übersichtlicher, je nach Eintragsmenge..
    Und weniger Pflegebedüftig.

    Code
    <control type="label" id="11111">
    <label>Heute wird Marco 40 Jahre alt</label>
    <visible>substring(system.date(mm),01)+substring(system.date(dd),06)+substring(system.date(yyyy),2016)</visible>


    heißt ja du musst es nächstes Jahr Überarbeiten..

    Wenn aber

    Code
    <control type="label" id="11111">
    <label>Don</label>
    ...
    <control type="label">
    <label>Heute wird Don $VAR[Years] Jahre alt</label>

    mit

    Code
    <value condition="StringCompare(Control.Getlabel(1111),DON) + StringCompare(System.Date(yyyy),2016)>40</value>
    <value condition="StringCompare(Control.Getlabel(1111),DON) + StringCompare(System.Date(yyyy),2017)>41</value>

    machen würdest, könntest auch bis meinetwegen 2020 schon anlegen und hättest ruhe damit..
    So eine VAR kann ja auch locker hundert Zeilen enthalten ohne das es tragisch wird..

    Einmal für ein paar Jahre angelegt und du bist fertig für ne weile..

    Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!