docs: def prepare_project(project, project_dir, binaries, ips, urls):
      """
      Generates blacklists / whitelists
      """
  
      # Get Various Lists / Project Waivers
      lists = get_lists.GetLists()
  
      # Get file name black list and project waivers
      file_audit_list, file_audit_project_list = lists.file_audit_list(project)
  
      # Get file content black list and project waivers
      flag_list, ignore_list = lists.file_content_list(project)
  
      # Get File Ignore Lists
      file_ignore = lists.file_ignore()
  
      ignore_directories = lists.ignore_directories(project)
  
      # Get URL Ignore Lists
      url_ignore = lists.url_ignore(project)
  
      # Get IP Ignore Lists
      ip_ignore = lists.ip_ignore(project)
  
      # Get Binary Ignore Lists
      hashlist = get_lists.GetLists()
  
      if binaries or ips or urls:
          try:
              apikey = os.environ["VT_KEY"]
          except KeyError:
              logger.error("Please set your virustotal.com API key as an environment variable")
              sys.exit(1)
          try:
              vt_rate_type = config.get('config', 'vt_rate_type')
          except six.moves.configparser.NoSectionError:
              logger.error("A config section is required for vt_rate_type with a public | private option")
              sys.exit(1)
  
          patten = re.compile(r'\bpublic\b|\bprivate\b')
          if not patten.match(vt_rate_type):
              logger.error("Unrecognized %s option for vt_rate_type", vt_rate_type)
              sys.exit(1)
  
      # Perform rudimentary scans
      scan_file(project, project_dir, binaries, ips, urls, file_audit_list,
                file_audit_project_list, flag_list, ignore_list, hashlist,
                file_ignore, ignore_directories, url_ignore, ip_ignore, apikey)