Commands/Export-Subtitle.ps1

function Export-Subtitle
{
    <#
    .SYNOPSIS
        Exports Subtitles
    .DESCRIPTION
        Exports Subtitles
    .EXAMPLE
        
    .LINK
        Get-Subtitle
    #>

    [Alias('Export-Subtitles','exsub')]
    param(
    [Parameter(Mandatory)]
    [string]
    $Path,

    [Parameter(ValueFromPipeline)]    
    [PSObject]
    $InputObject
    )

    $allInput = @($input)
    
    if ((-not $allInput) -and $InputObject) {
        $allInput = @($InputObject)
    }

    filter trimZeros { $_ -replace '0{0,}$'}
    filter periodsToCommas { $_ -replace '\.', ','}
    filter noTags { '<[^\>]+>' }
    filter trimWhitespace { $_ -replace '^[\s\r\n]{0,}' -replace '[\s\r\n]{0,}$'}



    $counter = 0 
    $subtitlesLines = 
        foreach ($subtitle in $allInput | 
            Sort-Object StartTime) {
            $counter++
            switch -regex ($path) {            
                '\.srt$' {                
                    $counter
                    ($subtitle.StartTime | periodsToCommas | trimZeros),
                        '-->',
                        ($subtitle.EndTime | periodsToCommas | trimZeros) -join ' '
                    "$($subtitle.Cue)"  | noTags | trimWhitespace
                    if ($counter -lt $allInput.Length) { [Environment]::NewLine}
                }
                '\.vtt$' {                
                    ($subtitle.StartTime -replace '^00:' | trimZeros),
                    '-->',
                    ($subtitle.EndTime -replace '^00:' | trimZeros) -join ' '
                    $subtitle.Cue | trimWhitespace
                    if ($counter -lt $allInput.Length) { [Environment]::NewLine}
                }
            }
        }

    if ($subtitlesLines) {
        $subtitlesLines > $Path
    }
}