[WIP!] Merkliste lib (-addon)

  • Thread für ein evtl entstehendes lib für eine Merklist-Funktion für kodi addons
    @membrane

    Habe mir noch nicht viele Gedanken gemacht, aber ich schieß trotzdem mal los:

    - ganz simple no-sql db
    inhalt pro eintrag:

    • name
    • link
    • desc
    • thumb
    • watched
    • ..

    - parameter für aufruf:

    • addon (id)
    • mode (add, remove, check, update, ... )
    • data (die eig daten)

    Dachte daran die DBs für die jeweiligen addons in dem lib ordner unterzubringen. Dann irgendwie ganz simple Dateibennenung, evtl einfach die ID des jewiligen Video Addons als json file (zb video.plugin.doku5.com.json)

    Bin auf deinen Input gespannt!

  • Zuerst würde ich zwei Grundfunktionen einbauen - Titel hinzufügen und Verzeichnis auflisten.


    Titel hinzufügen

    Das Script muss einen Kontextmenüeintrag anlegen (addon.xml):

    Code
    <extension point="kodi.context.item" library="context.py">
    		<item>
    			<label>30000</label>
    			<visible>true</visible>
    		</item>
    	</extension>


    Die Beschränkung auf Video Add-ons kommt später noch mittels <visible> Tag.

    In der "context.py" befindet sich Code, welches die Videodaten zu der entsprechenden DB hinzufügt. Eigenschaften wie Pfad oder Plot können einfach abgerufen werden:

    Code
    xbmc.getInfoLabel("ListItem.Label")

    Für weitere Infolabels siehe http://kodi.wiki/view/InfoLabels.

    Für die weitere Verwaltung der Daten hast du ja sicher schon einen Plan.


    Verzeichnis auflisten

    Das ist simpel. Das Video Add-on linkt einfach zum Merklisten Add-on ("plugin://kodi.context.merkliste/?addon=plugin.video.something"). Der Vorgang ist der selbe wie bei einem normalen Add-on.

  • Hi, schon mal danke für den Input!

    Habe eben mal angefangen, was zu coden und schon mal ein paar Informationen abzuspeichern.

    Hänge nun aber schon daran, dass ich nicht weiß, wie ich aus einem Script heraus Ordner o Items erstelle.
    Außerdem weiß ich auch nicht, wie ich die paramter Übergabe machen soll. Kenne das bisher nur aus video plugins


    Es gibt ja auch noch die Möglichkeit, via

    Code
    sys.listitem.getLabel()

    an die nötigen Infos zu kommen.
    Du nimmst aber immer 'xbmc.getInfoLabel'?


    Kennst du evtl ein Script, was ich mir ansehen könnte?
    Möchte mir ungern von dir alles haarklein erklären lassen (worauf du auch sicherlich keine Lust hast)

  • Hänge nun aber schon daran, dass ich nicht weiß, wie ich aus einem Script heraus Ordner o Items erstelle.

    Ich würde es als Video oder Programm Add-on ausgeben. Schon kann man einfach einen Ordner "erstellen".

    Außerdem weiß ich auch nicht, wie ich die paramter Übergabe machen soll. Kenne das bisher nur aus video plugins

    Welche Übergabe? Einen Eintrag hinzufügen oder bei dem Aufrufen eines Ordners von einem anderen Add-on? In beiden Fällen ist der virtuelle Pfad "plugin://plugin.video.something/?something" wichtig.


    Es gibt ja auch noch die Möglichkeit, via

    Code
    sys.listitem.getLabel()

    an die nötigen Infos zu kommen.
    Du nimmst aber immer 'xbmc.getInfoLabel'?

    Ist egal.

    Kennst du evtl ein Script, was ich mir ansehen könnte?
    Möchte mir ungern von dir alles haarklein erklären lassen (worauf du auch sicherlich keine Lust hast)

    Im Prinzip ist es nicht anders als ein normales Add-on. Jeder Eintrag zeigt auf einen virtuellen Pfad ("plugin://"). Es ist egal, ob dieser das Add-on noch einmal auführt oder ein anderes.

  • Ok, werde es als Video addon erstellen. Unterscheiden sich Video und Programm addon nur marginal?

    Als Video addon sollten die Fragen von oben auch geklärt sein.

    Wurde gerne tinydb als Basis für die db nehmen, habe aber nur eine ältere Version als module für kodi gefunden.
    Kann ich mir einfach meine eigene erstellen oder ist das schon mehr Aufwand?

    Gibt es noch eine andere Variante um an die Video url Z kommen?
    Listitem.path gibt mir nur den Pfad des addons

  • Ok, werde es als Video addon erstellen. Unterscheiden sich Video und Programm addon nur marginal?

    Unter "Programme" kann man das Add-on ein wenig verstecken, wenn man möchte.

    Wurde gerne tinydb als Basis für die db nehmen, habe aber nur eine ältere Version als module für kodi gefunden.
    Kann ich mir einfach meine eigene erstellen oder ist das schon mehr Aufwand?

    Ich kenne mich mit DBs nicht aus. Man könnte die Daten halt auch per Json speichern. Bei den wenigen Einträgen ist es kein Problem

    Gibt es noch eine andere Variante um an die Video url Z kommen?
    Listitem.path gibt mir nur den Pfad des addons

    ListItem.FileNameAndPath. Hab ich auch nur durch probieren herausgefunden.

  • Hi, 'ListItem.FileNameAndPath' funktioniert bestens, danke nochmal!

    Habe leider Probleme mit 'getInfoLabel'!
    Scheint mir etwas 'ungenau' zu sein, wenn man mit der Maus während des Klicks auf ein anderes Label wechselt
    Oder mach ich nen Fehler?

  • Mal so als kleiner Zwischenstand:
    Speichern von doku5 und Wiedergabe läuft
    Ist natürlich noch ziemlich spartanisch, aber sollte grundlegend auch schon mit anderen addons gehen (werde es gleich mal testen)

    Werde auch evtl gleich mal in doku5 den Pfad zu dem Merklist addon angeben und schauen, ob ich das auch noch heute schaffe

    edit: @membrane da ist noch was: Wie komme ich der context.py an die addon ID des aufrufenden addons?
    Ich hätte jetzt 'ListItem.Property(Addon.ID)' genommen,

    Code
    addon_id = xbmc.getInfoLabel("ListItem.Property(Addon.ID)")

    gibt mir aber einen leeren string zurück, hast du ne Idee?

    2 Mal editiert, zuletzt von SLiX (8. Mai 2016 um 15:39)

  • Das hab ich auch schon mit Frodo erfolgreich probiert, doch mein letzter Versuch mit Jarvis schlug fehl. Kann aber gut sein, dass ich etwas falsch gemacht habe. Es wird schon eine Lösung geben.

    Das hoffe ich :D

    Ich wollte gestern mal auf rein JSON umstellen, hatte aber noch arge Probleme damit.
    Das Öffnen einer Datei geht mir bei nur beim ersten mal, wenn Kodi gestartet wird.

    Danach hagelts errors, bis ich Kodi wieder neustarte, dann kann ich die Datei wieder einmal lesen. In meiner python ide gehts ohne Probleme.
    Kennst du das Verhalten?

    edit: Der Fehler beim Öffnen, hat sich erledigt, war, wie so oft, wieder nur ein winziger Fehler

    2 Mal editiert, zuletzt von SLiX (9. Mai 2016 um 16:57)

  • Habe jetzt auf json bzw simplejson umgestellt. Klappt ganz gut und filtert an sich schon doppelte Einträge raus

    Brauche auch noch deine Hilfe beim Aufruf des merklisten addons. Habe es mit schon mit

    Code
    xbmc.executebuiltin("RunAddon('plugin://plugin.video.bookmark/?mode=episodes&url=plugin.video.doku5.com')")

    bzw ohne 'RunAddon()' probiert. Auch ohne Paramater startet das addon nicht. Nur ein leeres Fenster innerhalb des aufrufenden addons

    sorry fürs zuspammen :D @membrane

  • Code
    xbmc.executebuiltin("RunAddon('plugin://plugin.video.bookmark/?mode=episodes&url=plugin.video.doku5.com')")

    bzw ohne 'RunAddon()' probiert. Auch ohne Paramater startet das addon nicht. Nur ein leeres Fenster innerhalb des aufrufenden addons

    sorry fürs zuspammen :D @membrane

    Aus dem Doku Add-on heraus? Einfach ein Verzeichnis mit der URI "plugin://plugin.video.bookmark/?mode=episodes&url=plugin.video.doku5.com" erstellen. Wie ein normaler Unterordner.

  • Das hatte ich auch instinktiv zuerst versucht, leider aber das gleiche Ergebnis wie bei meinen Versuchen mit executebuiltin

    Wegen der addon_id:
    Ich habe es jetzt so gemacht, dass ich die addonID erstmal aus ListItem.Path regexe, ist zwar nicht so schön, aber sollte erstmal gehen

  • Würde gerne noch eine Option einbauen, die das gespeicherte Video nach Wiedergabe löscht oder zumindest als gesehen markiert

    Man kann ja den bestimmte Ereignisse des players Monitoren (onplaybackended) , reicht das aus, oder muss ich mir noch das gesehen flag aus der DB via api holen?
    Das soll natürlich nur innerhalb des Merklist addons passieren

    Kannst du dazu was sagen @membrane?

Jetzt mitmachen!

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