|  | @@ -26,7 +26,8 @@ namespace MediaBrowser.Providers.MediaInfo
 | 
	
		
			
				|  |  |          public async Task<List<string>> DownloadSubtitles(Video video,
 | 
	
		
			
				|  |  |              List<MediaStream> internalMediaStreams,
 | 
	
		
			
				|  |  |              List<MediaStream> externalSubtitleStreams,
 | 
	
		
			
				|  |  | -            bool forceExternal,
 | 
	
		
			
				|  |  | +            bool skipIfGraphicalSubtitlesPresent,
 | 
	
		
			
				|  |  | +            bool skipIfAudioTrackMatches,
 | 
	
		
			
				|  |  |              IEnumerable<string> languages,
 | 
	
		
			
				|  |  |              CancellationToken cancellationToken)
 | 
	
		
			
				|  |  |          {
 | 
	
	
		
			
				|  | @@ -58,7 +59,7 @@ namespace MediaBrowser.Providers.MediaInfo
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  try
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    var downloaded = await DownloadSubtitles(video, internalMediaStreams, externalSubtitleStreams, forceExternal, lang, mediaType, cancellationToken)
 | 
	
		
			
				|  |  | +                    var downloaded = await DownloadSubtitles(video, internalMediaStreams, externalSubtitleStreams, skipIfGraphicalSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken)
 | 
	
		
			
				|  |  |                          .ConfigureAwait(false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      if (downloaded)
 | 
	
	
		
			
				|  | @@ -78,7 +79,8 @@ namespace MediaBrowser.Providers.MediaInfo
 | 
	
		
			
				|  |  |          private async Task<bool> DownloadSubtitles(Video video,
 | 
	
		
			
				|  |  |              List<MediaStream> internalMediaStreams,
 | 
	
		
			
				|  |  |              IEnumerable<MediaStream> externalSubtitleStreams,
 | 
	
		
			
				|  |  | -            bool forceExternal,
 | 
	
		
			
				|  |  | +            bool skipIfGraphicalSubtitlesPresent,
 | 
	
		
			
				|  |  | +            bool skipIfAudioTrackMatches,
 | 
	
		
			
				|  |  |              string language,
 | 
	
		
			
				|  |  |              SubtitleMediaType mediaType,
 | 
	
		
			
				|  |  |              CancellationToken cancellationToken)
 | 
	
	
		
			
				|  | @@ -90,13 +92,14 @@ namespace MediaBrowser.Providers.MediaInfo
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // There's already an audio stream for this language
 | 
	
		
			
				|  |  | -            if (internalMediaStreams.Any(i => i.Type == MediaStreamType.Audio && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
 | 
	
		
			
				|  |  | +            if (skipIfAudioTrackMatches &&
 | 
	
		
			
				|  |  | +                internalMediaStreams.Any(i => i.Type == MediaStreamType.Audio && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  return false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // There's an internal subtitle stream for this language
 | 
	
		
			
				|  |  | -            if (!forceExternal &&
 | 
	
		
			
				|  |  | +            if (skipIfGraphicalSubtitlesPresent &&
 | 
	
		
			
				|  |  |                  internalMediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  return false;
 |