Public/Utilities/Get-SubtitleInfo.ps1
|
function Get-SubtitleInfo { <# .SYNOPSIS Returns a summary object describing a subtitle file. .DESCRIPTION Reports: file path, format, entry count, encoding, BOM presence, total duration, has overlaps, has parser warnings. .PARAMETER Path Path to a subtitle file. .PARAMETER InputObject A SubtitleFile object. .EXAMPLE Get-SubtitleInfo -Path 'movie.srt' .EXAMPLE Get-ChildItem *.srt | Get-SubtitleInfo #> [CmdletBinding(DefaultParameterSetName = 'Path')] param( [Parameter(Mandatory, ParameterSetName = 'Path', ValueFromPipeline, ValueFromPipelineByPropertyName)] [Alias('FullName')] [string] $Path, [Parameter(Mandatory, ValueFromPipeline, ParameterSetName = 'Object')] [SubtitleFile] $InputObject ) process { if ($PSCmdlet.ParameterSetName -eq 'Path') { $InputObject = Import-SubtitleFile -Path $Path } $duration = Get-SubtitleDuration -InputObject $InputObject $overlapTest = Test-SubtitleOverlap -InputObject $InputObject [PSCustomObject]@{ Path = $InputObject.Path Format = $InputObject.Format EntryCount = $InputObject.Entries.Count Encoding = $InputObject.Encoding HasBom = $InputObject.HasBom FirstStart = $duration.FirstStart LastEnd = $duration.LastEnd TotalSpan = $duration.TotalSpan TotalDisplay = $duration.TotalDisplayTime AvgDuration = $duration.AverageDuration HasOverlaps = ($overlapTest.WarningCount -gt 0) OverlapCount = $overlapTest.WarningCount ParserWarnings = $InputObject.ParserWarnings.Count StyleCount = if ($InputObject.Header) { $InputObject.Header.Styles.Count } else { $null } } } } |