Datumsformat in einem Script

  • Ich bräuchte mal Unterstützung von den Profis:

    Vorweg, ich hab keinerlei Ahnung davon, Lösungsvorschläge hier aus dem Forum oder per Google brachten mich soweit wie jetzt, bei allem anderen
    hab ich hoffnungslos Versagt wegen mangelnder Grundlagen was ich mit "defs" dafür Anfangen soll/wie man sie Einsetzt.

    Ziel wäre Property zu schreiben die immer Tag -1,-2,-3 entsprechen.

    Nach etlichen versuchen scheint das zu gehen, allerdings bekomm ich nun das US Datumsformat zurück und bräuchte unseres.
    Also nicht 2017-06-24 sondern 24.06.2017.

    Jeglicher Versuch einer Lösung klappt nicht. Entweder ich bekomme eine Modulwarnung obwohl ichs angegeben habe, oder ich weiß gar nicht was
    ich mit so etwas wie strptime Anfangen soll.

    Vielleicht kann mit einer der Profis ne fertige Lösung machen für den ersten "offset Tag"?

    Soweit bin ich gerade.. Die Property kommen auch an.. Wären die nun noch im richtigen Format wäre alles schon gut.

    Ziel soll danach sein das Property im Skincode abzugleichen mit ListItem.Lastplayed um einen Flag einzublenden der alle Episoden oder Filme
    Markiert die in den letzten Tagen gesehen wurden. Per Skincode ist das nur eingeschränkt Umsetzbar, dort kann ich weder "Rechnen" noch
    die letzten "Episoden" sicher im Hintergrund in Strings schreiben.

    Für euch ist das sicher ein klacks, ich hab dafür schon über 50 Versuche gebraucht;)..

    Grüße

  • glaub ich habs..

    scheint zu gehen. nur wie umgehe ich jetzt das?

    14:43:53.552 T:1440 WARNING: CPythonInvoker(22): Script invoked without an addon. Adding all addon modules installed to python path as fallback. This behaviour will be removed in future version.

    bzw. was für module muss ich da nun laden?

    Grüße

  • Für Zeitdifferenzen nutzt man timedelta (hast Du ja schon im Einsatz). Um jetzt daraus einen 'länderspezifischen' Datumsstring zu machen, benutzt man strftime, in deinem Fall eben

    yesterdaystr = yesterday.strftime("%d.%m.%Y")

    wobei %d der Tag, %m der Monat und %Y das Jahr (vierstellig) sind. Ein Datum lässt sich fast beliebig formatieren, indem Du die sog. Direktiven nach deinen Wünschen kombinierst: https://www.tutorialspoint.com/python/time_strftime.htm

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (25. Juni 2017 um 15:09)

  • Du rufst das Skript vermutlich direkt auf, oder? Also RunScript und dann ein absoluter Pfad als Paramter? (zb RunScript(.../script.py))

    Die Warnung sagt aus, dass du lieber ein Addon daraus machen solltest, welches du dann aufrufst, damit nicht alle installierten python modules geladen werden (wenn ich es richtig gedeutet habe)
    Welche modules man in einem Addon braucht, kann man in der addon.xml festlegen.

    In deinem Fall würde ich die Meldung einfach ignorieren. Dir geht es ja eh nur ums Testen

    __
    Da ich gesehen habe, das @BJ1 schon hier im Thread unterwegs ist, habe ich mir jegliches zu datetime gespart, es war die richtige Entscheidung :D

  • Code
    todaystr = str(todayformat)
    yesterdaystr = str(yesterdayformat)

    Kannst Du dir sparen, da todayformat und yesterdayformat bereits Strings sind.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Für Zeitdifferenzen nutzt man timedelta (hast Du ja schon im Einsatz). Um jetzt daraus einen 'länderspezifischen' Datumsstring zu machen, benutzt man strftime, in deinem Fall eben

    genau.. ich bekam nur ständig wenn ich strftime nutze eine Meldung das das Modu nicht diese funktion hat, das ging dann mit
    from datetime import datetime dafür dann aber wieder was anderes nicht das mit import datetime dafür wieder ging, mit beidem passt das wohl irgendwie;)


    Du rufst das Skript vermutlich direkt auf, oder? Also RunScript und dann ein absoluter Pfad als Paramter? (zb RunScript(.../script.py))

    Die Warnung sagt aus, dass du lieber ein Addon daraus machen solltest, welches du dann aufrufst, damit nicht alle installierten python modules geladen werden (wenn ich es richtig gedeutet habe)
    Welche modules man in einem Addon braucht, kann man in der addon.xml festlegen.

    In deinem Fall würde ich die Meldung einfach ignorieren. Dir geht es ja eh nur ums Testen

    Ansich wollte ichs einfach immer in den Skin legen und genauso wie vermutet per runscript ausführen.. Extra ein Addon draus machen ollte ich eigentlich nicht.
    Laut LOG fügt er mir halt so dann das ein


    Code
    Script invoked without an addon. Adding all addon modules installed to python path as fallback. This behaviour will be removed in future version.

    Da hatte ich die vermutung ich muss nur irgendwas importieren von dem Modulzeugs und dann verwschwindet das und kommt nicht jedes mal beim ausführen.
    Aber wenn das nix ausmacht lass ichs;)..

    Kannst Du dir sparen, da todayformat und yesterdayformat bereits Strings sind.

    Tatsache;).. Ne Zeit lang hatte ich da davor immer die Warnung das nur strings in Propertys dürfen, aber das macht wohl das Formatieren bereits.

    Momentan siehts dann so aus:

    Für meine Zwecke reicht das wohl schon..
    Ich nehm mal an man könnte das auch irgendwie als schleife jetzt für 10 Tage machen, oder gleich mit ListItem.Laystplayed Vergleichen das nur noch true oder false rauskommt für eine Grafische Anzeige, aber ich denk das ist mir dann doch zu hoch.

    Grüße

  • Für 10 Tage (ungetestet):


    Code
    today = datetime.date.today()
    HOME = xbmcgui.Window(10000)  # Home Window
    for i in range (1, 11):
        offset = today - datetime.timedelta(days=i)
        HOME.setProperty("Date-test-%s" % (i), offset.strftime("%d.%m.%Y")
        xbmc.sleep(1000) # warum?
    sys.exit()


    gleich mit ListItem.Laystplayed Vergleichen das nur noch true oder false rauskommt

    Was willst Du denn ausgeben? Zuletzt gesehen vor x Tagen?

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (25. Juni 2017 um 15:50)

  • Was willst Du denn ausgeben? Zuletzt gesehen vor x Tagen?

    Genau.. Teste ich Morgen mal, heut komme ich nicht mehr dazu..

    Hintergrund: Wir sehen nur Serien, vieles öfters oder "Rückwirkend vor der neuen Staffel" mit ab hier abspielen und stoppen irgendwo/irgendwann.
    Haben immer mehrere Serien die aktuell gesehen werden. Das man in unserer Episodenansicht mit kleinem Text zuletzt gesehen das schneller sieht wo man zuletzt war,
    also auch bei Episoden die alle schon ein "Watched" flag haben, hab ich ein extra icon dafür.

    Im Skinengine geht das nur mit einer Variable und nur für den Focus mit einem waren Monsterding:

    Code
    Container.Content(episodes) + String.IsEqual(System.Date(dd),11) + String.IsEqual(System.Date(mm),01) + String.EndsWith(ListItem.LastPlayed,2017) + [String.StartsWith(ListItem.LastPlayed,11.01) | String.StartsWith(ListItem.LastPlayed,10.01) | String.StartsWith(ListItem.LastPlayed,09.01) | String.StartsWith(ListItem.LastPlayed,08.01) | String.StartsWith(ListItem.LastPlayed,07.01) | String.StartsWith(ListItem.LastPlayed,06.01) | String.StartsWith(ListItem.LastPlayed,05.01) | String.StartsWith(ListItem.LastPlayed,04.01) | String.StartsWith(ListItem.LastPlayed,03.01) | String.StartsWith(ListItem.LastPlayed,02.01) | String.StartsWith(ListItem.LastPlayed,01.01)]


    Für Anzeige alle Episoden die 10 Tage vor dem 11.1. im Jahr 2017 abgespielt wurden, und das für jeden Tag im Jahr..
    Mit noch Zusätzen über die Jahresgrenze und das aktuelle Jahr ein richtiges Monster und auch nur für den Focus.

    Mit den propertys will ich dann einfach in der Liste ne Grafik per visible anzeigen mit
    String.IsEqual(Window(home).Property(Date-test-1),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-test-2),ListItem.Lastplayed)

    Grüße


    Grüße

  • Also willst Du per ListItem.LastPlayed checken, ob dieses innerhalb der letzten 10 Tage (ab heute) angesehen wurde? Steht in ListItem.LastPlayed auch das Jahr drin (also z.B. 06.01.2017)?

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Also willst Du per ListItem.LastPlayed checken, ob dieses innerhalb der letzten 10 Tage (ab heute) angesehen wurde? Steht in ListItem.LastPlayed auch das Jahr drin (also z.B. 06.01.2017)?

    Genau.. Ob das auch Ländereinstellungsabhängig ist weiß ich gar nicht bei mir ist es genauso formatiert. Deswegen ja mein Date Dilemma weil die Englisch waren.
    Dann kommt natürlich nie true raus.

    Aber jetzt gehts ja. Ich dachte erst man könnte das bestimmt als Service machen, das gleich einfach ein Property rauskommt das true ausgibt und
    man das dann als condition verwendet, dagegen spricht aber das das dann sicher nur für den Focus geht wenn es on-to-fly gemacht wird.

    Das ist ja einer der Nachteile in Listen. Man kann dort nicht unbedingt alles für die unfocus Elemente verwenden was sich aktualisiert, da das ListItem.Lastplayed ja in dem Fall
    an dem Wert des aktuellen Focus hängt und nicht für jedes Element einzeln gemacht wird (zumindest in Skincodes).

    Bei der Schleife steh ich wieder mal vorm selben Problem wie bei den Functionen die als Lösungsvorschläge für mein Formatierungsproblem alle nicht gingen:
    (Das Ding aus dem Serienplaner Links zum Umformatieren von Datumswerten).

    Egal was ich mache, es kommt immer ein invalid syntax sys.exit() ^
    Irgendwie komm ich mit Einrückungen überhaupt nicht klar, entweder das oder unexpected indent, irgendwas kommt immer;)..

    Ich werd es wohl einzeln machen, sind ja nur 10, und es ändert sich ja nur die Zahl im Text..

    Aber Danke für den Versuch;).. Ich will dich aber nicht unnütz Nerven da das bei mir vergebliche Mühe ist wie du schon Merkst;)..

    Grüße

  • Ob das auch Ländereinstellungsabhängig ist weiß ich gar nicht bei mir ist es genauso formatiert. Deswegen ja mein Date Dilemma weil die Englisch waren. Dann kommt natürlich nie true raus.

    Das sollte abhängig von den Datumsformaten im Setup und damit länderspezifisch sein.

    Ich dachte erst man könnte das bestimmt als Service machen, das gleich einfach ein Property rauskommt das true ausgibt und
    man das dann als condition verwendet

    Dazu muss oben in meiner Schleife nur eine einzige Zeile geändert werden. Mach' ich Dir.

    Egal was ich mache, es kommt immer ein invalid syntax sys.exit() ^
    Irgendwie komm ich mit Einrückungen überhaupt nicht klar, entweder das oder unexpected indent, irgendwas kommt immer;)..

    Die Einzüge (indents) sind in der Tat so eine Sache. Hängt stark vom verwendeten Editor ab. Was nimmst Du da?
    Auf das sys.exit() kann man auch verzichten.

    Dein Problem lässt sich mit folgendem Code lösen:

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Und richtig 'richtig' als Skript:

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Dazu muss oben in meiner Schleife nur eine einzige Zeile geändert werden. Mach' ich Dir.


    Du Fuchs du;).. aber das wird nur für den Focus gehen oder.. Deswegen Dachte;).. Soweit ich den Code verstehe setze ich ja den Befehl ab
    mit RunScript, dann Vergleiche ich
    if offset.strftime("%d.%m.%Y") == ListItem.Property(LastPlayed): return True ob es passt.. Dann hab ich aber nur das Icon für den Focus.
    Mit visibles aus Propertys aber auch für die Elemente "Drumherum" wie ListItemNoWrap(-1).LastPlayed, ListItemNoWrap(1).LastPlayed usw.


    Mal angenommen das sähe so aus:

    Code
    <control type="image"><!-- test -->
    						<left>950</left>
    						<top>18</top>
    						<width>63</width>
    						<height>36</height>
    						<texture>icons/xxx.png</texture>
    						<visible>String.IsEqual(Window(home).Property(Date-now),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-1),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-2),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-3),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-4),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-5),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-6),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-7),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-8),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-9),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-10),ListItem.Lastplayed)</visible>
    					</control>

    Dann prüft er ja im Focus, in der listposition -1,-2,-3,-4,1,2,3,4 usw. auch. Mit dem If ja nur beim aktuellen ListItem..
    Vielleicht täuch ich mich auch - Plan hab ich ja keinen was dort mit ListItem rauskommt..

    Die Einzüge (indents) sind in der Tat so eine Sache. Hängt stark vom verwendeten Editor ab. Was nimmst Du da?
    Auf das sys.exit() kann man auch verzichten.

    Notepad++ mit dem Phyton plugin.. Damit hab ich dann ohne den "Koditeil" per print die Ausgabe kontrolliert mit ausführen bis kein Fehler mehr kam.
    Scheint wohl generell ein Proplem zu sein damit. Dummerweise direkt in Kodi muss ich teils entweder Kodi jedesmal Neustarten oder das Script neu Benennen weil
    das wohl irgendwo im Speicher bleibt und Änderungen gar nicht übernommen werden.
    Da war ich dann irgendwann bei Datei Test53;).. wenn man schon angefangen hat packt einen ja der Schweinehund - dann solls auch Funktionieren.

    Ich denke für die ganze Liste werd ich wohl bei propertys bleiben. Aber Danke für die Tips :thumbup: .

    Schöner wäre jetzt wahrscheinlich noch als Service um über die "Tagesgrenze" zu kommen? Das wäre jetzt nicht sooo wichtig, aber Theoretisch stimmt sonst ja ab 00:00 Uhr die Anzeige nicht mehr
    wenn ich das per Runscript meinetwegen in der Startup von Kodi mache..
    Aber da schaue ich erst mal wie "schnell" das aktualisiert wenn ichs in der MyvideoNAV jedesmal im onload ausführe (nicht das es merklich "später" nach der View erst verfügbar ist und die Icons dafür "reinruckeln").

    Ich teste das die Tage und Berichte dann.

    Grüße

  • Ich denke für die ganze Liste werd ich wohl bei propertys bleiben.

    Das ist wohl die Macht der Gewohnheit. Ich komme da vollkommen ohne Properties aus.
    Aber probiers aus. Mal sehen was dabei rumkommt.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Aber probiers aus. Mal sehen was dabei rumkommt.

    Hey,

    Klappt in der Tat nur für den Focus.. macht man es in einem Testbutton kommt schon ein Fehler "listItem nicht verfügbar"..
    Das mit der Schleife bekomme ich leider nicht hin, da kommt immer ein Formatierungsfehler.. Aber ohne klappt super..


    Danach kann man dann wenn man sowieso eine Overlaygrafik im Skin verwendet die als Variable definiert ist mit dem value

    Code
    <value condition="[String.IsEqual(ListItem.DBType,movie) | String.IsEqual(ListItem.DBType,tvshow) | String.IsEqual(ListItem.DBType,episode)] + !String.IsEmpty(ListItem.Lastplayed) + [String.IsEqual(Window(home).Property(Date-now),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-1),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-2),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-3),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-4),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-5),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-6),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-7),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-8),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-9),ListItem.Lastplayed) | String.IsEqual(Window(home).Property(Date-10),ListItem.Lastplayed)]">OverlayLast.png</value><!-- last played -->

    Am Anfang dieselbe Texture verwenden wie für gesehen, neu, in progress..

    Für uns super nützlich, und Danke an euch beide :thumbup: ..

    Grüße

  • Oje, als Programmierer kann ich da gar nicht hinschauen :D .

    Dein 57-zeiliges Skript mal als 6-Zeiler:

    Code
    import datetime
    import xbmcgui
    
    
    xbmcgui.Window(1000).setProperty("Date-now", datetime.date.today().strftime("%d.%m.%Y"))
    for i in range(1,11):
        xbmcgui.Window(10000).setProperty("Date-%s" % (i), (datetime.date.today() - datetime.timedelta(days=i)).strftime("%d.%m.%Y"))

    Macht haargenau das selbe (erzeugt die Properties Date-1 ... Date-10 mit den entsprechenden Datumsangaben). Mir ist immer noch nicht klar, warum Du nach Abarbeitung des Skriptes das Beenden desselben um 1 Sekunde herauszögerst (xbmc.sleep(1000))?

    In Zeile 2 und 3 lädst Du einzelne Funktionen aus dem Modul datetime, um gleich darauf das komplette Modul datetime nochmals zu laden? Doppelt gemoppelt.
    sys.exit() brauchst Du nicht, das macht Python für dich (Garbage Collector).

    Aber schön, dass Du dich an Python ran traust ;) .

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Macht haargenau das selbe (erzeugt die Properties Date-1 ... Date-10 mit den entsprechenden Datumsangaben). Mir ist immer noch nicht klar, warum Du nach Abarbeitung des Skriptes das Beenden desselben um 1 Sekunde herauszögerst (xbmc.sleep(1000))?

    Na weil dein erstes Beispiel auch ohne das sys.exit() mir in zwei unterschiedlichen Editoren immer Formatierungsfehler auswarf wie sowas:

    Code
    Error Type: <type 'exceptions.SyntaxError'>
                                                Error Contents: ('invalid syntax', ('C:\\Users\\ncc1701d\\AppData\\Roaming\\Kodi\\addons\\skin.xeebo\\extras\\new4c.py', 7, 66, ''))
                                                SyntaxError: ('invalid syntax', ('C:\\Users\\ncc1701d\\AppData\\Roaming\\Kodi\\addons\\skin.xeebo\\extras\\new4c.py', 7, 66, ''))

    Und da in Zeile 7 nicht mal was steht, keine Enter nix, und mit sys.exit() immer ein anderer Fehler kam, hab ichs aufgegeben;)..
    Der Umbau der version zum Abfangen auf Propertys statts des ListItem (wie deins jetzt), da war ich zu blöd für:)..
    Und als Skinner Schrecken einen die paar Zeilen nicht wirklich ab so lang es läuft :rolleyes: .

    Das xbmc.sleep(1000) hat immer noch keinen Sinn, bzw. hatte ich da Überlegt ob man dadurch das Script verzögern könnte (wenn das überhaupt so Gedacht ist, nicht versucht ob dann die Property auch erst nachdem Skriptende verfügbar sind).
    Ist aber gar nicht nötig, geht auch ohne..

    In Zeile 2 und 3 lädst Du einzelne Funktionen aus dem Modul datetime, um gleich darauf das komplette Modul datetime nochmals zu laden? Doppelt gemoppelt.

    Einfach weil ohne den import danach immer ein

    Code
    File "C:\Users\ncc1701d\AppData\Roaming\Kodi\addons\skin.xeebo\extras\lastplayed.py", line 8, in <module>
                                                    today = datetime.date.today()


    kam.. Wenn ich es dann nur mit import datetime machte ging wieder das strftime nicht und dort kam dann was in der Art datetime.datetime.strftime ist nicht vorhanden als Funktion..
    Frag mich nicht nach dem Grund, es funktioniert aber nur mit beiden Zeilen bei mir..

    Aber deins ist super.. Klappt jetzt 1a, ohne Fehler.

    Aber Phyton lass ich dann doch. So wirklich meins ist das nicht :)

    Grüße

  • zu früh gefreut..

    Code
    - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                Error Type: <type 'exceptions.ImportError'>
                                                Error Contents: Failed to import time because the import lockis held by another thread.
                                                Traceback (most recent call last):
                                                  File "C:\Users\ncc1701d\AppData\Roaming\Kodi\addons\skin.xeebo\extras\lastplayed2.py", line 5, in <module>
                                                    xbmcgui.Window(10000).setProperty("Date-now", datetime.date.today().strftime("%d.%m.%Y"))
                                                ImportError: Failed to import time because the import lockis held by another thread.
                                                -->End of Python script error report<--

    ist das ein Mistzeugs ;)

    Grüße

  • Hast Du irgendwo ein import time drin? Ansonsten kannst Du mal ein Klammernpaar zusätzlich setzen:

    xbmcgui.Window(1000).setProperty("Date-now", (datetime.date.today()).strftime("%d.%m.%Y"))

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

Jetzt mitmachen!

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