Kodi Addon Python - Playlist bzw. Videos aus Liste geschaut - wie abfragen/steuern?

  • Hallöchen,

    nachdem ich mich die letzten Tage in die Kodi-Entwicklung eingearbeitet habe (mehr Try & Error sowie etliches zusammen suchen im Netz) bin ich an einen Punkt angelangt, wo ich nicht weiter komme.

    Erstmal was ich machen möchte:

    Es soll eine Reihe von Videos aus einer Liste (in einer .txt-File gespeichert) abgespielt werden. Das klappt in Form einer Playlist soweit auch ganz gut.

    Mein Problem ist jetzt aber, das ich nicht steuern/kontrollieren kann, ob die Playlist nun beendet wurde.

    Ich kann zwar über

    Code
    xbmc.Player.getPlayingFile()

    die Datei über den LOG sehen, aber immer nur die erste Datei.

    Gibt es hierfür eine Funktion, die ich einfach nicht entdeckt habe oder einen kniff?

    Vielen Dank schon mal im vorraus ;o

  • Ich glaube wir brauchen ein wenig mehr infos

    Was hast du genau wie programmiert?

    Abhängig von dem, was du geschrieben hast, gibt es verschiedene Methoden das aktuelle Video abzufragen. Dafür müssen wir nur erstmal wissen, was du gemacht hast, damit wir dir das richtige empfehlen können.

    Es gibt z. B. die JSON-API, die dir viele nützliche Infos geben kann, dann gibt es noch Python-Built-in-Functions, die auch hilfreich sein können. Weiter gibt es noch sogenannte "InfoLabels", die man in Skins einbauen kann, die dir auch potentiell das geben, was du suchst....

    Du siehst...viele viele Möglichkeiten

    Kodi hat halt mehrere Ebenen auf denen du dich in Bezug auf Entwicklung austoben kannst

  • Ich würde z.B. auch JSON benutzen.

    Code
    {"jsonrpc": "2.0", "method": "Player.GetActivePlayers", "id": 1}

    mit der Abfrage bekommst Du raus ob der Player abspielt.

    Code
    {"jsonrpc": "2.0", "method": "Player.GetItem", "params": { "properties": ["title", "album", "artist", "season", "episode", "duration", "showtitle", "tvshowid", "thumbnail", "file", "fanart", "streamdetails"], "playerid": 1 }, "id": "VideoGetItem"}

    Hier was Du gerade abspielst.

    Und das könntest Du dann mit deiner Textdatei (oder m3u oder xps) vergleichen und bei nicht Übereinstimmung mit der nächsten Datei anfangen.

    Dazu noch ein 5 Sekunden Delay..

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Hier mal ein Auszug aus dem Script:

    Meine Basis ist erstmal ein fixer Eintrag/Button via. ListItem() und addDirectoryItem(). Durch drücken auf diesen wird dann eine fixe Liste mit Namen und Dateien einer Playlist hinzugefügt.

    Das klappt soweit auch erstmal.

    Jetzt wollte ich aber steuern können:

    Vid4_muhaha.mp4 zu Ende geguckt? Wenn ja: Mach Meldung.

    Es spielt hier auch erstmal keine Rolle "was" für eine Meldung - hauptsache ich kann das per Python abfangen und reagieren.

    Über den Befehl isPlaying() kann ich (bisher? falsch genutzt?) nur sehen, das Kodi ein Video abspielt.

    Wenn ich player.getPlayingFile() nutze, zeigt mir das Log nur das erste Video (Vid1_test.mp4) an. Das Log zeigt aber für alle Videos einen entsprechenden Info-Eintrag wie "VideoPlayer::OpenFile:" und "Deleting settings information for files" an.


    @SkyBird1980

    Und wie steuert man diese an? In der Doku von Kodi find ich nur für Python und C++ Funktionen, und über eine simple "json"-Suche ergab keine Treffer.

    Und wenn ich es über JSON ansteuern kann, ist dann die Python-Methode (z.B. getPlayingFile()) fehlerhaft? Oder nutze ich diese nur falsch?

  • hier über curl auf localhost wenn möglich, aber klar würde es auch direkt per phyton funktionieren.

    normalerweise importiert man vorher die xbmc klasse, aber ich kenne mich nicht gut genug mit phyton aus.

    allerdings könnte es sein das es o überhaupt nicht geht weil die Videodateien so wie du sie aufrufst gar nicht in der Bibliothek sind.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Nabend,

    hab jetzt nochmal ein bisschen rumgeguckt und probiert.

    Ergebnis ist:

    Kodi übermittelt, zumindest bei mir, immer nur den ersten Datensatz - egal ob über Python oder JSON-RPC. Gut, könnte man so erklären, daß das Addon im Playlist-Mode nicht mehr greift - oder zumindest nur am Anfang.

    Dann war mir so, das man ja "Service"-Addons deklarieren kann. Also kurz ein Service-Addon gemäß Beispiel-Anleitung erstellt, installiert und bisschen probiert, was der Log tut.

    Durch die 10-Sekunden-Warteschleife bekomm ich im Log die richtigen Dateien zu sehen. Das ganze klappt auch in meinen eigentlichen Addon durch eine 2. .py-Datei und Eintrag in der Addon.xml.

    Die Frage ist jetzt allerdings:

    Kann man das so machen? Macht das Sinn, dies so zu steuern?


    Ach ja, vergessen zu fragen:

    allerdings könnte es sein das es o überhaupt nicht geht weil die Videodateien so wie du sie aufrufst gar nicht in der Bibliothek sind.

    Was genau heist hier Bibliothek? Im Sinne von "Videos > Dateien > Videos hinzufügen .. > Videoquelle hinzufügen"? Gäbe es hier von Kodi eine Möglichkeit auf diese Videoquellen zuzugreifen - also Addon-technisch?

  • Ich hab mal so ein wenig nachgedacht. Das hört sich für mich alles so an als willst Du Kodi nur für eine Art digitalen Videoramen benutzen. Ich meine das geht zwar, aber vieleicht wäre ein anderer Ansatz besser für dich. Dafür nimmst Du dann ein Hauptgerät welches die Videos für alle anderen Geräte streamt, z.B. für Multicast, so würde auf allen Bildschirmen das gleiche laufen.

    Dann wäre das ganze hier auch kein Problem denn du würdest ja immer nur "die eine Datei" abspielen die gestreamt wird.

    Falls ich hier falsch liege sag es einfach.

    Zurück zu deiner Frage:

    Was genau heist hier Bibliothek? Im Sinne von "Videos > Dateien > Videos hinzufügen .. > Videoquelle hinzufügen"? Gäbe es hier von Kodi eine Möglichkeit auf diese Videoquellen zuzugreifen - also Addon-technisch?

    Kodi Datenbank bedeutet dort sind Filmeinformationen, Abspielstände usw. den Filmen zugeteilt (gescraped) und können angezeigt werden.

    Wenn du "smarte Playlisten" benutzen willst und z.B. nur Filme des Genres Action abgespielt haben willst müssen diese vorher halt in der Datenbank sein.

    Das reine Abspielen von Dateien ist ja nur eine Grundfunktion in Kodi.

    Da man nicht genau weiß wofür du das ganze brauchst ist halt die Hilfe in deinem Fall sehr schwierig. Wie jeder Support ohne alle Informationen. Deshalb ist die Frage zu allgemein und kann von einen unserer Addon Devs sicherlich besser beantwortet werden als von mir.

    Allerdings kann ich

    Kodi übermittelt, zumindest bei mir, immer nur den ersten Datensatz - egal ob über Python oder JSON-RPC.

    Das nicht nachvollziehen. Ich habe gerade eine Warteschlange gefüllt mit Dateien und Skippe vor und zurück und der aktuelle Titel kann abgerufen werden. Auch bei Dateien die nicht in der Datenbank sind.

    Das ist jetzt nur meine Abfrage die ich in Node-Red gebaut habe mit der Json API, aber ich wüsste jetzt nicht warum das bei dir anders laufen sollte.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Nabend,

    nach ein bisschen probieren, und den zufälligen finden von diesen Addon (hier der Github-Page), und Kodi es in einer Anleitung (siehe Post #6 oben) selber zur Verfügung stellt, werd ich diese x-Sekunden-Warteschleife verwenden.

    Bei Tests hat auch alles geklappt - von daher wäre das Thema erledigt.


    Ich hab mal so ein wenig nachgedacht. Das hört sich für mich alles so an als willst Du Kodi nur für eine Art digitalen Videoramen benutzen. Ich meine das geht zwar, aber vieleicht wäre ein anderer Ansatz besser für dich. Dafür nimmst Du dann ein Hauptgerät welches die Videos für alle anderen Geräte streamt, z.B. für Multicast, so würde auf allen Bildschirmen das gleiche laufen.

    Dann wäre das ganze hier auch kein Problem denn du würdest ja immer nur "die eine Datei" abspielen die gestreamt wird.


    Falls ich hier falsch liege sag es einfach.

    Nein nein. Ich verwende Kodi (bzw. die LibreELEC Variante) hauptsächlich als Videospieler. Über ein NAS etc. hatte ich mich zwar das eine oder andere mal informiert, finde das für meinen Verwendungszweck aktuell als to much ^^""

    Kodi Datenbank bedeutet dort sind Filmeinformationen, Abspielstände usw. den Filmen zugeteilt (gescraped) und können angezeigt werden.

    Wenn du "smarte Playlisten" benutzen willst und z.B. nur Filme des Genres Action abgespielt haben willst müssen diese vorher halt in der Datenbank sein.

    Das reine Abspielen von Dateien ist ja nur eine Grundfunktion in Kodi.


    Da man nicht genau weiß wofür du das ganze brauchst ist halt die Hilfe in deinem Fall sehr schwierig. Wie jeder Support ohne alle Informationen. Deshalb ist die Frage zu allgemein und kann von einen unserer Addon Devs sicherlich besser beantwortet werden als von mir.

    Okay. Da ich kein NAS oder vergleichbares habe betrifft mich das so erstmal nicht.


    Allerdings kann ich

    Das nicht nachvollziehen. Ich habe gerade eine Warteschlange gefüllt mit Dateien und Skippe vor und zurück und der aktuelle Titel kann abgerufen werden. Auch bei Dateien die nicht in der Datenbank sind.

    Das ist jetzt nur meine Abfrage die ich in Node-Red gebaut habe mit der Json API, aber ich wüsste jetzt nicht warum das bei dir anders laufen sollte.

    Hier wäre halt die Frage, wie da der Code aussieht. Bspw. wird im obigen Addon (Up Next) sekündlich abgefragt. Vielleicht wird es hier ja auch getan - oder durch den Tastendruck (z.B. Nächstes Lied / Lied zurück) wird halt die Info geladen und angezeigt ô.O Ich

    Trotzdem Danke für die Hilfe meine Fragen zu beantworten ;o

Jetzt mitmachen!

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