@ -12,6 +12,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
/// </summary>
public class SsaParser : ISubtitleParser
{
/// <inheritdoc />
public SubtitleTrackInfo Parse ( Stream stream , CancellationToken cancellationToken )
{
var trackInfo = new SubtitleTrackInfo ( ) ;
@ -45,7 +46,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
header . AppendLine ( line ) ;
}
if ( line . Trim ( ) . ToLowerInvariant ( ) = = "[events]" )
if ( string . Equals ( line . Trim ( ) , "[events]" , StringComparison . OrdinalIgnoreCase ) )
{
eventsStarted = true ;
}
@ -63,27 +64,27 @@ namespace MediaBrowser.MediaEncoding.Subtitles
format = line . ToLowerInvariant ( ) . Substring ( 8 ) . Split ( ',' ) ;
for ( int i = 0 ; i < format . Length ; i + + )
{
if ( format [ i ] . Trim ( ) .ToLowerInvariant ( ) = = "layer" )
if ( string . Equals ( format [ i ] . Trim ( ) , "layer" , StringComparison . OrdinalIgnoreCase ) )
{
indexLayer = i ;
}
else if ( format [ i ] . Trim ( ) .ToLowerInvariant ( ) = = "start" )
else if ( string . Equals ( format [ i ] . Trim ( ) , "start" , StringComparison . OrdinalIgnoreCase ) )
{
indexStart = i ;
}
else if ( format [ i ] . Trim ( ) .ToLowerInvariant ( ) = = "end" )
else if ( string . Equals ( format [ i ] . Trim ( ) , "end" , StringComparison . OrdinalIgnoreCase ) )
{
indexEnd = i ;
}
else if ( format [ i ] . Trim ( ) .ToLowerInvariant ( ) = = "text" )
else if ( string . Equals ( format [ i ] . Trim ( ) , "text" , StringComparison . OrdinalIgnoreCase ) )
{
indexText = i ;
}
else if ( format [ i ] . Trim ( ) .ToLowerInvariant ( ) = = "effect" )
else if ( string . Equals ( format [ i ] . Trim ( ) , "effect" , StringComparison . OrdinalIgnoreCase ) )
{
indexEffect = i ;
}
else if ( format [ i ] . Trim ( ) .ToLowerInvariant ( ) = = "style" )
else if ( string . Equals ( format [ i ] . Trim ( ) , "style" , StringComparison . OrdinalIgnoreCase ) )
{
indexStyle = i ;
}
@ -184,12 +185,10 @@ namespace MediaBrowser.MediaEncoding.Subtitles
int . Parse ( timeCode [ 3 ] ) * 10 ) . Ticks ;
}
p ublic static string GetFormattedText ( string text )
p rivate static string GetFormattedText ( string text )
{
text = text . Replace ( "\\n" , ParserValues . NewLine , StringComparison . OrdinalIgnoreCase ) ;
bool italic = false ;
for ( int i = 0 ; i < 10 ; i + + ) // just look ten times...
{
if ( text . Contains ( @"{\fn" ) )
@ -200,7 +199,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
{
string fontName = text . Substring ( start + 4 , end - ( start + 4 ) ) ;
string extraTags = string . Empty ;
CheckAndAddSubTags ( ref fontName , ref extraTags , out italic ) ;
CheckAndAddSubTags ( ref fontName , ref extraTags , out bool italic ) ;
text = text . Remove ( start , end - start + 1 ) ;
if ( italic )
{
@ -231,7 +230,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
{
string fontSize = text . Substring ( start + 4 , end - ( start + 4 ) ) ;
string extraTags = string . Empty ;
CheckAndAddSubTags ( ref fontSize , ref extraTags , out italic ) ;
CheckAndAddSubTags ( ref fontSize , ref extraTags , out bool italic ) ;
if ( IsInteger ( fontSize ) )
{
text = text . Remove ( start , end - start + 1 ) ;
@ -265,7 +264,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
{
string color = text . Substring ( start + 4 , end - ( start + 4 ) ) ;
string extraTags = string . Empty ;
CheckAndAddSubTags ( ref color , ref extraTags , out italic ) ;
CheckAndAddSubTags ( ref color , ref extraTags , out bool italic ) ;
color = color . Replace ( "&" , string . Empty ) . TrimStart ( 'H' ) ;
color = color . PadLeft ( 6 , '0' ) ;
@ -303,7 +302,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
{
string color = text . Substring ( start + 5 , end - ( start + 5 ) ) ;
string extraTags = string . Empty ;
CheckAndAddSubTags ( ref color , ref extraTags , out italic ) ;
CheckAndAddSubTags ( ref color , ref extraTags , out bool italic ) ;
color = color . Replace ( "&" , string . Empty ) . TrimStart ( 'H' ) ;
color = color . PadLeft ( 6 , '0' ) ;
@ -354,14 +353,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
}
private static bool IsInteger ( string s )
{
if ( int . TryParse ( s , out var i ) )
{
return true ;
}
return false ;
}
= > int . TryParse ( s , out _ ) ;
private static int CountTagInText ( string text , string tag )
{