Cómo escribir scripts de pre y post proceso

He visto referencias y menciones sobre scripts de pre y post procesamiento. Pero, no puedo encontrar documentación definitiva sobre cómo hacerlo. Cualquier ayuda es apreciada. Gracias de antemano.

Aquí está la fuente autorizada sobre comandos personalizados

Mi entendimiento es que puedes llamar varios tipos de archivos, por ejemplo, un archivo por lotes de Windows. Personalmente llamo un script de PowerShell para algunas post-procesamientos que incluyen renombrado personalizado que MCEBuddy no me permite hacer, y también se encarga de mover los archivos convertidos a la estructura de carpetas que deseo y maneja sobrescritura/eliminación si ya existen.

Básicamente, llamas al script en profiles.conf definiendo los que quieras dentro del perfil específico.
Así que, por ejemplo, en el mío, uno de mis perfiles es:

[MP4 Unprocessed]
Description=Very fast but limited functionality. Use this profile if the original video has H.264/MPEG video and you want to remove the commercials and convert the file format to MP4 (e.g. WTV to MP4) without any additional processing (deinterlace, resizing, volume, cropping etc). It will copy the original video and audio and put it into a MP4 format unaltered in quality.
order=ffmpeg
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vcodec copy -sn
ffmpeg-audio=-acodec copy
ffmpeg-audioac3=-acodec copy
ffmpeg-ext=.mp4
ffmpeg-audiodelay=skip
PreConversionCommercialRemover=true
FixedResolution=true
SkipCropping=true
AutoDeinterlace=false
PostCustomCommandPath = C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
PostCustomCommandParameters = -windowstyle hidden -file “f:\transfer\mcebuddy_postprocess.ps1” -newname “"%convertedfile%"” -destpath “"%destinationpath%"” -series “"%seriesid%"” -imdb “"%imdbmovieid%"” -ismovie “"%ismovie%"” -taskname “"%taskname%"” -season “"%season%##"” -origName “"%originalfilename%"”
PostCustomCommandHangPeriod = 0
PostCustomCommandCritical = False
PostCustomCommandUISession = False
PostCustomCommandShowWindow = True
PostCustomCommandExitCodeCheck = False

PostCustomCommandPath le indica que estoy llamando a PowerShell, y PostCustomCommandParameters le dice qué script de PowerShell ejecutar, además de pasar un montón de valores que expone MCEBuddy, por ejemplo el nombre.

Mi script de PowerShell real es bastante largo, pero una de las cosas que hace es mirar estos valores pasados y ajustar los nombres de carpeta para incluir ya sea el ID de IMDb o el de TVDb dependiendo de si es película o serie. El renombrado integrado de MCEBuddy no parece tener argumentos para estos valores.

PD - La API pública de IMDB está muerta. Después de que Amazon los comprara, la monetizaron detrás de una API de pago.

Creo que MCEBuddy ha cambiado a usar https://www.themoviedb.org/ (TMDB) como reemplazo. Podrías considerar ajustar tu script de PowerShell para hacer lo mismo.

Tendré que verificar qué está haciendo Plex, pero estaba siguiendo algunos documentos que sugieren nombrar los elementos de esta manera para ayudar a identificarlos
Serie de TV - Carpeta Principal:
p. ej. CSI Vegas (2021) {tvdb-400248}
y Películas - Carpeta Principal:
The Mortal Storm (1940) {imdb-tt0032811}

El problema estaba en que, al renombrar, no encontraba un marcador de posición para el id de serie de tvdb, pero sí hay un marcador disponible en el post-procesamiento, así que todo lo que hago es pasar el argumento de mcebuddy a powershell para tomar la carpeta original y renombrarla de

CSI Vegas (2021)
a
CSI Vegas (2021) {tvdb-400248}

Últimamente, sin embargo, ha habido ocasiones en las que no se recupera el id de serie y no estoy seguro de por qué.

En fin, mis scripts de powershell se encargan de renombrar las carpetas principales y luego mover los elementos a mi servidor plex y determinar si copiar en una carpeta existente (por ejemplo, para series de tv) o sobrescribir (en el caso de películas).