Unterstützung mehrerer SRTs für dieselbe Sprache für CC und erzwungene Dateibenennung

Anfragetyp:
NEUES FEATURE

Zusammenfassung des Problems oder Vorschlags:
Bevor ich Videos über MCEBuddy verarbeite, stelle ich sicher, dass ich die SRT-Dateien so benannt habe, wie es Plex in Bezug auf „Forced“ und „SDH“ unterstützt. (Adding Local Subtitles to Your Media | Plex Support)

Ich möchte, dass MCEBuddy passende SRTs anhand des ersten Teils des Dateinamens findet, diese verarbeitet und beim Ausgeben beibehält.

Beispiel:
Wenn die Originaldateien so aussehen
Title.mp4
Title.eng.srt
Title.eng.cc.srt
Title.eng.forced.srt

Sollte die Ausgabe wie folgt sein
Title (2021).mkv
Title (2021).eng.srt
Title (2021).eng.cc.srt
Title (2021).eng.forced.srt

Gibt es eine Chance, dass das bald hinzugefügt wird? Die manuelle Umbenennung dieser SRT-Dateien nach der Verarbeitung ist sehr umständlich.

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

(Titel).(Sprachcode 2 oder 3 Zeichen)(.cc oder .sdh oder .forced).srt

Danke

Ich würde diese Funktion auch sehr begrüßen und lieben!!!
Ich habe viele Rips, die 3 Untertitelspuren für meinen Plex-Server enthalten:
.eng.
.eng.sdh.
.eng.forced

Obwohl die obige Option funktioniert, indem ich alle externen SRT-Dateien manuell umbenenne, damit sie dem von MCEBuddy generierten Videonamen entsprechen, werden die zusätzlichen Untertitel dennoch nicht in die Video-Datei (.mkv) eingebettet.
Zu guter Letzt – und das ist das Wichtigste – funktioniert die obige Lösung NUR, wenn ich „kopiere“ (das Profil „Unprocessed“ verwende). Bei anderen Profilen, die den Anfang des Videos abschneiden, stimmt die erzeugte Videodatei nicht mehr mit den externen SRT-Dateien überein.
Ich habe eine App auf GitHub gefunden, mit der ich meine externen SRT-Untertitel in eine MKV-Datei einbetten kann, sodass MCEBuddy Video und SRT gleichzeitig verarbeiten kann. Diese App behält jedoch die SRT-Namenskonvention nicht bei und fügt sie einfach als 01, 02, 03 ein. Mkvtoolnix Batch Tool

Alternativ: Gibt es eine Möglichkeit (oder könnte es eine geben), dass MCEBuddy zumindest die zusätzlichen SRT-Dateien zuschneidet, umbenennt und in den Ausgabeordner verschiebt – wobei die Namenskonvention .eng.forced.srt erhalten bleibt?

Da ich meine Dateien nicht mehr wirklich trimme, habe ich ein PowerShell-Core-Skript geschrieben, das ich als PreCustomCommand ausführe. Ich übergebe den Quellpfad, den Quelldateinamen, den Zielpfad und den Zieldateinamen als Parameter. Es kopiert jede SRT- oder VTT-Datei, die zur Quellvideodatei passt, benennt sie um, sodass sie dem endgültigen Videonamen (ohne Erweiterung) entspricht, und behält dabei die Sprache bei (ich ändere jedoch „en-US“ oder „en“ in „eng“) sowie den Typ, falls vorhanden.
Ich habe es als PreCustomCommand realisiert, weil zu diesem Zeitpunkt der normale MCEBuddy-Prozess noch nicht nach einer Untertiteldatei gesucht hat, aber bereits die Metadaten für das Umbenennen oder benutzerdefinierte Umbenennen vorliegen.
Der Vorgang kopiert statt verschiebt, damit er überprüfen kann, ob die Untertiteldatei korret im Zielordner liegt; ist das der Fall, wird die Quell-Untertiteldatei gelöscht.

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]
}

Diese Funktion wurde zum heutigen 2.5.7 Beta-Build hinzugefügt. Sie sollte Qualifizierer in SRT-Dateinamen erkennen und in den Ziel-SRT-Dateinamen beibehalten.

Probieren Sie es aus und lassen Sie uns wissen, wie es läuft.

Lade die aktualisierte Beta jetzt herunter! Danke.!!!

Wird das oben genannte Feature, das heute zur MCEBuddy Beta hinzugefügt wurde, auch die zusätzlichen eng.xxx.srt-Dateien trimmen sowie umbenennen und an ihr Ziel kopieren?

MCEBuddy synchronisiert die SRT mit der Konvertierung. Wenn also beispielsweise die ersten 60 Sekunden bei den konvertierten Dateien entfernt werden, geschieht dasselbe mit der SRT. Wenn bei der konvertierten Datei Werbeabschnitte entfernt werden, aktualisiert sie ebenfalls die SRT-Dateien, um diese Abschnitte zu entfernen.