Intelligente Wiedergabeliste bleibt leer

  • Hallo,

    der Titel sagt eigentlich schon alles.

    Ich nutze Version 20.0-Alpha1 (19.90.101) mit Skin "Amber" - 1x auf Windows 10 LTSC und 1x auf NVidia Shield TV Pro.

    Nun habe ich ca. 5000 Filme in meiner Bibliothek, die erfolgreich in eine SQL-Datenbank geschrieben wurden und mir in Kodi auch unter "Filme" aufgelistet werden. Erstelle ich unter "Filme" -> "Wiedergabelisten" -> "Neue intelligente Wiedergabeliste ..." eben eine solche mit der Testregel "Videoauflösung größer als 100" bleibt die Liste leer. Auch ein "Bibliothek aktualisieren" ändert daran nichts.

  • Grad mal getestet.

    Also bei mir funktioniert das. Z.B. alle HD-Filme:

    XML
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <smartplaylist type="movies">
        <name>HD-Filme</name>
        <match>all</match>
        <rule field="videoresolution" operator="greaterthan">
            <value>719</value>
        </rule>
    </smartplaylist>
  • Versuch erst mal eine einfache Regel, die nicht auf Auflösung basiert.
    Den Wert erhält Kodi ja erst nach Untersuchung der Metadaten der Filme.

    Um ein Datenbankproblem auszuschließen vielleicht eine Regel mit "Pfad".

    Joker liegt bei mir bspw. auf "g:\media\movies\Joker (2019) [tt7286456]\Joker (2019) [Remux-2160p.HDR.10bit.HEVC.TrueHD Atmos 7.1].[DE+EN]-pmHD.mkv".

    Ich habs mal mit "Pfad beinhaltet Joker" und "Pfad beinhaltet movies" probiert - kein Ergebnis.

    Also bei mir funktioniert das. Z.B. alle HD-Filme:

    Die XML sieht bei mir identisch aus - auch mit Wert 719 funktioniert es nicht. Welche Version benutzt du und funktioniert es bei dir noch nach einem Update (falls du eine ältere benutzt)? Falls ja: kannst du bitte mal den kompletten Pfad von einem deiner Filme angeben?

    Wenn deine Version neuer ist als der 28.05 dann ist der commit drin https://github.com/xbmc/xbmc/pull/19796 und das ist das Problem

    Kannst du bitte mal kurz übersetzen, was das Problem in dem Github-Faden ist? Werden Filterausdrücke nun nach anderen Regeln interpretiert?

    schau mal was bei git Version steht.

    In Sysinfo neben Version steht: 20.0-ALPHA-1 (19.90.101) GIT: 20210422-3A7C0F5089 - ist also wohl vom 22.04.2021.

  • Es gab in der alpha vom 28.05 ein Fehler wo die smart Play list nicht funktioniert, der Fehler wurde heute morgen behoben.

    Da ich nicht wusste welche Version du hast, hätte der Fehler von daher kommen können.
    Kannst ja mal eine V19 probieren, bzw. warum benutzt du eine alpha ?

  • Es gab in der alpha vom 28.05 ein Fehler wo die smart Play list nicht funktioniert, der Fehler wurde heute morgen behoben.

    Da ich nicht wusste welche Version du hast, hätte der Fehler von daher kommen können.
    Kannst ja mal eine V19 probieren, bzw. warum benutzt du eine alpha ?

    Es gab Probleme beim Erzeugen einer zentralen Datenbank, daher habe ich damals die neueste Version genommen. Jetzt mag ich ungern downgraden, da dann auch die ganze DB neu erstellt werden muss.

  • Es gab Probleme beim Erzeugen einer zentralen Datenbank,

    Dann hätten wir lieber diese lösen sollen.


    . Jetzt mag ich ungern downgraden, da dann auch die ganze DB neu erstellt werden muss.

    Das kann ich verstehen. Ich hoffe du verstehst auch, dass es exterm schwierig ist, wenn man support für eine Alpha-Version geben muss, die eigentlich den "Alpha"-Status noch gar nicht erreicht hat. Der Name "Alpha" kommt nur daher, da wir dem Kind einen Namen geben müssen. Wer aktuell Kodi 20 benutzt ist zu 99% auf sich allein gestellt. Wer weiß was da alles kaputt ist. Bau dir einfach die neueste Alpha und schau ob es da gefixt ist. Wenn nicht, dann mach ein Ticket auf Github auf.

  • Dann hätten wir lieber diese lösen sollen.

    Das Problem bzgl. der Datenbank war/ist, dass man den Kodi-Nutzern GRAND ALL-Rechte einräumen muss, damit die DB korrekt angelegt wird.

    Ich ging davon aus, dass es ausreicht, ihnen alle Rechte bzgl. Daten und Strukturen zu gewähren oder komplette Rechte auf eben die von Kodi genutzte Datenbank. Das führte dann allerdings immer zu dem Fehler, dass er die Filme zwar irgendwie in die Datenbank eingetragen hat, aber nicht auslesen konnte, weil irgendwelche Views nicht angelegt wurden. Somit blieb die Filmübersicht in Kodi leer.

  • ja, wo ist das Problem GRAND-ALL zu machen? Die DB liegt ja in deinem LAN und es sind ja auch keine sensiblen Daten drin, die nach "außen" gehen. Wenn du an den Rechten spielst, bist du ebenso auf dich gestellt. Das ist bei Kodi 20 aber nicht viel anders, oder etwa doch?

  • ja, wo ist das Problem GRAND-ALL zu machen? Die DB liegt ja in deinem LAN und es sind ja auch keine sensiblen Daten drin, die nach "außen" gehen. Wenn du an den Rechten spielst, bist du ebenso auf dich gestellt. Das ist bei Kodi 20 aber nicht viel anders, oder etwa doch?

    Ich nutze einen DB-Docker als Datenbank-Server, in der Kodi seine Daten in die Kodi-Datenbanken ablegt. Parallel möchte ich denselben Datenbank-Server für eigene Datenbanken für andere Zwecke nutzen, auf die Kodi nicht zugreifen sollte. Deswegen habe ich vermieden, GRAND ALL einzustellen. Erst als es auch bei der neuesten Nightly-Version nicht ging, habe ich dann gemerkt, dass es genau daran lag und es nun so belassen.

    Also du kannst nicht davon ausgehen, dass jemand einen ganzen Datenbank-Server nur für Kodi erzeugt und Kodi dort schalten und walten können sollte, wie es will. Man öffnet ja auch nicht sämtliche Ports, um Webzugriffe zu erlauben.

  • DB-Docker als Datenbank-Server

    Dann fahr dir halt einfach einen anderen/zusätzlichen Docker hoch, expose den Docker-Port auf einen anderen Port und schon hast du 2 völlig voneinander getrennte Datenbanken.

    Schließlich kannst du mehrere Docker-Instanzen auf einem Host laufen lassen. Welche Instanz jeweils angesprochen wird entscheidest du über den Port.

    Das führte dann allerdings immer zu dem Fehler, dass er die Filme zwar irgendwie in die Datenbank eingetragen hat, aber nicht auslesen konnte, weil irgendwelche Views nicht angelegt wurden

    Auch das lässt sich irgendwie debuggen. Ich hätte es mal mit:

    GRANT ALL PRIVILEGES ON database_name.* TO 'username'

    versucht. Dabei würde ich "database_name" mit dem Namen der entsprechenden Datenbank ersetzen und dann schauen, dass dahinter das ".*" steht, welches bewirken sollte, dass man auf alle Tables dieser Datenbank alle Zugriffe haben sollte. Ist das gegeben, dann sollte es auch keinerlei Probleme mit irgendwelchen Views geben. "GRANT ALL" ist in dem Fall gar nicht das Problem. Du musst es halt nur auf einen bestimmten Datenbanknamen begrenzen. Man muss halt wissen, dass wenn man den Namen der Datenbank festlegt, man es wieder machen muss, wenn man Kodi updated. Denn dann wird aus MyVideos119.db ggf. MyVideos120.db und dann hätte der User "kodi" keinen Zugriff mehr auf diese DB.

    Denn ich gebe dir Recht. Läuft da noch eine DB, dann sollte Kodi da nicht rum fingern (was es auch ohnehin nicht tut. Das liegt schon am Programmcode was da wann und warum abgefragt wird). Um dort ganz sicher zu sein, würde ich halt einfach einen anderen Docker-Container hoch fahren und den ein wenig Tweaken, damit ein anderer Port an den Host exposed wird. Aber das ist deine Sache. Ich will dir ja nicht sagen, wie du dein Netzwerk zu administrieren hast ;)

    Zum Nachlesen: https://chartio.com/resources/tuto…abase-in-mysql/


    Und wie gesagt....bei Kodi 20 ist das nicht anders ;) . Wir sind dir aber grundlegend sehr dankbar, wenn du Kodi 20 benutzt. Nur rechne halt damit, dass es auch zu sehr eklatanten Fehlern kommen kann. Es kann sogar sein, dass es dir deine komplette Datenbank zerschießt oder Kodi einfach nicht mehr nutzbar ist. Frei nach dem Motto "Nutzung auf eigene Gefahr" ;)

  • Dann fahr dir halt einfach einen anderen/zusätzlichen Docker hoch, expose den Docker-Port auf einen anderen Port und schon hast du 2 völlig voneinander getrennte Datenbanken.

    Schließlich kannst du mehrere Docker-Instanzen auf einem Host laufen lassen. Welche Instanz jeweils angesprochen wird entscheidest du über den Port.

    Klar, der Vorschlag mit verschiedenen Dockern würde funktionieren,aber genau das wollte ich ja vermeiden und eben 1 SQL-Docker, 1 Port, 1 Prozess haben - kurz: 1 Ressource, die genau das machen soll, wofür sie da ist: Datenbankhaltung. Keine 2, keine 5 und auch keine 10. Ich richte ja auch keine 5 verschiedenen Storage-Server ein, weil bspw. 5 Nutzer da hantieren, denn genau dafür gibt es ja das Rechtemanagement.

    Ich werde es aber gern nochmal mit der last stable Version (also v19.irgendwas) und deiner SQL-Anweisung versuchen. Dazu muss ich wohl vorher mal die DB ohne GRANT ALL von Kodi anlegen lassen, danach GRANT ALL auf die DB geben und dann in Kodi sämtliche Quellen entfernen und neu hinzufügen, oder? Oder wie krieg ich Kodi dazu, eine bereits bestehende DB auf fehlende Views abzutasten bzw. dass er die Struktur halt neu aufbaut? Oder kann man das GRANT ALL ... schon vorab auf eine noch nicht existierende DB einschränken? Klingt irgendwie schräg.

    V20 läuft übrigens super - hab nur ein Problem beim direkten Verlassen (also neben dem Playlist-Problem). Kodi schließt oft nur durch vorheriges Abmelden und wenn man dann auf Verlassen geht. Abundzu hängt es auch da. Aber mittels F4 (in Windows) oder Special-Menü-Taste (Shield) lässt es sich in dem Fall einfach zwangsschließen.

    Die Kodi-DB selbst ist bei mir im Grunde nicht kritisch, also kanns ruhig auch zerlegen, da ich sämtliche Daten (zusätzlich) in den zugehörigen .nfo-Dateien bevorrate (die ich vorab per EMM erzeuge). Kodi selbst scraped bei mir nichts und kann nur Lesen. Kurz: Volle Kontrolle.

  • Ich werde es aber gern nochmal mit der last stable Version (also v19.irgendwas) und deiner SQL-Anweisung versuchen. Dazu muss ich wohl vorher mal die DB ohne GRANT ALL von Kodi anlegen lassen, danach GRANT ALL auf die DB geben und dann in Kodi sämtliche Quellen entfernen und neu hinzufügen, oder? Oder wie krieg ich Kodi dazu, eine bereits bestehende DB auf fehlende Views abzutasten bzw. dass er die Struktur halt neu aufbaut? Oder kann man das GRANT ALL ... schon vorab auf eine noch nicht existierende DB einschränken? Klingt irgendwie schräg.

    Ja, klingt alles irgendwie schräg :D

    Jede MySQL-DB hat einen root user. Dieser User sollte per default alle Rechte auf allen Datenbanken haben (Vermutung meinerseits). Das würde ich erstmal testen. Einfach in die Datenbank mit mysql -u root -p einloggen Das Passwort solltest du ggf. bei der Erstellung des Containers mitgegeben haben. So steht es zumindest in der Anleitung für MySQL auf Docker Hub:

    https://hub.docker.com/_/mysql

    Wenn du eingelegt bist, dann würde ich mal sowas wie: [tŧ]show databases;[/tt] machen und wenn da deine "MyVideos119" angezeigt wird, würde ich versuchen: use MyVideos119;. Ich würde vermuten, dass der root-User das schon kann.

    Kann auch sein, dass du das machen musst in dem du dich erst auf den Docker attachen musst: docker exec -it <name_des_containers> /usr/bin/bash.

    Diesen User könntest du verwenden um die Kodi-Datenbank initial erstellen zu lassen. War das erfolgreich besteht die Datenbank. Dann kannst du weitere User erstellen. Nämlich mit: CREATE USER 'kodi' IDENTIFIED BY 'kodi' wobei ersteres der Username und nach dem "BY" das Passwort ist. Ab jetzt kommt das "GRANT ALL" ins Spiel und da kannst du bestimmen auf welche Datenbank der User zugreifen darf und da würde ich mal GRANT ALL MyVideos119.* TO 'kodi';. Und somit schränkst du den Kodi-User auf die Nutzung dieser einen Datenbank ein.

    Und das schöne ist....es ist halt Docker. Fahr dir halt lokal auf deinem Rechner nen Container hoch und teste es einfach mit deinem bestehenden Kodi. Durch den Kodi-Ordner kannst du halt auch deine bestehende Konfiguration hin und her kopieren. Lokale Docker kannst du bauen, erstellen und dann wieder wegwerfen. Der MySQL-Docker ist in dem Fall ohnehin "stateless", da er von Haus aus keine Volume-Mounts hat und du daher sowieso keine Sicherungskopie auf der Festplatte hast. Kurz gesagt....verlierst du den Docker, verlierst du die Daten. Mit Containern kann man so herrlich schön rumspielen und wenn du es erstmal lokal auf deinem Rechner testest, dann weißt du ja nachher wie es funktioniert.

Jetzt mitmachen!

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