An die Skinner - wie Widget ins Homemenü integrieren

  • da ich über <content>...</content> noch nix rein bekomme, kann ich es schwer testen.

    Das funktioniert jetzt Dank der variablen Argument-Methode. Der Container wird jetzt ordentlich refresht. Bei 'fokussiertes Element' und 'target' verstehe ich nur Bahnhof ?(


    wie wird denn der inhalt geladen?
    was ist denn mit dem popup welches vorher im tvhighlights vorhanden war?

    Der Inhalt wird zyklisch geladen (Anzeigeintervall in den Einstellungen, action=refresh), Popup kommt noch - dazu brauche ich das <onclick> ;)

    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 (29. April 2016 um 13:29)

  • Code
    <content>plugin://plugin.service.gto?action=getcontent&ts=$INFO[Window(Home).Property(GTO.timestamp)]</content>

    Bei Laden des Skins/Start von Kodi ist zwar noch kein gescrapter Content da (deshalb wird auch nichts angezeigt), jedoch wird nach dem Scrapen und dem zyklischen Befüllen der ListItems per Script (action=refresh) ein Container.Refresh ausgeführt. Da sich in dieser Zeit ts=$INFO[Window(Home).Property(GTO.timestamp)] geändert hat, wird der Refresh auch tatsächlich ausgeführt, d.h. ab jetzt/diesem Zeitpunkt sieht man auch was (Zeitpunkt = Startverzögerung Scraper im Setup + ca. 2-3 sec).

    Das mit dem target="video" probiere ich mal aus, wo das <onclick> nun reinkommt, weiss ich immer ncoh nicht....

    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

  • Du hast nach dem Pfad gefragt ;) .

    Das mit dem target="video" probiere ich mal aus

    und tatsächlich gehts jetzt auch ohne onClick, das Script wird mit action=infopopup aufgerufen (das spätere Infofenster).

    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

  • Grad mal versucht.. Klappt soweit auch schon.

    Nur übers script bekomm ich den Klick nicht hin fürs window:

    Ich bekomme das doch eigentlich korrekt ins Menü oder?

    Code
    <property name="widget">TV-Serienplaner</property>
    			<property name="widgetName">plugin.service.gto</property>
    			<property name="widgetType">TV-Serienplaner</property>
    			<property name="widgetTarget">video</property>
    			<property name="widgetPath">plugin://plugin.service.gto?action=getcontent&ts=$INFO[Window(Home).Property(GTO.timestamp)]</property>


    Labels funktionieren auch alle nur das click noch nicht.

    Offenbar denk nun das script es sein ein Film und will ihn abspielen - ohne Target= video ging es auch nicht.

    Code
    15:17:40 T:4804   DEBUG: Keyboard: scancode: 0x1c, sym: 0x000d, unicode: 0x000d, modifier: 0x0
    15:17:40 T:4804   DEBUG: CInputManager::OnKey: return (0xf00d) pressed, action is Select
    15:17:40 T:4804   ERROR: Keymapping error: no such action 'playmedia("")' defined
    15:17:40 T:4804   DEBUG: CApplication::ExecuteXBMCAction: Tried translating, but failed to understand PlayMedia("")

    Aber sonst ist ja aus deinen Hasen was tolles geworden;)..
    Die Thumbs schein auch um längen besser als bei TV Digital zu sein.


    Grüße

  • @Marc0810: Danke ;)

    <onclick>habe ich hinbekommen. Sieht jetzt so aus (mit <content target=video>

    Code
    <onclick>RunScript(plugin.service.gto,action=infopopup&blob=$INFO[ListItem.Property(BlobID)])</onclick>
    <content target="video">plugin://plugin.service.gto?action=getcontent&ts=$INFO[Window(Home).Property(GTO.timestamp)]</content>

    Neues Update auf Github: https://github.com/b-jesch/plugin.service.gto

    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

  • <onclick>habe ich hinbekommen. Sieht jetzt so aus (mit <content target=video>

    Hmm.. Muss ich nachher schauen wie das mit dem skin shortcuts Script dann ist:
    Dort regelt ja eigentlich der content das click..

    Ob ich das da dann überschreiben kann - da alle widget aus einem "Containertemplate" erstellt werden brauch ich da ja eine Condition damit nicht in jedem Widget die Info kommt.
    Aber bekommst Bescheid :) .

    Grüße

  • ich stell mich heute wieder doof an.
    ich habe immer diesen fehler:

    Code
    ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://plugin.service.gto/?action=getcontent&ts=

    übrigens gibts auch ein target="pvr" soweit ich das gesehen habe.
    dieses onclick für ein containertemplate habe ich mit $PARAM gelöst. da kann ich dann für jedes include festlegen, nur dass ich es auf oninfo gelegt habe, da man sonst die target-funktion überschreibt, da man das onclick nicht leer lassen darf. oder man macht noch ein condition ins onlick.
    bg

    edit: jetzt raff ichs erst. tvhighlights braucht man ja gar nicht mehr. lach

  • ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://http://plugin.service.gto/?action=getcontent&ts=

    Den Fehler habe ich am Anfang auch 1x, dann nicht mehr. Funktioniert trotzdem. Gehe bitte mal in die Settings des Plugins, ändere irgendeinen Wert und speichere ab (ok). Dann mal das Debuglogging einschalten. (STRG+UMSCHALT+D).

    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

  • hier noch das [definition='1','1']debuglog[/definition] nach einem neustart:

    EDIT: sehe gerade, dass ich scheinbar eine ] vergessen habe
    EDIT2: war nur im testlabel der fehler drinnen.

  • Also per script skinshortcuts gehts wenn man das onclick per condition überschreibt.

    Wie man das direkt mit dem script hinbekommt hab ich noch nicht rausbekommen.

    Im Script window hast übrigen noch diverse Farbdefinitionen drin wie
    <textcolor>white</textcolor>
    und ein
    <include>dialogeffect</include>
    was ohne ein eigenes Fenster dafür im Skin außer confluence Probleme machen könnte.
    Glaub das ist verboten :) .


    Das mit dem Onlaod für das Erste fetchend hab ich noch nicht ganz geschnallt, da muss ich noch schauen ob das auch ohne
    <onload>XBMC.RunScript(plugin.service.gto,action=refresh)</onload>
    geht..
    Fehler kommt keiner bei mir. Ersetzt das dann eigentlich das alte?


    Grüße

  • Im Script window hast übrigen noch diverse Farbdefinitionen drin wie
    <textcolor>white</textcolor>
    und ein
    <include>dialogeffect</include>
    was ohne ein eigenes Fenster dafür im Skin außer confluence Probleme machen könnte.
    Glaub das ist verboten .

    Naja, man lernt ja nie aus. Reicht das, wenn ich das einfach entferne oder muss das durch was anderes substituiert werden?


    Das mit dem Onlaod für das Erste fetchend hab ich noch nicht ganz geschnallt, da muss ich noch schauen ob das auch ohne
    <onload>XBMC.RunScript(plugin.service.gto,action=refresh)</onload>

    Da passiert u.a. ein Container.Refresh. Sollte aber uach ohne onload gehen.

    Ersetzt das dann eigentlich das alte?

    Nein. Das basiert zwar codetechnisch auf den TVHighlights, hat aber einen anderen Scraper (ohne PayTV) und hat auch die Auswahl nach Genre nicht.

    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

  • @blauesgruen: Sieht doch erstmal gut aus:

    Code
    17:23:47 T:2220   DEBUG: [plugin.service.gto 0.1.0]: provided parameter hash: action=getcontent&ts=
    17:23:47 T:2220   DEBUG: [plugin.service.gto 0.1.0]: Filling widget with handle #11
    17:23:47 T:2220    INFO: CPythonInvoker(17, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): script successfully run
    17:23:47 T:7736   ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://plugin.service.gto/?action=getcontent&ts=

    Der Aufruf kommt vom Widget selbst(action=getcontent&ts= im Parameter Hash). Doch der läuft in einer Schleife (?) - sieht man an

    Code
    17:23:47 T:2220   DEBUG: [plugin.service.gto 0.1.0]: Filling widget with handle #11

    und an der Systemmeldung davor an:


    Code
    17:23:46 T:7736   DEBUG: XFILE::CPluginDirectory::StartScript - calling plugin German Telecast Offers('plugin://plugin.service.gto/','11','?action=getcontent&ts=')

    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

  • hier sieht es auch gut aus, mache einen manuellen refresh:

    Code
    17:40:11 T:7696    INFO: initializing python engine.
    17:40:11 T:7696   DEBUG: CPythonInvoker(63, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): start processing
    17:40:11 T:7696   DEBUG: -->Python Interpreter Initialized<--
    17:40:11 T:7696   DEBUG: CPythonInvoker(63, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): the source file to load is "D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py"
    17:40:11 T:7696   DEBUG: CPythonInvoker(63, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): setting the Python path to D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto;D:\Program Files (x86)\Kodi16\system\python\DLLs;D:\Program Files (x86)\Kodi16\system\python\Lib;D:\Program Files (x86)\Kodi16\python27.zip;D:\Program Files (x86)\Kodi16\system\python\lib\plat-win;D:\Program Files (x86)\Kodi16\system\python\lib\lib-tk;D:\Program Files (x86)\Kodi16;D:\Program Files (x86)\Kodi16\system\python;D:\Program Files (x86)\Kodi16\system\python\lib\site-packages
    17:40:11 T:7696   DEBUG: CPythonInvoker(63, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): entering source directory D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto
    17:40:11 T:7696   DEBUG: CPythonInvoker(63, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): instantiating addon using automatically obtained id of "plugin.service.gto" dependent on version 2.1.0 of the xbmc.python api
    17:40:11 T:7696   DEBUG: [plugin.service.gto 0.1.0]: provided parameter hash: action=refresh
    17:40:11 T:7696    INFO: CPythonInvoker(63, D:\Program Files (x86)\Kodi16\portable_data\addons\plugin.service.gto\default.py): script successfully run
    17:40:11 T:7696    INFO: Python script stopped


    aber inhalt habe ich immernoch nicht. ;(

    gibt es sowas wie eine abfrage ob das script bereit ist?
    dann könnte ich daran mein widget knüpfen.
    bg

  • aber inhalt habe ich immernoch nicht.

    Irgendwie hat er noch nicht gescraped. Setze mal in den Settings "Zeige vergangene Sendungen" (o.ä) auf aus und überprüfe mal das Scraper-Delay (zeitverzögertes Starten), setze das mal auf einen Wert > 0.

    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, man lernt ja nie aus. Reicht das, wenn ich das einfach entferne oder muss das durch was anderes substituiert werden?

    Also Farbwerte solltest als HEX Code + die Tranzparenz angeben wenns weiß willst.
    in den meisten Script Fenstern wird das glaube ich so gemacht.
    Also alles was textcolor, selectedcolor, focusedcolor usw. ist.

    In meinem Fall gibt es weiß nicht in der color.xml des Skins. Also nimmt er gar keine (seh z.B. die ganze Rating Gruppe nicht).

    Das <include>dialogeffect</include> wird eine Animation sein mit windowOpen oder in der Art - die solltest dann direkt als Code Einbauen.

    Da passiert u.a. ein Container.Refresh. Sollte aber uach ohne onload gehen.

    Das Problem hab ich auch bei TV Hightlights - theoretisch muss ich das anstoßen beim Kodi Neustart.
    Mal schauen wie es bei dir ist. Ist halt blöd, ins onload ist etwas wiedersinnig - würde dann ja auch gelten wenn man das Widget gar nicht ausgewählt hat
    und im prinzip hab ich keine Möglichkeit Abzufragen welches Widget überhaupt aktiviert wurde.

    Grüße

  • Das Problem hab ich auch bei TV Hightlights - theoretisch muss ich das anstoßen beim Kodi Neustart.

    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.

    Also nimmt er gar keine (seh z.B. die ganze Rating Gruppe nicht).

    Die ist raus.

    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

  • Irgendwie hat er noch nicht gescraped. Setze mal in den Settings "Zeige vergangene Sendungen" (o.ä) auf aus und überprüfe mal das Scraper-Delay (zeitverzögertes Starten), setze das mal auf einen Wert > 0.

    Es hilft leider alles nix.
    Über action=refresh starte ich da den scrapper oder wird dann nur der container aktualisiert, egal ob scrapperdaten vorliegen oder nicht?
    bg

    EDIT:
    das funktioniert:

    Code
    RunScript(plugin.service.gto,action=scrape)
  • '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.

    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!