Hinzufügedatum nicht auslesbarer Info Dateien behalten

  • Hallo alle zusammen,
    Ich bin gerade dabei aus verschiedenen Gründen von der "Konkurrenz" (tinymediamanager) zum Ember Media Manager zu wechseln. [ag] Deshalb schonmal vielen Dank für das tolle Programm!
    Bei meinen Tests hat bezüglich Scrapen, Kodi Interface, umbenennen etc. bisher augenscheinlich auch so gut wie alles funktioniert. Eine Sache will mir aber aktuell nicht gelingen:

    Die bisherigen von tmm erstellten .nfo Dateien kann Ember nicht auslesen (habe da schon ein paar Forenbeiträge von Dan zu gelesen, dass die nicht ganz Richtlinienkonform seien oder so). Diese neu zu erstellen/scrapen wäre für mich nicht weiter schlimm, nur habe ich bisher keine Möglichkeit gefunden dann dass bisherige Hinzufügedatum beizubehalten. Aufgrund der nicht auslesbaren nfos sortiert Ember aktuell nach dem Zeitpunkt, wo die Filme in Ember hinzugefügt werden. Wenn ich nun die nfos neu Erstellen würde, dann ginge die bisherige Info des ursprünglichen Hinzufügedatums verloren. Diese Sortierung nutze ich in Kodi jedoch sehr häufig.
    Tinymediamanager zieht sich das Datum augenscheinlich auch aus Trakt, weshalb die Informationen dort auch hinterlegt wären. Gibt es eine ähnliche, bisher von mir nicht entdeckte Funktion (oder Forenbeitrag) hier auch? Die Einlesevarianten mit ctime und mtime funktionieren aufgrund von verschiedenen Änderungen und Kopiervorgängen der Filme bei mir nicht wirklich. Vielleicht weiß jemand eine Lösung oder Workaround? Notfalls würde mir aktuell nur eine manuelle Batchänderung der bisherigen .nfo Dateien einfallen, sodass Ember zumindest das Hinzufügedatum auslesen kann. Bin in sowas bisher aber absolut nicht bewandert... Vielen Dank schonmal im Voraus [ab]


  • Tinymediamanager zieht sich das Datum augenscheinlich auch aus Trakt,..

    Eigentlich läuft das ja anders herum: der Scraper setzt das Hinzufügedatum in die .nfo, und Trakt holt sich dann wiederrum die Information von Kodi ab... es sei denn, man fügt die Filme vorab manuell bei Trakt hinzu.

    Und zu deinem eigentlichem Problem: hmmm, zur Not würde ich die alten .nfo's sichern, und das Datum anschl. manuell in den neuen .nfo's ändern. Was anderes fällt mir jetzt auch nicht ein.
    Eventuell noch folgendes: wenn das Hinzufügedatum bei Trakt wirklich überall vor liegt, dann kannst du, wenn die neuen .nfo's fertig und in Kodi eingelesen sind, die Daten von Trakt ja zurück in die Kodidatenbank schreiben lassen, von dort dann mit dem Addon MetaData Editor in die .nfo's schreiben lassen... k.A. ob das so funzen könnte.... Versuch macht kluch.

    Gruß Gz

    2x Android TV-Box Amlogic t95zPlus +Kodi mit Estuary, 3x Qnap 1x Synology NAS, LG 55" 3D-TV + 40", Surround

  • 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.

  • Vielen Dank für die super schnellen und vor allem ausführlichen Lösungsvorschläge. Dank deiner Anleitung habe ich auch verstanden, warum die NFOs nicht erkannt werden.
    Ich habe deinen Vorschlag ausprobiert, aber die Test NFOs wurden von Ember, nachdem ich mit dem Textcrawler drüber gegangen bin, immer noch nicht erkannt. Dein zweiter RegEx Vorschlag ergab beispielsweise (oder zum Glück) gar keinen Treffer. Habe dann nachgeguckt welche leeren Felder TMM geschrieben hat und diese mit Textcrawler ersetzen lassen. Dazu habe ich die Felder einzeln in die "Regluar Expression" Maske geschrieben. Da TMM bei meinen NFOs nur die leeren Felder mit einem / am Ende gekennzeichnet hatte, gibt es da bestimmt aber auch elegantere Lösungen. Falls jemand auch das Problem haben sollte, hier meine Amateurlösung für meine leeren Felder, einfach bei Bedarf um die eigenen ergänzen:

    Code
    \s*(<playcount/>|<lastplayed/>|<sorttitle/>|<epbookmark/>|<tagline/>|<thumb/>|<fanart/>|<status/>|<code/>|<playcount/>|<lastplayed/>|<trailer/>|<user_note/>|<overview/>)

    Jedoch wurde die NFOs danach immer noch nicht von Ember erkannt. Nach einigem herumprobieren konnte ich feststellen, dass es an dem Rating von Metascore und dem Userscore (hier nicht bewertet) liegt. Entfernt man den Punkt und die Nachkommastelle bei beiden und zudem bei Metacritics den <votes> Eintrag, dann werden die NFOs auch korrekt von Ember erkannt! :thumbup:

    Also aus z.B.
    <rating default="false" max="100" name="metascore">
    <value>74.0</value>
    <votes>0<votes>

    und <userrating>0.0</userrating>

    wird
    <rating default="false" max="100" name="metascore">
    <value>74</value>

    und <userrating>0</userrating>

    Weißt du oder jemand anderes zufällig direkt, wie man die beiden Einträge entsprechend per Textcrawler verändern oder (falls zu aufwändig) diese notfalls einfach rauslöschen kann? Bin mal gespannt, ob es in der großen Masse funktioniert oder ob da noch viele Spezialfälle sind...

  • 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.

  • Sorry für die späte Antwort, irgendwie war bis jetzt keine Zeit dafür...
    also angehängt einmal die originale, nicht einlesbare NFO: und hier die entsprechende Fehlermeldung aus dem Log.

    [errorbox]
    EXCEPTION OCCURRED:System.InvalidOperationException: Fehler im XML-Dokument (20,13). ---> System.Xml.XmlException: Unerwarteter Knotentyp Element. Die ReadElementString-Methode kann nur für Elemente mit einfachem oder leerem Inhalt aufgerufen werden. Zeile 20, Position 13.
    bei System.Xml.XmlReader.ReadElementString()
    bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMovie.Read4_RatingDetails(Boolean isNullable, Boolean checkType)
    bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMovie.Read16_Movie(Boolean isNullable, Boolean checkType)
    bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMovie.Read17_movie()
    --- Ende der internen Ausnahmestapelüberwachung ---
    bei System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
    bei System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
    bei EmberAPI.NFO.LoadFromNFO_Movie(String sPath, Boolean isSingle)* bei System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
    bei System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
    bei EmberAPI.NFO.LoadFromNFO_Movie(String sPath, Boolean isSingle)
    [/errorbox]

    Ich habe deine TextCrawler Vörschläge umgesetzt (hoffentlich kein(e) Fehler dabei gemacht...), aber das Ergebnis und die Fehlermeldung bleiben die selben. Interessanterweise ist mir aufgefallen, dass in der <votes> Spalte bei metacritic irgendwas anders sein muss, als bei den anderen (die Fehlermeldung würde ja sonst nicht darauf verweisen). Zumindest wird der Eintrag im Editor eingerückt angezeigt. In Notepad++ zwar richtig dargestellt, aber mit anderem "Vorzeichen", wenn man Leerzeichen etc. anzeigen lässt und die Datei vorher in .info umbenannt hat.
    Wenn ich den Eintrag einfach manuell lösche verändert sich die Fehlermeldung wie folgt:

    [errorbox]EXCEPTION OCCURRED:System.InvalidOperationException: Fehler im XML-Dokument (53,4). ---> System.FormatException: Die Eingabezeichenfolge hat das falsche Format.[/errorbox]

    Hierbei nhandelt es sich um den (leeren) <lastplayed/> Eintrag. Nach dessen löschen erfolgte das selbe mit dem ebenfalls leeren Eintrag <playcount/>. Anschließend wurde die NFO von Ember anstandslos eingelesen. :thumbup: Die einlesbare NFO Datei habe ich ebenfalls, entsprechend benannt, angehängt.

    Also stand jetzt: Deine Textcrawler Befehle + löschen des <votes> Eintrages bei Metacritic (wegen "Foramtierung oder was weiß ich ;)) und löschen der (leeren) Einträge <lastplayed/> und <playcount/> führen bei der NFO zum Erfolg [bn]


    Dann wird zwar als Filmversion immer NONE angeführt (da wohl von TMM eingetragen wenn nichts eingetragen), aber das kann man ja mit Ember Bordmitteln Datenfeld ersetzen für alle ändern ;)

  • In der Zeile 20 der originalen NFO ist der Tag <votes> nicht geschlossen. Dort steht also <votes>0<votes> anstelle von <votes>0</votes>. Inhaltsleere Tags wie <tagline/> anstelle von <tagline></tagline> ist in XML (und NFO) durchaus üblich und auch "richtiger".

    Zum testen kannst Du einfach mal die .nfo in .xml umbenennen und auf einen Browser ziehen.

    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

Jetzt mitmachen!

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