Beiträge von DanCooper

    So, kleines Update:
    Hab die Prozedur nun etwas geändert, mit folgendem Ergebnis:

    • 4100 Files nur in die DB einlesen (ohne Bilder, NFO usw.): ca. 80 Sekunden
    • 4100 Files in einzelne Ordner verschieben und in die DB einlesen(ohne Bilder, NFO usw.): ca. 170 Sekunden

    Somit rein für's Verschieben ca. 90 Sekunden. Das klingt nun wesentlich besser als 1-2 Minuten pro Video. Ich werde noch ein paar andere Varianten testen, aber das Problem wird mit nächstem Release gefixt sein. Interessanterweise hat heute kurz nach dir jemand im Kodi Forum ebenfalls das selbe Problem erwähnt :)

    • IMDB und OFDb bieteten keine kostenlose API an, d.h. für jeden Film muss die entsprechende Webseite geparsed werden. Das dauert um ein vielfaches länger als bei Scrapern mit API wie TMDb, OMDb und TVDb.
    • IMDb liefernt ausschliesslich englische Informationen. Es kann zwar "Germany" für die Titel eingestellt werden, das funktioniert aber nicht immer, weil die Webseite das nicht immer hergibt.
    • IMDB liefert keine IMDb ID für die Schauspieler. Es gibt zwar in der DB ein Feld dafür, umgesetzt habe ich das aber nie. Nur TMDb liefert die TMDb ID für Schauspieler. Erstelle bitte ein Request (in Englisch bitte) dafür auf Github, wenn du das wünschst: Link
    • Unique IDs für alle anderen "Person" wie Director, Crew usw. waren nie vorgesehen und könnten aktuell auch nicht gespeichert werden. Request auf GitHub wenn du das wünschst.
    • Wenn du nur die Links zu den Schauspieler-Bilder willst einfach Einstellungen => Filme => Dateinamen => Actorthumbs deaktivieren.
    • Wenn du gewisse Bilder nicht willst diese ebenfalls an selbster Stelle deaktivieren. Achtung: bereits vorhandene Bilder werden nach dem Editieren eines Filmes gesäubert (gelöscht), wenn du die "Dateienamen" dafür deaktiviert hast.
    • Nutze TMDb an erster Stelle, damit dieser Scraper zur Suche und für alle Infos genutzt wird. Der Scraper liefert auch die IMDb ID für nachfolgende Scraper. Wenn du nur die Wertung von IMDb willst dann nutze OMDb dafür. Den API Key dafür kannst über den ? Button im Scraper kostenlos über die Webseite beantragen.
    • Aktiviere nur die Scraper, die du wirklich benutzt. Alles andere ist Zeitverschwendung.

    In Ember gibt's bis auf sehr wenige Bereiche keine Queues oder Multitasking. Es gibt nur Backgroundworker, die verhindern, dass das GUI bei längeren Prozessen trotzdem noch reagiert und Windows nicht meint, dass sich die Software nicht mehr "meldet". Deshalb wird beim DB Update und Scrapen so gut wie jeder Button deaktiviert, damit man den selben Backgroundworker nicht zweimal starten kann (was zum Crash führen würde). Die Software ist mittlerweile über 12 Jahre alt und hat ein komplettes Rework dringend nötig. Das ist mit Ember 3.0 auch geplant, aber noch in weiter ferne. Erstmal soll die aktuelle Code-Basis als Version 2.0 stable ein Ende an Änderungen haben.

    wird etwa je 2 Minuten (!) ein Ordner erstellt

    Anhand dieser Aussage gehe ich davon aus, dass du mehrere Filme in einem Ordner hast und diese vor dem Einlesen in eigene Ordner verschieben lässt; entweder weil du diese Option aktiviert hast oder du in der Quelle "jeder Film in eigenem Ordner" eingestellt hast und Ember Filme direkt in der Quelle findet. In der Tat scheint es da einen Abgleich zu geben, der bei einer höheren Anzahl Filme immer in ein Timeout läuft... danke für den Hinweis! Ich werde versuchen, das Problem in der nächsten Version zu fixen.

    Ich habe testweise 4100 Videos mit 0 Bytes erstellt und diese werden ohne Verschieben in ca. 80 Sekunden eingelesen. Wenn das Verschieben aktiviert ist wird bei mir ebenfalls nur alle 2 Minuten ein Ordner erstellt. Ich denke das ist einfach das automatische Timeout-Limit der Funktion, die Dateien gegeneinander überprüft. Mir ist das Problem nie aufgefallen (und soweit ich weiss auch nie gemeltet worden), da ich neue Filme immer in eigenen Ordnern in die Quelle verschiebe und wenn ich Filme direkt in der Quelle liegen hatte waren das höchstens 2-3 Stück.

    Als erste Info: weder für Kodi noch für Ember ist es relevant, wie die Staffelordner benannt sind. Es werden nur die Dateinamen der Episoden bzw. Videos ausgewertet... zumindest wenn du nichts an der Standard-Regex änderst.

    Normalerweise gibt meine eine Quelle an, in der direkt für jede Serie ein Ordner vorhanden ist. Wie die Episoden dann in den einzelnen Serienordnern abgelegt sind spielt wie gesagt keine Rolle (bis auf den Dateinamen). Das würde dann so aussehen:

    Quelle: \\SERVER\Serien

    Ordnerstruktur:

    Alternativ kannst du auch für jede Serie eine eigene Quelle definieren, muss dafür aber die von dir bereits genannte Option "nur eine Serie" aktivieren:

    Quelle: \\SERVER\Die Simpsons

    Ordnerstruktur:

    Code
    \\SERVER\Die Simpsons\Staffel 1\S01E01.mkv
    \\SERVER\Die Simpsons\Staffel 1\S01E02.mkv


    Wenn du das soweit verstanden und entsprechend eingestellt hast wird sowohl Kodi als auch Ember die Dateien indexieren können. Damit kommen wir zum Thema Dateinamen der Episoden:
    Wenn du sagst, dass Kodi Episoden doppelt anzeigt stimmt entweder etwas mit deinen Dateinamen oder NFOs (falls bereits vorhanden) nicht. Häufig kommen die Episoden mit Dateienamen wie "S01E01-1080p.mkv" daher. Das Problem dabei ist, dass "-1080" als Episodennummer erkannt wird, weil sich Videos mit mehrere Episoden in einer Datei (Multiepisoden) so beschreiben lassen, sprich "Staffel 1, Episode 1 und 1080". Dies lässt sich in Ember mit entsprechender Regex beheben, in Kodi theoretisch ebenfalls. Sinnvoller ist jedoch, wenn du die Dateien umbenennst, um eine für Ember und Kodi korrekte Benennung zu erhalten. Am wenigsten Aufwand hast du, wenn du in Ember die Regex anpasst, so dass Ember die Fehler ignoriert, du Ember aber dann auch die Dateien automatisch umbenennen lässt, damit der Fehler in Kodi nicht mehr zu tragen kommt und die Dateien für die Zukunft auch korrekt benannt sind. Denn auch wenn die NFO nur Informationen für eine Episode enthält versucht sowohl Ember als auch Kodi immer alle im Dateinamen vorhanden Episodennummern zu finden. Dabei gibt es unterschiede zwischen Ember und Kodi, in Kodi dann auch noch abhängig von der Scrapereinstellung der jeweiligen Quelle. Am Beispiel von "S01E01-1080p.mkv":

    • Ember, wenn keine NFO vorhanden ist: es werden die Episoden 1 und 1080 der Datenbank hinzugefügt
    • Ember, wenn eine NFO vorhanden ist, in der NFO aber nur Infos zu Episode 1 stehen: Episode 1 wird erkannt und ausgelesen, für die Episode 1080 wird eine leere Episode in der DB angelegt
    • Kodi, wenn die Scrapereinstellungen auf einer der verfügbaren Scraper eingestellt ist: beide Episoden werden in der NFO und online gesucht, die die nicht gefunden wurden werden verworfen und nicht der DB hinzugefügt
    • Kodi, wenn die Scrapereinstellungen auf "local Info only" eingestellt ist: beide Episoden werden gesucht, wenn eine der Episoden nicht in der NFO geführt ist wird sie trotzdem der DB hinzugefügt, erhält aber die Informationen der in der NFO gefundenen Episode. Sprich du hast dann eine Episode 1 und eine Episode 1080 in der Liste, beide enthalten aber die Info von Episode 1.

    Eine weitere Frage ist, ob die in Kodi die Quellen auslesen lässt oder ob du nur durch die Ordner browst.

    Ich kann seit Version 1.11.1 64 nicht mehr das Jahr eines Filmes editieren. Das Datenfeld fehlt oder ich bin blind (was gut sein mag!).

    Das Feld "Year" gibts in der Datenbank zwar noch, wird aber beim Speichern anhand des "Premiered" Wertes ermittelt, wenn dieser Wert vorhanden ist. Sprich das Feld "Year" wird nur noch verwendet, damit beim initialen Einlesen in die DB das Jahr anhand des Ordner- bzw. Dateinamens ermittelt wird und kein "Premiered" vorhanden ist. Wenn da bei dir immer 2032 drin steht würde ich den "Premiered" Wert mal überprüfen.

    EDIT: BTW, Kodi macht das übrigens seit langem ebenfalls so und das Feld Jahr wird nicht mehr wirklich beachtet bzw. benötigt.

    An die Schreibweise <nodename/> hatte ich gar nicht gedacht...

    Übrigens kannst du auch im Log nachsehen, in welcher Zeile bei einem NFO ein Fehler vorliegt. Das Log findest du unter .\Ember Media Manager\Logs. Das erspart zukünftig das rumprobieren :)


    Bei UserRating habe ich Integer festgelegt, da man in Kodi dort nur Ganzzahlen von 0-10 und nicht z.B. 5.5 (Double) einstellen kann. Die Werte könntest du mit folgender Regex fixen/runden:

    Reg Ex (übernimmt bei Double-Werten die Zahlen vor dem Punkt in die Gruppe 1):

    Code
    <userrating>(\d*).\d*<\/userrating>


    Replace (setzt nur die Zahlen aus der Gruppe 1 ein):

    Code
    <userrating>$1</userrating>


    Bei den Ratings muss <votes>0<votes> akzeptiert werden, denn das ist ein gültiger Integer-Wert. Bist du sicher, dass das ein Problem ist (Eintrag im Log)?

    In deiner Liste oben sind auch String-Felder wie tagline gelistet. Strings dürfen leer sein, somit müsstest du diese nicht entfernen. Nur Integer, Double und Boolean können halt nicht "nichts" sein. Die zweite Regex in meiner ersten Antwort enthält mit Ausnahme vom Attribut max="123" alle Werte, die nicht leer sein dürfen. TMM speichert noch andere Felder in die NFO, diese werden aber sowieso nicht ausgelesen und sind deshalb auch nicht relevant. Beim max bin ich einfach davon ausgegangen, dass es nie leer sein kann, wenn eine rating Gruppe vorhanden ist, denn es muss ja festgelegt werden, was die maximale Bewertung ist. Ich kann mich da aber natürlich auch täuschen.


    Du könntest auch mal eine NFO mit allen Fehlern hier hochladen, dann könnte man alles mal in einer Liste erfassen und ich evtl. sogar einen automatischen Fix für solche NFOs einbauen.

    Ich würde es mit TextCrawler machen. Damit kannst sehr einfach alle NFOs automatisch fixen. TMM macht vor allem zwei Fehler: falsche Schreibweise von true/false und leere Integer/Double Werte.
    Ich würde folgendermassen vorgehen:

    1. alle true/false Werte, egal ob korrekt geschrieben oder nicht, durch die Schreibweise in Kleinbuchstaben ersetzen (mit etwas mehr Aufwand könnte man die korrekt geschriebenen ausschliessen, aber es ist noch früh Morgens für mich)
    2. alle leeren Integer/Double Werte entfernen

    Das erste erreichst du so:
    Reg Ex:

    Code
    (>true<|"true"|>false<|"false")


    Das zweite erreichst du so:
    Reg Ex:

    Code
    \s*(<boxeeTvDb><\/boxeeTvDb>|<displayepisode><\/displayepisode>|<displayseason><\/displayseason>|<episode><\/episode>|<filesize><\/filesize>|<order><\/order>|<playcount><\/playcount>|<season><\/season>|<subepisode><\/subepisode>|<top250><\/top250>|<userrating><\/userrating>|<value><\/value>|<votes><\/votes>)


    Falls danach einige NFOs immer noch gelesen werden können müsste man prüfen, welche Felder sonst noch falsch sind.

    Will ich die Filmreihe aber Scrapen, erhalte ich kein Ergebnis in der Suche.

    Das Problem ist, dass die Filmset-ID nur beim Film und nicht beim automatisch erstellten Filmset hinterlegt wird/ist. Das ist ein Bug, hat früher funktioniert und wird im nächsten Release wieder gefixt sein. Da die ID dann bereits vor dem Scrapen des Filmsets bekannt ist fällt auch die Suche weg und der umbenannte Titel ist nicht mehr relevant.

    Jetzt wollte ich den TagManager starten und egal ob ich jetzt nur einen Film in der DB habe oder alle kommt sofort die Fehlermeldung "Derobjektverweis wurde nicht auf eine Objektinstanz festgelegt". Was will er denn genau von mir jetzt.

    Der Tag Manager ist leider kaputt und wird erst im neuen Release wieder funktionieren. Wenn du nicht bei jedem Film das Tag manuell über den Edit--Dialog setzen willst bleibt leider nur warten.

    War das in den vorherigen Versionen auch schon so?

    Du kannst unter Einstellungen => Serien => Scraper-Daten => Bewertungen festlegen, welche Bewertung als "Default" markiert werden soll. Ember speichert mehrere bzw. alle Bewertungen in die NFO und Kodi kann auch alle auslesen. Je nach Skin wird dann nur die "Default" oder alle Bewertungen angezeigt. Da TVDb in Kürze kostenpflichtig sein wird und wohl nicht alle gewillt sind zu zahlen habe ich wohl themoviedb als Standard gesetzt.

    Wenn die Scraper nicht gelistet werden konnten diese DLLs nicht geladen werden. Prüfe erst, ob diese überhaupt vorhanden sind (z.B. .\Ember Media Manager\Modules\scraper.data.tmdb\scraper.Data.TMDB.dll). Falls du einen Virenscanner hast bitte mal prüfen, ob dieser die Dateien blockiert. Falls du keinen Virenscanner hast den Windows Defender prüfen. Windows blockt häufiger das automatische nachladen von Dateien aus Netzwerkquellen.

    aber der Showlink wird ignoriert

    Könnte sein, dass das über die NFO nur funktioniert, wenn die Serie vor dem Hinzufügen des Filmes bereits existiert.

    bis ich ihn dann übers Kontextmenü in Kodi selbst setze. In den nfo-Dateien vor und nach dem Verlinken via Kodi ändert sich nix

    Kodi verändert keine NFOs, ausser du machst einen manuellen Datenbank-Export.

    Hast Du eine Idee, was da los ist, wär nämlich blöd, dass bei jedem Client von Hand zu machen.

    Nutze einfach das Kodi Interface in Ember, um die Daten von Ember nach Kodi zu syncen. Damit funktioniert auch das (nachträgliche) Verlinken der Serie, sofern sie in Kodi vorhanden ist.

    Das muss so aussehen bei folgender Annahme:

    Filmquelle: D:\Filme
    Ordner für Filmset-Bilder: D.\Filmsetbilder mit Einstellungen Kodi => Matrix aktiviert

    PS: Du musst das Filmset nach dem automatischen Erstellen auch noch scrapen, damit Bilder erstellt werden.

    Code
    D:\Filmesetbilder
       |--Alien Collection
       |----poster.jpg
       |----fanart.jpg
       |--Rambo Collection
       |----poster.jpg
       |----fanart.jpg