[ALPHA VERSION] SerienPlaner

  • Den kannst Du auch nicht ändern. Deine hinzugeschalteten Kategorien werden aber spätestens erst nach diesem kleinsten - eben diese 5 min - Zyklus eingelesen ;)

    achso meinst du das. dachte du spielst noch auf diese 8 min an.
    es ist aber auch so, dass ich mehr als diese 5 min gewartet hatte. da ich nebenbei dann an anderen dingen gewerkelt habe.
    scheinbar lief ja auch der service nicht. warum auch immer.
    jetzt komme ich aber weiter. auch mit dem iptv clienten geht es jetzt.
    bg

  • Ich bin grad ein wenig damit beschäftigt, das ganze in confluence zu integrieren und stoße grad auf folgendes Problem...

    das öffnen des Infofensters habe ich über ein ActivateWindow(1199) gelöst, das item sieht also so aus...


    um die Propertys in das Info-Window zu bekommen habe ich in der Übersicht ein include eingefügt


    XML
    <include name="onclick">
        <onclick>SetProperty(Widget.Title,$INFO[ListItem.Label2],home)</onclick>
        <onclick>SetProperty(Widget.Senderlogo,$INFO[ListItem.Property(Senderlogo)],home)</onclick>
    </include>


    der Aufruf im Info-Window ist dann wie folgt...


    XML
    <control type="image">
        <description>Channel Logo</description>
        <left>640</left>
        <top>355</top>
        <width>80</width>
        <height>42</height>
        <texture border="5">$INFO[Window(Home).Property(Widget.Senderlogo)]</texture>
        <aspectratio>scale</aspectratio>
    </control>

    aber irgendwie wird da nicht angezeigt...

    bei meinem anderen Skin klappt das...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Ich bin grad ein wenig damit beschäftigt, das ganze in confluence zu integrieren und stoße grad auf folgendes Problem...

    das öffnen des Infofensters habe ich über ein ActivateWindow(1199) gelöst, das item sieht also so aus...
    aber irgendwie wird da nicht angezeigt...

    bei meinem anderen Skin klappt das...

    Hi,
    klingt irgendwie um die Ecke gedacht mit den Ganzen Propertys. Vielleicht ist es aber auch richtig.
    Aber was macht dieser Befehl:

    Code
    RunScript(plugin.program.sereinplaner,"?methode=set_details_to_home&detailurl=$INFO[Window.Property(SerienPlaner.1.Popup)]")
  • in meinem Fall gar nichts mehr...
    da beim SerienPlaner ja alle details schon gescraped sind und alle Propertys schon
    gesetzt sind...

    Im Fall von TVHighLights wird mit diesem Programaufruf der DetailScraper gestartet und das InfoFenster
    geöffnet...

    Ich muß ja irgendwie die Properties in nächste Fenster übergeben...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • RunScript(plugin.program.sereinplaner,"?methode=set_details_to_home&detailurl=$INFO[Window.Property(SerienPlaner.1.Popup)]")

    Wenn diese Zeile tatsächlich 1:1 aus dem Skript rauskopiert wurde, würde diese einen Fehler werfen, denn es gibt kein plugin.script.sereinplaner (Schreibfehler).

    Ansonsten werden mit dieser Methode zusätzliche Properties gescrapt, zusammen mit den ermittelten Props ins Home-Window (ID 10000) geschrieben und wahlweise das Infofenster geöffnet.

    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

  • Wenn diese Zeile tatsächlich 1:1 aus dem Skript rauskopiert wurde, würde diese einen Fehler werfen, denn es gibt kein plugin.script.sereinplaner (Schreibfehler).

    ja, das ist unter Anderem auch ein Schreibfehler.
    Aber wie ich geschrieben habe, habe ich diesen Programaufruf rausgenommen, da er meines erachtens keinen Sinn macht... Ich habe ja schon alle information und muß nicht noch einmal scrapen...
    Bei TVHighLight wurde das ja so eingebaut, da die Detailinformationen neu gescraped werden um auch die Anzahl der Seitenaufrufe zu minimieren...

    Korrigiert mich, wenn ich falsch liege...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Sofern den content im selben container wie das click hast sieht es richtig aus. Hab nur noch nie versucht ob die Klein/Großschreibung auch relevant ist.
    Aber wie BG versteh ich den sinn nicht ganz:
    Normalerweise, müsste dein Property mit der Referenzierung auf das Fenster in dem es geschrieben wird auch so gehen:
    $INFO[Window(Home).Property(SerienPlaner.1.Logo)] sollte auch ohne das "Property ins Property contentintem" doch soweiso gehen oder?

    Grüße

  • so, ich habe mich in den letzten Tagen mal damit beschäftigt, weg von den Massenhaften
    Item zu kommen und die ListItems durch einen Pluginaufrug zu übergeben.
    Desweiteren habe ich jezuze auf eine interne SQLlite Datenbank umgestellt. Es werden jetzt alle
    Sendetermine in dieser Datenbank gespreicher und von dort ausgelesen...

    Das soll im endeffeckt dazu dienen das man schnell zwischen den Kategorien wechseln kann ohne
    wieder neu scrapen zu müssen, da das sehr viel Zeit in Anspruch nimmt...

    des weiteren konnte ich dadurch die ListItems etwas besser an KODI anpassen($INFO.ListItem.Art(poster)), bspw. ist es schon jetzt möglich durch das ändern nur einer Zeile im Skin Aeon Nox Silvo das Plugin zu integrieren...

    Code
    <content>plugin://plugin.program.serienplaner/?methode=get_item_serienplaner</content>

    Allerdings hat die ganze Sache auch noch einen Haken:
    Ich habe es noch nicht hinbekommen, dass die ListItems auch aktualisiert werden... das klappt im Moment nur durch einen Skinreload... Ich habe noch nicht herausgefunden wie ein Container.Refresh oder Container.Update() funktionieren...

    ToDo-Liste:

    • Container.Refresh / Container.Update() einbauen
    • Filter in Datenbank-abfrage einauen (nur Erstausstrahlungen, nur Serien aus DB)
    • 8/15 Tage in voraus scrapen und in SQL-DB speichern
    • das komplette scrapen im hintergrund laufen lassen
    • neuen scraper für Deutsche Serien und Soaps integrieren

    Fall noch jemand Ideen hat oder sich beteiligen möchte darf er sich gern mit einbringen... :)

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

    2 Mal editiert, zuletzt von sveni_lee (18. April 2016 um 08:50)

  • Ich habe es noch nicht hinbekommen, dass die ListItems auch aktualisiert werden... das klappt im Moment nur durch einen Skinreload... Ich habe noch nicht herausgefunden wie ein Container.Refresh oder Container.Update() funktionieren...

    Das Problem hat Tobias auch ..muss auf die Seite ein Onload machen der es dann neu startet.
    Macht natürlich dann die einstellbare Zeit sinnlos.

  • das Problem habe ich gerstern gelöst. :rolleyes:
    Der Container lässt sich tatsächlich nicht so einfach aktualisieren. Da ich aber so wenig wie möglich in den
    Skin eingreifen möchte habe ich versucht das innerhalb des Plugin/Scripts in den Griff zu bekommen.

    Die Lösung:
    Kodi aktualisiert den Container wenn der Pfad dahin sich ändert! also muß man nur dafür sorgen, das der Pfad
    zum Container sich ändert. Dasist im Grunde sehr simpel. Ich habe am ende einfach ein ListItem mit der der Zeit
    in Sekunden seit 01.01.1970 angehangn...

    XML
    <content>plugin://plugin.program.serienplaner/?methode=get_item_serienplaner&reload=$INFO[Window(Home).Property(SerienPlaner.Countdown)]</content>

    im Script:

    Code
    elif methode == 'refresh_screen':
        for category in categories():
            WINDOW.setProperty('SerienPlaner.Countdown', unicode(time.time()))
            refreshSerienPlaner(category)

    jetzt wird bei jedem refresh im script auch der Pfad geändert und somit der Container im Skin aktualisiert...

    Das könnte auch für Tobias nützlich sein...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • also ich denke das ich heute abend mal wiedr einen Abgleich auf Github machen kann...
    Wie ch geschrieben habe, lässt sich der Kontent nun mit einer Zeile aufrufen...
    Der Wechsel zwischen den ausgewählten Kategorien geht auch ohne rneutes scrapen da
    alle ausgewählten Kategorien in der SQLite db gespeichert werden...
    Ich hab eauch noch einen scraper für Fersehserien.de hinzugefügt der etwas mehr an
    Informationen bei deutschen Serien und Soaps findet...
    Fanart werden jetzt auch geholt, soweit vorhanden, und als ListItem.Art(fanart) zur verfügung
    gestellt...
    man kann auch über mehrere Tagen scrappen lassen...

    den Rest werde ich dann mal zusammenschreiben...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • so, neue Version ist auf Github... bitte testen

    der Content kann nun wie folgt eingebunden werden:

    XML
    <content>plugin://plugin.program.serienplaner/?methode=get_item_serienplaner&reload=$INFO[Window(Home).Property(SerienPlaner.Countdown)]</content>


    oder auf die "alte" und bekannte Weise.

    Ich habe die ListItem in der neuen Methode KODI angepasst


    Ich hoffe das Hilft den Skinnern etwas weiter...

    Die db wird in den selben Pfad wie die PluginSttings geschrieben...
    Outdated gibt es nicht mehr, es werden grundsätzlich alle beendeten Serien aus der db gelöscht.
    gescrapped werden alle Kategorien die ihr in den Settings einstellt... diese werden auch ersteinmal alle angezeigt,
    lassen sich aber über die RunScriptt...methode shoe_select-dialog ändern und bleiben dann auch für die
    aktuelle sizung aktiv...
    In den Settings kann nun auch gewählt werden, wieviele Tage im Voraus gescrapped werden soll aber immer daran
    denken, je mehr Tage, je länger dauert das scrappen...

    Odroid N2+ 4GB 16GB eMMC CE
    TVHeadend Server/Client

  • Hallo und danke für die Erleichterung.
    Habe es jetzt zum testen in mein Widget eingebaut.
    Auch, dass jetzt die Fanarts angezeigt werden können ist super.

    Bei Runtime schein es aber noch einen Fehler zu geben. Es wird mir immer 0 angezeigt.
    bg

    P.S.: mit der alten Methode kklappt Runtime noch
    Edit2: könntest du das Logo auch noch als ListItem.Art(ClearLogo) einbauen?
    Edit:3: wie kann ich das popup für das aktuelle item aufrufen? in der alten Methode muss ich ja direkt die nummer angeben, dass kann ich ja nun nicht mehr ( per <content> ... </content> )

  • Mich würde mal der (komplette) Code für das Widget interessieren, insbesondere der Part für die Umsetzung des 'Dynamic List Content'. Irgendwie kann ich als Programmierer immer noch nicht die Verbindung zwischen Plugin und Skin/Widget nachvollziehen...

    Wie svenie_lee die ListItems befüllt, ist mir schon klar, doch die müssen ja irgendwie im Widget verwurstet werden.

    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

  • Hey,
    es gibt ja die sogenannten Info Labels
    Diese werden zB. per $INFO[ListItem.Label] abgerufen. Wenn nun per Addon die Standardlabels bedient werden, brauche ich als Skinner keine zuzätzlichen Labels (mit property) einbauen.
    Meinst du das oder habe ich dich falsch verstanden?
    bg

    P.S.
    das Widget besteht aus einem Container. Als content gebe ich dann <content>...</content> an. Dynamic List Content
    Im Layout des Containers kann ich dann mit den InfoLabels arbeiten

  • as Widget besteht aus einem Container. Als content gebe ich dann <content>...</content> an. Dynamic List Content
    Im Layout des Containers kann ich dann mit den InfoLabels arbeiten

    Genau das meine ich. Ich würde halt gerne mal ins Widget schauen. Den Wiki-Part mit dem Dynamic List Content kenne ich. Ausführlich ist was anderes...
    Zu den ListItems: Die decken ja auch nicht alles ab. Wenn ich z.B. ein(e) Label/Property 'Osterhase' brauche, muss ich das ja auch erst erzeugen, damit es unter ListItem.Osterhase ansprechbar ist.

    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!