code: def _download_and_extract(self, key, url, download_folder):
      file_type = key.split("_")[0]
      os.makedirs(download_folder, exist_ok=True)
      local_filename = url.split("/")[-1]
      extraction_folder = os.path.join(
          download_folder, local_filename.split(".")[0]
      )
      local_filename = os.path.join(download_folder, local_filename)
  
      if (
          os.path.exists(local_filename)
          or (
              os.path.exists(extraction_folder)
              and len(os.listdir(extraction_folder))
          )
          != 0
      ):
          logger.info(
              f"{self.dataset_proper_name} {file_type} already present. "
              + "Skipping download."
          )
          return extraction_folder
  
      logger.info(
          f"Downloading the {self.dataset_proper_name} {file_type} now."
      )
      download(url, download_folder, url.split("/")[-1])
  
      logger.info(
          f"Extracting the {self.dataset_proper_name} {file_type} now. "
          + "This may take time"
      )
      decompress(download_folder, url.split("/")[-1])
  
      return extraction_folder
  
file_path: mmf/mmf/datasets/builders/visual_genome/builder.py
imports: import logging
  import os
  import shutil
  from mmf.common.constants import VISUAL_GENOME_CONSTS
  from mmf.common.registry import registry
  from mmf.datasets.builders.visual_genome.dataset import VisualGenomeDataset
  from mmf.datasets.builders.vqa2.builder import VQA2Builder
  from mmf.utils.download import decompress, download
  from mmf.utils.general import get_mmf_root
label_desc: Use image node_id 6 for calling the VisualGenomeBuilder obj's underlying member method code with example usage: obj._download_and_extract(key, url, download_folder) and returns: extraction_folder, extraction_folder