code: def download_file_and_uncompress(
      self, url: str, save_path: str, print_progress: bool
  ):
      with utils.generate_tempdir() as _dir:
          if print_progress:
              with log.ProgressBar("Download {}".format(url)) as bar:
                  for path, ds, ts in utils.download_with_progress(
                      url=url, path=_dir
                  ):
                      bar.update(float(ds) / ts)
          else:
              path = utils.download(url=url, path=_dir)
  
          if print_progress:
              with log.ProgressBar("Decompress {}".format(path)) as bar:
                  for path, ds, ts in xarfile.unarchive_with_progress(
                      name=path, path=save_path
                  ):
                      bar.update(float(ds) / ts)
          else:
              path = xarfile.unarchive(name=path, path=save_path)
  
file_path: PaddleHub/paddlehub/utils/download.py
imports: import os
  import filelock
  import paddlehub.env
  from paddle.utils.download import get_path_from_url
  from paddlehub.utils import log, utils, xarfile
label_desc: Use image node_id 1 for calling the Downloader obj's underlying member method code with example usage: obj.download_file_and_uncompress(url, save_path, print_progress) without return types