Soporte para múltiples SRTs del mismo idioma para CC y nomenclatura de archivos forzada

Tipo de solicitud:
NUEVA FUNCIONALIDAD

Resumen del problema o sugerencia:
Antes de procesar vídeos con MCEBuddy, me aseguro de haber nombrado los archivos SRT para que coincidan con lo que admite Plex en cuanto a subtítulos forzados y SDH (Adding Local Subtitles to Your Media | Plex Support).

Me gustaría que MCEBuddy encontrara los SRT coincidentes basándose en la primera parte del nombre de archivo para procesarlos y los conservara al generar la salida.

Por ejemplo:
Si los archivos originales son así
Title.mp4
Title.eng.srt
Title.eng.cc.srt
Title.eng.forced.srt

Que la salida sea así
Title (2021).mkv
Title (2021).eng.srt
Title (2021).eng.cc.srt
Title (2021).eng.forced.srt

¿Hay alguna posibilidad de que esto se añada pronto? El esfuerzo manual de renombrar estos archivos srt después del procesamiento es engorroso.

INFORMATION> 2021-10-30T13:06:27 MCEBuddy.Engine.ConversionJob --> Found SRT file, moving to destination SRT:D:\Temp\working0\Cowboy Bebop - S01E17 - Mushroom Samba.eng.forced.srt Destination:\\NAS\Video\TV\Cowboy Bebop (1998)\Season 01\Cowboy Bebop - S01E17 - Mushroom Samba.eng.srt
2021-10-30T13:06:27 MCEBuddy.Engine.ConversionJob --> Subtitle file \\NAS\Video\TV\Cowboy Bebop (1998)\Season 01\Cowboy Bebop - S01E17 - Mushroom Samba.eng.srt exists, creating a new unique SRT filename
INFORMATION> 2021-10-30T13:06:27 MCEBuddy.Engine.ConversionJob --> Found SRT file, moving to destination SRT:D:\Temp\working0\Cowboy Bebop - S01E17 - Mushroom Samba.eng.srt Destination:\\NAS\Video\TV\Cowboy Bebop (1998)\Season 01\Cowboy Bebop - S01E17 - Mushroom Samba.eng0.srt

(match title).(lang code 2 or 3 character)(.cc or .sdh or .forced).srt

Gracias

¡Yo también me encantaría y daría la bienvenida a esta función!!!
Tengo muchas copias que incluyen 3 conjuntos de subtítulos configurados para usar en mi servidor Plex:
.eng.
.eng.sdh.
.eng.forced

Aunque la opción anterior funciona renombrando manualmente todos los archivos srt externos para que coincidan con el nombre del archivo de video generado por MCEBuddy, aún no fusiona los subtítulos adicionales en el video (.mkv).
Por último, y lo más importante, la solución anterior SOLO funciona si estoy “copiando” (usando el perfil Sin procesar). Otros perfiles que recortan el inicio de cada video ya no coinciden con el archivo de video creado por MCEBuddy.
He encontrado una aplicación en GitHub que me permite fusionar mis subtítulos srt externos en un archivo mkv para que MCEBuddy pueda procesar el video y el srt al mismo tiempo, pero esta aplicación no mantiene la nomenclatura srt y en su lugar los inserta como 01, 02, 03. Mkvtoolnix Batch Tool

alternativamente, ¿existe o podría existir una forma de que MCEBuddy (al menos) recorte, renombre y mueva los archivos srt adicionales a la carpeta de salida —manteniendo la nomenclatura .eng.forced.srt?

Como ya no recorto mis archivos, escribí un script de PowerShell Core que ejecuto como PreCustomCommand. Paso la ruta de origen, el nombre de archivo de origen, la ruta de destino y el nombre de archivo de destino como parámetros. Copiará cualquier srt o vtt que coincida con el archivo de video de origen, lo renombrará para que coincida con el nombre final del video (menos la extensión) y conservará el idioma (aunque cambio a eng si es en-US o en) y el tipo si lo hay.
Lo hice como PreCustomCommand porque en ese punto el proceso normal de MCEBuddy aún no ha buscado un archivo de subtítulos, pero ya tiene los metadatos necesarios para renombrar o renombrar personalmente.
El proceso copia en lugar de mover, para poder verificar que el archivo de subtítulos está en el destino correctamente, y si lo está, eliminará el archivo de subtítulos de origen.

profile.config:

PreCustomCommandPath="C:\Program Files\PowerShell\7\pwsh.exe"
PreCustomCommandParameters="\\NAS\Video\Temp\Subtitle-Copy.ps1" -SourcePath "%originalfilepath%" -SourceFileBaseName "%originalfilename%" -DestinationPath "%destinationpath%" -DestinationFileBaseName "%convertedfilename%"
PreCustomCommandPeriod=0
PreCustomCommandCritical=false
PreCustomCommandUiSession=false
PreCustomCommandUiSession=false
PreCustomCommandShowWindows=false
PreCustomCommandExitCodeCheck=false

Subtitle-Copy.ps1:

[CmdletBinding()]
Param(
    [Parameter(Mandatory = $true)]
    [string]$SourcePath,
    [Parameter(Mandatory = $true)]
    [string]$SourceFileBaseName,
    [Parameter(Mandatory = $true)]
    [string]$DestinationPath,
    [Parameter(Mandatory = $true)]
    [string]$DestinationFileBaseName
)
try {
    $subtitleFileSuffix = ''
    $subtitleFiles = Get-ChildItem -Path $SourcePath -Filter "$($SourceFileBaseName)*" | Where-Object Extension -Match '\.(vtt|srt)'
    if ($subtitleFiles) {
        foreach ($subtitleFile in $subtitleFiles) {
            Write-Host "Subtitle File: $($subtitleFile.Name)"
            $subtitleFileSuffix = $subtitleFile.Name -replace "$([Regex]::Escape($SourceFileBaseName))\.(en-US|en)", '.eng'
            Write-Host "Subtitle File Suffix: $subtitleFileSuffix"
            if (!(Test-Path -Path $DestinationPath)) {
                Write-Host "Create Destination Directory: $DestinationPath"
                New-Item $DestinationPath -Type Directory | Out-Null
            }
            Write-Host "Copy $($subtitleFile.FullName) to $($DestinationPath)\$($DestinationFileBaseName)$($subtitleFileSuffix)"
            Copy-Item -Path $subtitleFile.FullName -Destination "$($DestinationPath)\$($DestinationFileBaseName)$($subtitleFileSuffix)" -Force
            $copyVerify = Test-Path -Path "$($DestinationPath)\$($DestinationFileBaseName)$($subtitleFileSuffix)"
            if ($copyVerify) {
                Write-Host "Delete $($subtitleFile.FullName)"
                Remove-Item -Path $subtitleFile.FullName -Force
            } else {
                Write-Host "Unable to verify $($subtitleFile.FullName) was copied to $($DestinationPath)\$($DestinationFileBaseName)$($subtitleFileSuffix)."
            }
        }
    } else {
        Write-Host 'No subtitle files found that match $($SourcePath)\$($SourceFileBaseName)* with extension srt or vtt.'
    }
} catch {
    $error[0]
}

Esta función se ha añadido a la versión beta 2.5.7 de hoy. Debería detectar los calificadores en los nombres de archivo SRT y conservarlos en los nombres de archivo SRT de destino.

Pruébala y cuéntanos qué tal te va.

¡Descargando la versión beta actualizada ahora! Gracias.!!!

¿La función mencionada anteriormente que se agregó a la versión beta de MCEBuddy de hoy recortará los archivos adicionales eng.xxx.srt y también los renombrará y copiará a su destino?

MCEBuddy sincroniza el srt con la conversión. Así que, por ejemplo, si el archivo convertido tiene recortados los primeros 60 segundos, hará lo mismo con el srt. Si el archivo convertido tiene algunas secciones de comerciales eliminadas, también actualizará los archivos srt para eliminar esas secciones.