docs: def get_lyrics(song, l_sources=None):
      """
      Searches for lyrics of a single song and returns a Result object with the
      various stats collected in the process.
  
      The optional parameter 'sources' specifies an alternative list of sources.
      If not present, the main list will be used.
      """
      if l_sources is None:
          l_sources = sources
  
      if song.lyrics and not CONFIG['overwrite']:
          logger.debug('%s already has embedded lyrics', song)
          return None
  
      runtimes = {}
      source = None
      for l_source in l_sources:
          start = time.time()
          try:
              lyrics = l_source(song)
          except (HTTPError, HTTPException, URLError, ConnectionError):
              lyrics = ''
  
          runtimes[l_source] = time.time() - start
          if lyrics != '':
              source = l_source
              break
  
      if lyrics != '':
          logger.info('++ %s: Found lyrics for %s\n', source.__name__, song)
          song.lyrics = lyrics
      else:
          logger.info("Couldn't find lyrics for %s\n", song)
          source = None
  
      return Result(song, source, runtimes)