An die Skinner - wie Widget ins Homemenü integrieren

  • 'action=refresh' schmeisst alte Daten weg und aktualisiert den Container. 'action=scrape' scraped rtv.de und aktualisiert ebenfalls den Container. Mich würden ja mal die Log-Meldungen des Services interessieren (starter.py). Du kannst mir ja mal ein komplettes Debug-Log ab Start zukommen lassen (per PM oder Konversation) - muss ja nicht öffentlich sein.

    ok mach ich mal.
    wenn ich manuell scrappe, dann bekomme ich ja inhalt.
    wirst du dann im [definition='1','0']log[/definition] sehen.

  • Ich habe mir das Log mal angesehen, offensichtlich gehört diese Zeile zu einer Fehlermeldung, allerdings ist sie unvollständig (?). Die starter.py würde also überhaupt nicht starten. Kein Wunder, wenn Du nichts siehst.


    Code
    File "D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\starter.py", line 26, in <module>

    In Zeile 26 wird das Refresh-Intervall ausgelesen. Offensichtlich funktioniert das nicht. Kannst Du mal hier die userdata/addon_data/http://plugin.service.gto/settings.xml anhängen?

    Btw. selbst wenn Debugging nicht aktiv ist, sollte das nach dem Filtern wenigstens so aussehen:

    07:38:02 T:139844663633664 NOTICE: [plugin.service.gto 0.1.0]: Starting German Telecast Offers V.0.1.0
    07:38:02 T:139844663633664 NOTICE: [plugin.service.gto 0.1.0]: Settings (re)loaded

    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 (30. April 2016 um 08:48)

  • Eigentlich nicht, denn das macht die starter.py (das ist der Service, der für die Aktualisierung/das Scrapen verantwortlich ist). Evtl. ist der PVR beim Start noch nicht bereit, so dass die Kanalliste nicht abgerufen werden kann. In dem Fall werden gescrapte Ergebnisse verworfen, weil sie keinem PVR-Kanal zugeordnet werden können. Deswegen gibt es auch das Scraper-Delay im Setup. Einfach mal den Wert erhöhen.

    scheint so.. die EPG Dateien zumindest holt er 3 sekunden nach deiner Service im LOG.
    Ich dachte das das mit Zeige zurückliegende sich soweiso erübrigt, aber gut zu wissen.
    Dann werd ich das mal mit dem erhöhen versuchen, nach der refreshzeit ging es ja immer.
    Nur 30 Minuten warten ist etwas doof. TV-Highlight hatte ich dann immer auf dem Widgetbutton den es
    eh gibt um content zu öffnen. Nur wenn man dann irgendwann jedes zweite widget manuell läd nervt das auch.

    Rating sah ich halt noch die /3 in grau, genauso wie darunter Genre und Laufzeit.
    So wirklich viel kam mit meinen hauptsächlich Öffentlich rechtlichen Programmen eh nicht dabei raus.
    Das meiste war dort eh leer..

    Grüße

  • Nur wenn man dann irgendwann jedes zweite widget manuell läd nervt das auch.

    Naja, das ist ja auch irgendwie freaky - das muss von alleine funktionieren. Ich könnte natürlich die PVR-Abhängigkeit rausnehmen oder als Option hinterlegen. Wäre für die Leute interessant, die kein PVR-Backend angebunden haben und nur wissen wollen, was halt im TV läuft. Das Widget selbst ist aber wiederum an die TV-Sektion gebunden, die es ja nicht gibt, wenn man keinen Server/Client hat. Ein Teufelskreis...

    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

  • Naja, das ist ja auch irgendwie freaky - das muss von alleine funktionieren. Ich könnte natürlich die PVR-Abhängigkeit rausnehmen oder als Option hinterlegen. Wäre für die Leute interessant, die kein PVR-Backend angebunden haben und nur wissen wollen, was halt im TV läuft. Das Widget selbst ist aber wiederum an die TV-Sektion gebunden, die es ja nicht gibt, wenn man keinen Server/Client hat. Ein Teufelskreis...

    Genau.. Ich hab ja nur IPTV Testsystem.. Als ich würde es fast an das TV gebunden lassen. Auch wenns für den einen oder anderen auch ohne gut ist.
    Ich würde ja nie den Rechner starten und im KodiWidget schauen was als Empfehlung kommt um danach den Receiver anzumachen.
    Beim Serienplaner macht das mehr Sinn um nichts zu verpassen als in einem das nur Tips anzeigt.
    Da kann ich auch gleich die Tips am Receiver anschauen (hat man ja je nach Receiver eh schon mit an Bord).

    Aber mal schauen was aus deinem Widget wird was noch alles vor hast Einzubauen :) .

    Grüße

  • Ich habe mir das Log mal angesehen, offensichtlich gehört diese Zeile zu einer Fehlermeldung, allerdings ist sie unvollständig (?). Die starter.py würde also überhaupt nicht starten. Kein Wunder, wenn Du nichts siehst.


    Code
    File "D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\starter.py", line 26, in <module>

    In Zeile 26 wird das Refresh-Intervall ausgelesen. Offensichtlich funktioniert das nicht. Kannst Du mal hier die userdata/addon_data/http://plugin.service.gto/settings.xml anhängen?

    Btw. selbst wenn Debugging nicht aktiv ist, sollte das nach dem Filtern wenigstens so aussehen:

    07:38:02 T:139844663633664 NOTICE: [plugin.service.gto 0.1.0]: Starting German Telecast Offers V.0.1.0
    07:38:02 T:139844663633664 NOTICE: [plugin.service.gto 0.1.0]: Settings (re)loaded

    Meine momentane Erkenntnis/Vermutung ist folgende:

    - Ohne das das Script einmalig, manuell angestoßen wurde zu scrappen läuft es nicht. (jedenfalls bei mir)
    - Nach dem scrappen funktioniert alles. Heute, beim ersten Start von Kodi, lief es perfekt. Es hat auch nach der angegeben Zeit selbst die aktualisierung gemacht


    was macht eigentlich die Funktion "Aktualisierungsintervall Inhalte", wenn sie auf AUS steht?
    bg

    EDIT:
    - jetzt nach einem weiteren neustart, funktioniert es wieder nicht. "Aktualisierungsintervall Inhalte" habe ich zuvor auf AUS gestellt.
    - Wenn ich "Aktualisierungsintervall Inhalte" auf irgendeine Zeit stelle, läuft es wieder.
    bg

  • was macht eigentlich die Funktion "Aktualisierungsintervall Inhalte", wenn sie auf AUS steht?

    Da wird neu gescrapt. Im Gegensatz zu TV Digital, die ihre Seite irgendwann um Mitternacht aktualisieren, macht das rtv 'dynamisch', d.h. die Inhalte auf rtv.de ändern sich. Wenn "Aktualisierungsintervall Inhalte" auf aus steht, wird nur beim Start gescrapt. Wenn Du eine bessere und eingängige Bezeichnung hast - nur her damit. Bei solchen Sachen frage ich immer meine Frau. Die Antwort liegt oft näher als man glaubt ;)

    Meine momentane Erkenntnis/Vermutung ist folgende

    Da liegst Du garnicht so verkehrt. Die Erklärung ist folgende:

    Nach Änderung der Einstellungen wurden diese auch korrekt abgespeichert. Zu diesem Zeitpunkt lief aber der Service schon nicht mehr (Fehler Zeile 26), so das auch keine Aktualisierungen durchgeführt wurden. Nach einem Neustart ist auch der Service mit den korrekten Einstellungen gestartet und alles läuft wie erwartet ;) .

    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

  • EDIT:- jetzt nach einem weiteren neustart, funktioniert es wieder nicht. "Aktualisierungsintervall Inhalte" habe ich zuvor auf AUS gestellt.
    - Wenn ich "Aktualisierungsintervall Inhalte" auf irgendeine Zeit stelle, läuft es wieder.

    Was ich noch nicht getestet habe ist das popup. Bin mal gespannt ;)

    EDIT2:
    so Thema Popup:

  • EDIT:- jetzt nach einem weiteren neustart, funktioniert es wieder nicht. "Aktualisierungsintervall Inhalte" habe ich zuvor auf AUS gestellt.

    Jupp. Ist ein Bug. Am Montag ist er weg. Zum Thema Popup muss ich mal schauen. Danke fürs Testen! Und dran denken: Ist eine very early Pre-Alpha! Testing only! 8)

    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

  • das Info Window wurde nicht aufgerufen, da ich das onclick in die list und nicht ins item gelegt habe.
    wenn ich es in die list packe muss ich es noch erweitern. die container id muss dann noch angegeben werden.

    Code
    RunScript(plugin.service.gto,action=infopopup&blob=$INFO[Container(402).ListItem.Property(BlobID)])

    was aber komisch ist. es wird das gleiche script geöffnet wie für das tvhighlights script.
    das liegt nämlich noch in meinem skinordner. kannst du das bitte ändern.
    falls tdoe sein addon noch weiterpflegen sollte, würde ich es gerne drinnen lassen. vorerst.
    bg

  • was aber komisch ist. es wird das gleiche script geöffnet wie für das tvhighlights script.
    das liegt nämlich noch in meinem skinordner. kannst du das bitte ändern.

    Bahnhof. Du meinst die Benennung aka Dateiname des Infofensters? XML ist kein Script, sondern lediglich die Beschreibung eines Sachverhalts. XML hat daher auch keine Executive und ist damit auch kein (ausführbares) Script. Es ist einfach nur ein Schema.

    Wenn es um die Benennung geht, kann ich das ändern, kein Thema.

    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

  • Der Name der XML wird sicherlich im Addon bestimmt und da scheint es der gleiche Name wie beim TV Highlights zu sein.

    Ja. Ändere ich.

    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

  • Was genau meinst du damit? "Grad im Bezug auf Krypton ..."

    müsstest vielleicht dringend kurz drüberschauen.. Kenn Horizonz nicht so genau :) .
    Zumindest alle deine Parameter includes kannst mal umbenennen. Alle visible Conditions werden umgeschrieben - die alten sollen aber wohl erst in Version 18
    dann wegfallen - also alle Stringcompare, Integergreaterthan..
    Dazu fallen noch Gefühlt 10 Dialoge raus und werden durch einige andere zentralisiert.
    Einen von den neuen DSP Dingern von jarvis kannst gleich wieder in den Papierkorb werfen..

    Aber was ich meinte:

    Hauptänderung ist vor allem das das contextmenü und die info global überall in allen content providern eingeführt wird.
    Sprich in jedem Widget auch im Home kommen dann per "i" die "normalen Infodialoge"..
    Die müssten umgestellt werden: Bisher verwendete man ja Container.content für einzelne Kategorien. Um seltsame Ereignisse zu verhindern
    (stimmt dann ja nicht mehr unbedingt - wobei es bei mir vorher auch ohne ging), sollten die umgestellt werden auf das neue ListItem.DBType.

    Im Gegenzug hab ich auf Nachfrage Erfahren das auch alle Addons das mit Ausgeben sollen (damit z.B. bei Youtube oder Apple movietrailers auch das
    ListItem.DBType greift und das zurückwirft als was das Addon sich einstuft - ob Film, Episode oder sonst was).

    Das hat ja jetzt mehrere Vor und Nachteile:
    Im gto-Addon würde dann die "i" Taste ja auch gehen - mein Dialogvideoinfo geht auf.. Stellt die Normalen ListItems dar die es mitbringt wie Plot und so.

    Im idealfall sollte man dann die clicks über die "C" Taste Einbauen können (die geht ja auch), oder in der Videoinfo was aber wahrscheinlich nicht so schlau sein wird.
    Dann bräuchte man gar kein Window mehr wenn es einem so reicht.

    Jetzt hab ichs so Verstanden das wegen der "Fetchmenge" erst beim click die restlichen Propertys heruntergeladen werden um Traffic zu sparen.
    Nun fragt sich was einem dann überhaupt der Dialog zusätzlich mehr anzeigt. Ist ja nicht mehr viel - bisher clickt man ja unter Umständen nur drauf damit
    man zu den Buttons kommt.

    Man hat also zwei Konstellationen:
    Die "i" Taste "totstellen" bei einem Widget wird unter Umständen gar nicht so einfach - ist ja hardcoded durch Kodi.
    Hat man ein Zusatzfenster auf dem Click kommt dort mehr und beim (wenn auch zufälligem) drücken auf "i" was halbherziges mit weniger infos.
    Das macht ja nicht so richtig viel sinn. Fragt sich nur wieviele Zusatzinfos in Form von Propertys es gibt und ob man die in irgendeiner anderen
    Form auch generieren kann als einem click. Also immer oder beim drücken auf "i"..

    Mit der Konstellation könnte man dann vielleicht direkt ein "Umschalten" oder sowas auf den Click legen, der wäre dann ja frei..

    Für den "Arbeitsaufwand" würde sich das dann für die Addonersteller ja lohen, die bräuchten kein Custom Window mehr.
    Für Skins hieße es ich könnte variabel sagen mir reichen die Buttons im Contextmenü als Zusatz und die Standardinfolabels die das Widget halt mit sich bringt.
    Ist ja bisher auch so das in einzelnen Addons die Info kommt mit nicht gerade viel drin.
    Und die die mehr wollen könnten die zusätzlichen Property entweder direkt in die Info packen oder in ihren "Infopanels für die Widgets".
    Sofern das geht - müsste ich Morgen mal in Krypton versuchen, meiner läuft ja schon auf beiden.

    Grüße

  • Jetzt hab ichs so Verstanden das wegen der "Fetchmenge" erst beim click die restlichen Propertys heruntergeladen werden um Traffic zu sparen.
    Nun fragt sich was einem dann überhaupt der Dialog zusätzlich mehr anzeigt. Ist ja nicht mehr viel - bisher clickt man ja unter Umständen nur drauf damit
    man zu den Buttons kommt.

    Bei TVHighlights ist das so, bei GTO eher nicht - da ist schon alles gescraped und steht auch im Blob (der Datenblase) zur Verfügung. Das "Nachziehen" von Infos ist Tobias sein Ding und damit historisch gewachsen.

    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

  • Bei TVHighlights ist das so, bei GTO eher nicht - da ist schon alles gescraped und steht auch im Blob (der Datenblase) zur Verfügung. Das "Nachziehen" von Infos ist Tobias sein Ding und damit historisch gewachsen.

    Umso besser - dennoch muss man dann ab Krypton irgendwie anders rangehen - das müsste man vielleicht gleich im Hinterkopf haben:

    Hier mal ein Test mit der aktuellen Nightly:

    Einfach in den Defaultskin den Widgetcontent reingemacht.

    Externer Inhalt up.picr.de
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Context Menü und Info kommen mit den regulären Tasten "C" und "I" von selbst - Contextmenü deine Buttons aus dem Addonfenster eingebaut - Umschalten geht aber noch nicht.
    Wollt nur sehen ob die kommen..

    Externer Inhalt up.picr.de
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    Externer Inhalt up.picr.de
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Das würde dann natürlich vorraussetzen das es z.B. ein Property oder irgendwas gäbe damit man nun steuern kann wann die Eigenen Buttons im Contextmenü sichtbar sind.
    !IsEmpty(Window(Home).Property(GTO.Info.isRunning)) funktioniert ja nicht weil die info des addons nicht sichtbar ist.

    Keine Ahnung ob das ginge - Jetzt hast halt das Problem das weil es ein Content ist mit target video er wohl von selbst schon fürs context da ein wiedergeben Anzeigt..
    Das kannst aber, da es ein corebutton ist gar nicht ausblenden.
    Keine Ahnung ob die soweit noch nicht Gedacht haben oder wie das werden soll.

    In der Info schaut es gleich aus - die Defaultbuttons müsste man ja nun auch irgendwie wegbekommen - da kann ja nichts passieren.
    Alles irgendwie nicht so das ware.. Einerseits wäre es ja besser wenn Widgets "gleicher sind" also info halt immer mit "i" und meinetwegen clicken dann Kanalöffnen.
    Andererseits müsstest ja dann für jedes widget irgendwie infos und alles mögliche Umbiegen damit dann dort nichts käme - wenn das überhaupt geht.
    So einfach sagen keine C Taste geht ja gar nicht.

    Jetzt hast ja gerade deine Osterhasen soweit drauf ;) .. Fragt sich nur ob das als content provider dann überhaupt wieder sinn macht wenns etwas ist was nicht komplett
    aus der DB kommt.

    Danke für die Erklärung. Muss ich jetzt erstmal verdauen.

    Kurz drüberschauen musst auf alle Fälle - wir waren grad dabei eine "Monsterinfo für alle Widgets" auf die "i" Taste zu legen - die ja dann von selbst geht..
    Ärgerlich..

    Grüße

  • Das würde dann natürlich vorraussetzen das es z.B. ein Property oder irgendwas gäbe damit man nun steuern kann wann die Eigenen Buttons im Contextmenü sichtbar sind.
    !IsEmpty(Window(Home).Property(GTO.Info.isRunning)) funktioniert ja nicht weil die info des addons nicht sichtbar ist.

    Ich dachte der Entwickler kann die Einträge jetzt auch selbst machen oder versteh ich hier was falsch.

Jetzt mitmachen!

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