Public/Core/ConvertTo-SrtFile.ps1
|
function ConvertTo-SrtFile { <# .SYNOPSIS Serializes a SubtitleFile or SrtEntry array to SRT-formatted text. .PARAMETER InputObject A SubtitleFile or array of SrtEntry objects. .EXAMPLE $sub | ConvertTo-SrtFile | Set-Content output.srt -Encoding UTF8 #> [CmdletBinding()] [OutputType([string])] param( [Parameter(Mandatory, ValueFromPipeline)] $InputObject ) process { $entries = if ($InputObject -is [SubtitleFile]) { $InputObject.Entries } else { $InputObject } $sb = [System.Text.StringBuilder]::new() $i = 1 foreach ($entry in $entries) { # Build an SrtEntry from a generic SubtitleEntry if needed if ($entry -isnot [SrtEntry]) { $srt = [SrtEntry]::new() $srt.Index = $i $srt.BlockNumber = $i $srt.Start = $entry.Start $srt.End = $entry.End $srt.Lines = $entry.Lines $entry = $srt } else { $entry.Index = $i } [void]$sb.Append((Write-SrtEntry -Entry $entry)) [void]$sb.AppendLine() # blank line between blocks $i++ } return $sb.ToString().TrimEnd() } } |