Me he topado con un dilema: como Plex ya no guarda las grabaciones de DVR como archivos MKV, los metadatos que Plex crea se pierden cuando el nombre del archivo cambia de .TS a .MKV tras la conversión. Si uso MCEBuddy para renombrar los archivos, como obtienen los datos de distintas fuentes, a menudo obtengo resultados incorrectos (por ejemplo, usar la temporada 4 en lugar de la temporada 2017 para @Midnight, aunque eso no será un problema por mucho más tiempo, snif).
Puedo conservar los metadatos si invoco MCEBuddy mediante la opción de script de postprocesamiento. Ya tengo eso funcionando, pero me crea un nuevo problema: actualmente decido si una grabación debe pasar por comskip según el lugar donde se hace la grabación (TV vs TV-Commercials). MCEBuddy tiene una útil capacidad para restringir la ejecución de un perfil concreto según la ubicación del archivo supervisado. Parece que no tengo esa posibilidad cuando lo invoco mediante el script.
¿Hay alguna forma de ejecutar selectivamente las grabaciones por Comskip mediante la opción de postprocesamiento?
Como referencia, Plex DVR proporciona lo siguiente:
El script se ejecuta en el directorio donde lo hayas colocado.
El postprocesamiento de DVR simplemente llama a tu script y le pasa una única variable con la ruta completa y el nombre del archivo de vídeo grabado en la carpeta de procesamiento .grab. Esa variable (nombre del archivo) puede referenciarse en tu script con los nombres de variable estándar:
Windows: %1
Linux/Unix/Android/Apple: $1
Así que en cualquier parte del script donde necesites referirte a la ruta completa y al nombre del archivo puedes usar la variable estándar. También puedes usar modificadores estándar para referirte a partes de la unidad/ruta/nombre del archivo con o sin la extensión:
Windows:
%~d1 = solo la unidad
%~p1 = solo la ruta
%~n1 = solo el nombre del archivo sin ruta ni extensión
En Windows %1 no debe ir entre comillas, pero necesitarás comillas en cualquier referencia parcial, ya que la ruta/nombre contendrá espacios.
¿Existe alguna posibilidad de que MCEBuddy respete la ruta que proporciona Plex como entrada para determinar qué perfil se utiliza cuando se invoca mediante CLI / script?
En mi configuración anterior, limito las tareas de conversión (ya sea eliminando comerciales o no) a un conjunto específico de ubicaciones (grabaciones con comerciales, grabaciones sin comerciales). Esto me funciona bastante bien.
Cuando Plex DVR volvió de .mkv a .ts, significa que los metadatos que Plex tiene para esa grabación se pierden a menos que utilice la opción de script de post-procesamiento.
Si uso la opción de script de post-procesamiento, no parece haber ninguna lógica que pueda aplicar para elegir una tarea de conversión frente a otra, aparte de analizar el nombre del archivo. Esto es muy frágil y requiere que lo actualice cada vez que hay una nueva grabación.
Lo que espero es que haya un enfoque alternativo o una actualización de MCEBuddy que me permita pasarle una ubicación de archivo (es decir, ../TV-Commercials) y que, como resultado, seleccione la tarea de conversión correcta cuando se invoque desde la línea de comandos o mediante un script.
Espero que esté claro; si me estoy perdiando algo y ya es posible, házmelo saber. ¡Gracias! Will.
Déjame ver si te entendí bien. Quieres que MCEBuddy analice el nombre de archivo pasado por la CLI y luego determine qué Tarea de Conversión ejecutar (y esa tarea de conversión tiene un script específico adjunto).
Si es así, creo que se podría hacer de esta manera:
Primero configura tus (múltiples) Tareas de Conversión
Para cada tarea de conversión deberías crear un perfil personalizado para que cada perfil tenga un script personalizado (si quieres diferentes scripts de post-procesamiento para cada tarea de conversión)
Ahora para cada Tarea de Conversión puedes asignar los filtros de nombre de archivo en la sección Configuración Avanzada, por ejemplo, una tarea de conversión solo procesará archivos con nombres CSI* y otra solo House* etc.
Finalmente, para cada una de estas tareas de conversión, designa que solo se ejecuten cuando el archivo se pase por la CLI en la opción Configuración Experto → Seleccionar ubicaciones de monitoreo (ver abajo)
Esperaba evitar ese enfoque, ya que es probable que olvide actualizar el filtro cuando añada una nueva serie o película.
Como digo, el método actual que uso, que no emplea el script de post-procesamiento de Plex, asigna la tarea de conversión según la ubicación del archivo. Como ya sé dónde se guardará cuando configuro la grabación, todo es automático. Desafortunadamente, pierdo los metadatos porque Plex vuelve a grabar en .TS.
Si esta es la única forma, me las arreglaré; solo buscaba una alternativa. ¡Gracias como siempre!
Creo que hay dos aspectos para una posible solución:
El script de post-procesamiento no quiere que haya ubicaciones monitoreadas, pero esas son necesarias para restringir una tarea de codificación determinada. Si es posible configurar las ubicaciones, pero que MCEBuddy nunca las revise en busca de nuevas ubicaciones, eso funcionaría.
En la configuración avanzada de las tareas de conversión, parece que la tarea manual/CLI está separada de la restricción de carpeta. ¿Sería posible agregar una opción para una máscara de ubicación de archivo (es decir, realizar esta tarea en CLI solo si el archivo está en ../tv-commercials/) como parte de la selección CLI? Si eso estuviera disponible, no habría necesidad de una variable adicional.
Tener la ubicación pero no verificarla podría causar mucha confusión. Es un aspecto bastante fundamental. La opción que podríamos considerar es deshabilitar la ubicación del Monitor, pero ¿cómo ayudaría eso? No veo cómo deshabilitar la ubicación del Monitor resolvería su problema.
Desde una perspectiva de GUI, no puedo visualizar cómo se vería. Estoy abierto a ideas. Sin embargo, habiendo dicho eso, implementar una variable sería mucho más simple y estaría alineado con la arquitectura general.
Totalmente de acuerdo con respecto al punto 1: si pudieras introducir una máscara de ruta para la selección CLI, no lo necesitarías, según lo pienso un poco más. El punto 1 era más sobre la capacidad de seleccionar la ubicación en Conversion Tasks > Expert.
En cuanto a cómo exponer el punto 2, creo que lo lograría así:
Cuando un usuario seleccione Manual / CLI en la configuración experta, aparece un campo de texto debajo que permite al usuario introducir una ruta. «Máscara de ruta de archivo» probablemente no es el nombre más amigable, pero podría ser algo como «restringir solo a estas ubicaciones». Debería haber un signo más después del campo de texto para permitir agregar una ubicación adicional.
Si el enfoque de variables es más fácil, supongo que se trata de configurar qué variable corresponde a una tarea de conversión dada. En el caso de Plex, y de cómo lo usaría yo, probablemente sería «%~p1» —la ruta del archivo.
Para el punto 2, ¿te refieres a la tarea de conversión o a la ubicación del Monitor? Porque la opción de selección por CLI ya existe para las tareas de conversión y también tiene un filtro de archivos, así que no entiendo exactamente qué es lo que falta aquí.
En cuanto a la variable, ya existe una variable para scripts personalizados que pasa la ruta del archivo.
Me refiero a las Tareas de Conversión: no estoy seguro de cómo hacer el punto dos.
¿Estás diciendo que podría tener Tarea de Conversión > Configuración experta > Seleccionar ubicaciones de monitor configurado solo en “Manual / CLI” e incluir algo como “\\DISK8\Plex\TV-Commercials” en Coincidencia de nombre de archivo y que solo se ejecutaría en esas tareas manuales donde el archivo esté en \\DISK8\Plex\TV-Commercials?
Otra información que podría ser importante: Plex DVR permite solo un script de post-procesamiento, por lo que estoy intentando trasladar la lógica de elegir qué tarea de conversión debe ejecutarse a MCEBuddy. Si la única forma es incluir la lógica en el propio script, entonces tendré que averiguar cómo hacerlo allí.
¿Existe la posibilidad de especificar qué tarea de conversión debe ejecutarse mediante CLI?
No, la CLI es básicamente una extensión de API de la adición manual. La arquitectura fundamental no permite la selección manual de tareas de conversión. Esos enlaces solo ocurren a través de la tarea de conversión misma utilizando la función Seleccionar ubicaciones de monitor.
Yah. No creo que pueda manejarlo en el script sin la capacidad de especificar qué tarea de conversión debe usarse como opción de línea de comandos. Si eso estuviera disponible, podría analizar la ruta en el script, pasar el nombre de archivo y elegir la tarea de conversión adecuada. ¿Hay alguna posibilidad de obtener algo como:
Will_Tschumy ¿hay alguna posibilidad de que compartas tu script de postprocesamiento para Plex? Me gustaría echarle un vistazo, ya que he usado Plex durante años y acabo de conseguir un HDHomeRun; ahora estoy aprendiendo a usar MCEBuddy para convertir los archivos .ts a algo más manejable para reproducir en Plex.
Encantado de compartir lo que tengo, aunque debo advertir que no lo estoy usando actualmente. Lo que hago ahora es que MCEBuddy vigile las distintas ubicaciones donde PMS graba los archivos y ejecute tareas de conversión según la ubicación. Así puedo decidir si el archivo debe analizarse para detectar comerciales o no.
Dicho esto, el script de postprocesamiento que he probado es:
@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
)
Una vez que sepa si pueden permitir la especificación manual de una tarea de conversión desde la línea de comandos, modificaré el script para elegir la tarea de codificación en función de la ruta en la variable %1.
No escribí el script: lo encontré en uno de los hilos de Reddit (cuidado con el enlace de megafilz: es un vector de distribución de adware/spyware).