Wie kann man eine Menüliste machen

  • Hallo [ag] Ich habe heute versucht einen eigenen IPTV Client für Kodi zu programmieren. Mir kam dann folgende Idee: Es gebe eine Liste mit Kanälen. Links ein Bild z.B von ZDF rechts vom Bild steht ZDF und es exestiert ein Skript namens "zdf.py" und wenn man drauf klickt wird das Skript gestartet. "zdf.py" spielt beim ausführen Live ZDF ab. Nun leider konnte ich wegen schlechten Kodi Kentnissen sowas leider nicht umsetzen weswegen ich wissen möchte ob mir jemand dabei helfen kann. Zumindestens eine Beispiel Kodi-Addon-ZIP-Datei. Vielen dank im vorraus! :thumbup:

  • Du brauchst keine schlechten Kodi-Kenntnisse, sondern eher gute Python-Kenntnisse. Wie sieht es denn damit aus? Schon mal was in Python programmiert?

    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

  • Dann gebe ich Dir jetzt eine Liste, deren Listitems Wörterbucheinträge sind. Ich möchte, dass Du diese Liste iterativ durchläufst und per Print-Anweisung zum channel das icon und den title ausgibst. Letztendlich ist das ein Einzeiler. Hier die Liste:


    Code
    channellist = dict({"ARD": {"title": "Das Erste", "url": "http://akamai.net/ard", "icon": "ard.png"},
        "ZDF": {"title": "Zweites Deutsches Fernsehen", "url": None, "icon": "zdf.png"}})

    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

  • @Publish3r: Manche wollen auch in die Kodi-Programmierung einsteigen. Aller Anfang ist schwer und noch glaube ich an das Gute.

    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

  • Ich mache das auch um Kodi ein bisschen näher kennen zulernen. Der Vorteil ist somit: Der Lern effekt :) Apropo wenn ich schon schreibe... ich habe folgendes entdeckt: https://kodi.wiki/view/List_Container nun das scheint eigentlich ok zu sein aber die Dokumentation ist blöd. Kann mir jemand erklären wie genau man solch eine Liste erstellt falls überhaupt das richtige ist? https://ibb.co/939Wh4p hier ist ein Bild wie ich es machen möchte um es genauer zu beschreiben :P EDIT: Oops da habe ich was verpasst! Ich probiere alles mal aus danke!

  • Der List_Container beschreibt das Layout einer Liste, nicht die Liste selbst. Das ist was für Skinner. Bitte mal Post #5 lösen, dann sehen wir weiter.

    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

  • Super! Da es schon spät ist, machen wir morgen weiter. Bis dahin kann ich Dir etwas Lesestoff geben.

    Die Einträge in einer Liste nennt man Listitems. Aus diesen Listitems wird später die Liste aufgebaut. Für die Dartsellung der Listitems ist das Modul xbmcgui zuständig. Das musst Du in deinem Projekt importieren. Dem xbmcgui.ListItem kann man ein Icon, einen Text (Label1) sowie einen weiteren Text (Label2, etwas kleiner), wie in Deiner Abbildung zuweisen:

    https://codedocs.xyz/AlwinEsch/kodi…40e33c3597c7a04

    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

  • Ok ich habe versucht jetzt alleine weiter zu machen:

    scheint aber nicht zu funktionieren. Zuerst bekam ich einen Fehler weswegen ich in addon.xml xbmc.python.script zu xbmc.python.pluginsource änderte. Aber es blinkt in Kodi nur kurz auf und dann endet es. Könnte mir jemand helfen? [ac]

  • Erstmal bist Du prinzipiell auf dem richtigen Weg. Ein paar Hinweise:

    • Belasse es erstmal bei xbmc.python.script, ein Plugin funktioniert anders.
    • das .decode('utf-8') würde ich erstmal weglassen, solange keine Umlaute verwendet werden, gibts da auch keine Probleme. Eine Fehlerquelle weniger.
    • Du baust zwar deine Liste, allerdings musst Du sie auch anzeigen ;)
    • jedem xbmcgui.ListItem kann man auch extra Properties mitgeben z.B. den Kanalnamen oder einen Scriptpfad.


    Mit dem Wert entry kannst Du jetzt die Listitems auslesen und weiterverarbeiten, wie in jeder anderen Liste auch:

    Code
    text = menu[entry].getLabel()
    selected_channel = menu[entry].getProperty('channel')
    script_path = menu[entry].getProperty('script')
    # usw.

    Das ist jetzt alles aus dem Kopf, bei Fehlern bitte die Fehlermeldung mitposten.

    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

    2 Mal editiert, zuletzt von PvD (10. Juli 2020 um 15:00)

  • Icons können entweder lokal irgendwo liegen (günstigerweise im Addonverzeichnis selbst) oder auch aus dem Netz kommen. Dann haben sie als Pfad eine URL.
    Wenn Du sie lokal halten willst, legt man sowas unter <addon-verzeichnis>/resources/media/ ab --> https://kodi.wiki/view/Add-on_structure. Um den Pfad im Skript zu ermitteln und zu setzen, gibt es:

    Code
    import xbmcaddon
    import os
    
    
    iconfolder = os.path.join(xbmc.translatePath(xbmcaddon.Addon().getAddonInfo('path')), 'resources', 'media')

    Auf die Icons kannst Du dann per

    Code
    zdf_icon = os.path.join(iconfolder, 'zdf.icon')

    zugreifen. Das kann man auch gleich so in der channellist eintragen, also 'icon': os.path.join(iconfolder, 'zdf.icon')

    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 (10. Juli 2020 um 18:37)

Jetzt mitmachen!

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