code: async def search_and_download(album, artist, format, size, out_filepath, *, size_tolerance_prct, amazon_tlds, no_lq_sources,
                                async_loop):
    
    # register sources
    source_args = (size, size_tolerance_prct)
    cover_sources = [sources.LastFmCoverSource(*source_args),
                     sources.AmazonCdCoverSource(*source_args),
                     sources.AmazonDigitalCoverSource(*source_args)]
    for tld in amazon_tlds:
      cover_sources.append(sources.AmazonCdCoverSource(*source_args, tld=tld))
    if not no_lq_sources:
      cover_sources.append(sources.GoogleImagesWebScrapeCoverSource(*source_args))
  
    # schedule search work
    search_futures = []
    for cover_source in cover_sources:
      coroutine = cover_source.search(album, artist)
      future = asyncio.ensure_future(coroutine, loop=async_loop)
      search_futures.append(future)
  
    # wait for it
    await asyncio.wait(search_futures, loop=async_loop)
  
    # get results
    results = []
    for future in search_futures:
      source_results = future.result()
      results.extend(source_results)
  
    # sort results
    results = await CoverSourceResult.preProcessForComparison(results, size, size_tolerance_prct)
    results.sort(reverse=True,
                 key=functools.cmp_to_key(functools.partial(CoverSourceResult.compare,
                                                            target_size=size,
                                                            size_tolerance_prct=size_tolerance_prct)))
    if not results:
      logging.getLogger("Main").info("No results")
  
    # download
    for result in results:
      try:
        await result.get(format, size, size_tolerance_prct, out_filepath)
      except Exception as e:
        logging.getLogger("Main").warning("Download of %s failed: %s %s" % (result,
                                                                            e.__class__.__qualname__,
                                                                            e))
        continue
      else:
        return True
  
    return False
docs: Search and download a cover, return True if success, False instead.