code: def list_subtitles(videos, languages, pool_class=ProviderPool, **kwargs):
      
      listed_subtitles = defaultdict(list)
  
      # check videos
      checked_videos = []
      for video in videos:
          if not check_video(video, languages=languages):
              logger.info('Skipping video %r', video)
              continue
          checked_videos.append(video)
  
      # return immediately if no video passed the checks
      if not checked_videos:
          return listed_subtitles
  
      # list subtitles
      with pool_class(**kwargs) as pool:
          for video in checked_videos:
              logger.info('Listing subtitles for %r', video)
              subtitles = pool.list_subtitles(video, languages - video.subtitle_languages)
              listed_subtitles[video].extend(subtitles)
              logger.info('Found %d subtitle(s)', len(subtitles))
  
      return listed_subtitles
docs: List subtitles.
  
      The `videos` must pass the `languages` check of :func:`check_video`.
  
      :param videos: videos to list subtitles for.
      :type videos: set of :class:`~subliminal.video.Video`
      :param languages: languages to search for.
      :type languages: set of :class:`~babelfish.language.Language`
      :param pool_class: class to use as provider pool.
      :type pool_class: :class:`ProviderPool`, :class:`AsyncProviderPool` or similar
      :param \*\*kwargs: additional parameters for the provided `pool_class` constructor.
      :return: found subtitles per video.
      :rtype: dict of :class:`~subliminal.video.Video` to list of :class:`~subliminal.subtitle.Subtitle`