ich stehe vor einem Dilemma: Da Plex DVR-Aufnahmen nicht mehr als MKVs speichert, gehen die von Plex erzeugten Metadaten verloren, sobald sich der Dateiname von .TS auf .MKV nach der Konvertierung ändert. Wenn ich MCEBuddy zum Umbenennen der Dateien verwende, liefert es – weil es auf unterschiedliche Datenquellen zugreift – oft falsche Ergebnisse (z. B. Staffel 4 statt Staffel 2017 für @Midnight, wobei das bald kein Problem mehr sein wird, schnief).
Die Metadaten bleibe erhalten, wenn ich MCEBuddy über die Postprocessing-Skript-Option aufrufe. Das funktioniert, erzeugt aber ein neues Problem: Momentan entscheide ich anhand des Aufnahmeorts (TV vs. TV-Commercials), ob eine Aufnahme durch comskip laufen soll. MCEBuddy bietet eine praktische Möglichkeit, die Ausführung eines bestimmten Profils auf überwachte Ordner zu beschränken. Diese Option scheint mir beim Aufruf über das Skript nicht zur Verfügung zu stehen.
Gibt es eine Möglichkeit, Aufnahmen selektiv per Postprocessing durch Comskip zu schicken?
Als Referenz liefert Plex DVR Folgendes:
Das Skript läuft im Verzeichnis, in dem ihr es abgelegt habt.
DVR-Postprocessing ruft einfach euer Skript auf und übergibt eine einzelne Variable mit dem vollständigen Pfad und Dateinamen des aufgezeichneten Videos im .grab-Ordner. Diese Variable (Dateiname) kann im Skript mit Standard-Input-Variablen angesprochen werden:
Windows: %1
Linux/Unix/Android/Apple: $1
Überall im Skript, wo ihr den vollständigen Pfad und Dateinamen braucht, könnt ihr die Standardvariable verwenden. Standard-Modifier erlauben es, auf einzelne Bestandteile zuzugreifen:
Windows:
%~d1 = nur Laufwerk
%~p1 = nur Pfad
%~n1 = nur Dateiname ohne Pfad oder Erweiterung
Unter Windows darf %1 nicht in Anführungszeichen stehen, Teilangaben müssen jedoch quotiert werden, da Pfad/Dateiname Leerzeichen enthält.
Besteht die Möglichkeit, MCEBuddy so zu erweitern, dass es den von Plex bereitgestellten Pfad als Eingabe berücksichtigt, um zu bestimmen, welches Profil verwendet wird, wenn es über CLI / Skript aufgerufen wird?
In meinem alten Setup beschränke ich die Konvertierungsaufgaben (entweder mit oder ohne Werbung entfernen) auf bestimmte Speicherorte (Aufnahmen mit Werbung, werbefreie Aufnahmen). Das funktioniert für mich ganz gut.
Als Plex DVR wieder von .ts auf .mkv umgestellt hat, bedeutet das, dass die Metadaten, die Plex für diese Aufnahme hat, verloren gehen, es sei denn, ich nutze die Post-Processing-Skript-Option.
Wenn ich die Post-Processing-Skript-Option nutze, scheint es keine Logik zu geben, mit der ich zwischen verschiedenen Konvertierungsaufgaben wählen kann – außer den Dateinamen zu parsen. Das ist sehr fragil und erfordert, dass ich es bei jeder neuen Aufnahme aktualisiere.
Ich hoffe, dass es einen alternativen Ansatz / ein Update für MCEBuddy gibt, sodass ich einen Dateipfad übergeben kann (z. B. ../TV-Commercials) und als Ergebnis die richtige Konvertierungsaufgabe ausgewählt wird, wenn es über die CLI / per Skript aufgerufen wird.
Ich hoffe, das ist verständlich – falls ich etwas übersehe und das bereits möglich ist, lasst es mich bitte wissen. Danke! Will.
Lassen Sie mich prüfen, ob ich Sie richtig verstanden habe. Sie möchten, dass MCEBuddy den über die Befehlszeile übergebenen Dateinamen betrachtet und dann bestimmt, welche Konvertierungsaufgabe ausgeführt werden soll (und diese Konvertierungsaufgabe hat ein bestimmtes Skript)?
Wenn ja, könnte es auf diese Weise funktionieren:
Richten Sie zunächst Ihre (mehreren) Konvertierungsaufgaben ein
Für jede Konvertierungsaufgabe sollten Sie ein benutzerdefiniertes Profil erstellen, sodass jedes Profil ein benutzerdefiniertes Skript hat (falls Sie unterschiedliche Nachbearbeitungsskripte für jede Konvertierungsaufgabe wünschen)
Nun können Sie für jede Konvertierungsaufgabe die Dateinamensfilter im Abschnitt Erweiterte Einstellungen zuweisen, z. B. verarbeitet eine Konvertierungsaufgabe nur Dateien mit dem Namen CSI* und eine andere nur House* usw.
Schließlich legen Sie für jede dieser Konvertierungsaufgaben fest, dass sie nur ausgeführt wird, wenn die Datei über die Befehlszeile übergeben wird, über die Option Experteneinstellungen → Überwachungsorte auswählen (siehe unten)
Ich wollte diesen Ansatz eigentlich vermeiden, da ich sonst vergesse, den Filter zu aktualisieren, wenn ich eine neue Serie oder einen neuen Film hinzufüge.
Wie ich schon sagte: Mein aktueller Ansatz, der kein Post-Processing-Skript in Plex nutzt, weist die Konvertierungsaufgabe anhand des Speicherorts der Datei zu. Da ich das beim Einrichten der Aufnahme kenne, läuft alles automatisch. Leider verliere ich dabei die Metadaten, weil Plex wieder in .TS aufnimmt.
Wenn das der einzige Weg ist, werde ich es hinbekommen – ich hatte nur auf eine Alternative gehofft. Wie immer vielen Dank!
Wenn Sie einen Vorschlag haben oder eine Variable hinzufügen möchten, die an die Skripte übergeben werden kann, lassen Sie es uns wissen und wir werden prüfen, ob wir sie hinzufügen können.
Ich denke, es gibt zwei Aspekte für eine mögliche Lösung:
Das Post-Processing-Skript möchte keine überwachten Speicherorte, aber diese sind erforderlich, um eine bestimmte Kodierungsaufgabe einzuschränken. Wenn es möglich ist, die Speicherorte einzurichten, aber MCEBuddy nie prüfen zu lassen, ob neue Speicherorte vorhanden sind, würde das funktionieren
In den Experteneinstellungen der Konvertierungsaufgaben sieht es so aus, als ob die manuelle/CLI-Aufgabe von der Ordnerbeschränkung getrennt ist. Wäre es möglich, eine Option für eine Dateispeicherort-Maske hinzuzufügen (d. h., diese Aufgabe nur in der CLI ausführen, wenn sich die Datei in ../tv-commercials/ befindet) als Teil der CLI-Auswahl? Wenn das verfügbar wäre, gibt es keine Notwendigkeit für eine zusätzliche Variable
Lassen Sie mich versuchen, die oben genannten Punkte anzugehen:
Den Standort zu haben, aber ihn nicht zu prüfen, könnte zu großer Verwirrung führen. Es ist ein ziemlich grundlegender Aspekt. Die Option, die wir prüfen könnten, ist das Deaktivieren der Standortüberwachung, aber wie würde das helfen? Ich sehe nicht, wie das Deaktivieren der Standortüberwachung Ihr Problem lösen würde?
Aus GUI-Sicht kann ich mir nicht vorstellen, wie das aussehen würde. Ich bin offen für Ideen. Nachdem ich das jedoch gesagt habe, wäre die Implementierung einer Variablen viel einfacher und im Einklang mit der Gesamtarchitektur.
Stimme vollkommen zu, was Punkt 1 betrifft – wenn man im CLI eine Pfadmaske eingeben könnte, wäre das gar nicht nötig, wie ich jetzt nochmal darüber nachdenke. Punkt 1 ging eher darum, den Speicherort unter „Konvertierungsaufgaben > Experte“ auswählen zu können.
Wie man Punkt 2 anbietet, würde ich so lösen:
Wählt der Nutzer im Expertenbereich „Manuell / CLI“, erscheint darunter ein Textfeld, in dem er einen Pfad eingeben kann. „Datei-Pfad-Maske“ ist wahrscheinlich nicht der freundlichste Name, vielleicht eher „auf diese Speicherorte beschränken“. Nach dem Textfeld sollte ein Plus stehen, um weitere Speicherorte hinzuzufügen.
Falls der Variablenansatz einfacher ist, kommt es darauf an, welche Variable einer bestimmten Konvertierungsaufgabe zugeordnet wird. Für Plex – und wie ich es nutzen würde – wäre es vermutlich „%~p1“, also der Pfad der Datei.
Zu Punkt 2: Beziehst du dich auf die Konvertierungsaufgabe oder auf den Überwachungsort? Denn für Konvertierungsaufgaben existiert die CLI-Auswahlmöglichkeit bereits, und sie verfügt auch über einen Dateifilter – daher ist mir nicht klar, was hier konkret fehlt.
Was die Variable betrifft: Es gibt bereits eine Variable für benutzerdefinierte Skripte, die den Dateipfad übergibt.
Ich beziehe mich auf Conversion Tasks – Dann bin ich mir bei Punkt zwei nicht sicher, wie ich vorgehen soll.
Sagen Sie, ich könnte bei Conversion Task > Expert Settings > Select Monitor Locations nur „Manual / CLI“ auswählen und etwas wie „\\DISK8\Plex\TV-Commercials“ in File Name Match eintragen, und es würde nur bei diesen manuellen Tasks ausgeführt, wenn die Datei in \\DISK8\Plex\TV-Commercials liegt?
Eine weitere Information, die möglicherweise wichtig ist – Plex DVR erlaubt nur ein Post-Processing-Skript, daher versuche ich, die Logik zur Auswahl der Konvertierungsaufgabe in MCEBuddy zu verlagern. Falls die einzige Möglichkeit darin besteht, die Logik direkt in das Skript zu packen, muss ich mir dort überlegen, wie ich das mache.
Gibt es die Möglichkeit, über die CLI festzulegen, welche Konvertierungsaufgabe ausgeführt werden soll?
Nein, die CLI ist im Grunde eine API-Erweiterung der manuellen Hinzufügung. Die grundlegende Architektur erlaubt keine manuelle Auswahl von Konvertierungsaufgaben. Diese Verknüpfungen erfolgen nur über die Konvertierungsaufgabe selbst mithilfe der Funktion „Monitor-Standorte auswählen“.
Ok – ich bin also wieder bei „Ich weiß nicht, wie ich das machen soll.“
Wenn ich MCEBuddy über die Befehlszeile aufrufen möchte und die Konvertierungsaufgabe anhand des Pfads der übergebenen Datei ausgewählt werden soll – wie mache ich das?
Yah. Ich glaube, ich kann das im Skript nicht bewältigen, ohne die Möglichkeit, als Kommandozeilenoption anzugeben, welche Konvertierungsaufgabe verwendet werden soll. Wenn das vorhanden wäre, könnte ich den Pfad im Skript parsen, den Dateinamen übergeben und die entsprechende Konvertierungsaufgabe auswählen. Besteht die Chance, so etwas zu bekommen:
Will_Tschumy bestünde die Möglichkeit, dass du dein Post-Processing-Skript für Plex teilst? Ich würde es mir gerne ansehen, da ich Plex seit Jahren nutze und gerade ein HDHomeRun bekommen habe und nun mcebuddy lerne, um die .ts-Dateien in etwas umzuwandeln, das sich besser in Plex abspielen lässt.
ich teile gern, was ich habe, muss aber vorab sagen, dass ich es gerade nicht aktiv nutze. Im Moment lasse ich MCEBuddy die verschiedenen Ordner überwachen, in denen PMS die Aufnahmen ablegt, und je nach Pfad unterschiedliche Konvertierungsjobs starten. So kann ich festlegen, ob eine Datei auf Werbung untersucht werden soll oder nicht.
Das Post-Processing-Skript, das ich getestet habe, sieht so aus:
@echo off
C:\Progra~1\MCEBuddy2x\MCEBuddy.UserCLI.exe --command=engine --action=start
timeout /t 2 /nobreak > NUL
C:\Progra~1\MCEBuddy2x\MCEBuddy.UserCLI.exe --command=addfile --action=%1
timeout /t 10 /nobreak > NUL
:loop
for /f "delims=" %%o in ('C:\Progra~1\MCEBuddy2x\MCEBuddy.UserCLI.exe --command=jobstatus --action=%1 --quiet') do set status=%%o
if %status% == "not present" (
Exit
) else (
timeout /t 2 /nobreak > NUL
goto loop
)
Sobald ich weiß, ob man per Kommandozeile manuell einen bestimmten Konvertierungsjob auswählen kann, passe ich das Skript an, damit es die Kodierungsaufgabe anhand des Pfads in der Variable %1 wählt.
Ich habe das Skript nicht selbst geschrieben – ich fand es in einem der Reddit-Threads (Vorsicht vor dem megafilz-Link, das ist ein Ad-/Spyware-Verteiler).