code: def download(self, force=False, silent=False):
          
          def _download():
              if self.url.startswith("http"):
                  self._download_http(silent=silent)
              elif self.url.startswith("ftp"):
                  self._download_ftp(silent=silent)
              else:
                  raise ValueError("Invalid URL %s" % self.url)
              logger.debug("Moving %s to %s" % (
                  self._temp_file_name,
                  self.destination))
              shutil.move(self._temp_file_name, self.destination)
              logger.debug("Successfully downloaded %s" % self.url)
  
          try:
              is_already_downloaded = os.path.isfile(self.destination)
              if is_already_downloaded:
                  if force:
                      try:
                          os.remove(self.destination)
                      except Exception:
                          logger.error("Cannot delete %s" % self.destination)
                      logger.info(
                          "Downloading %s to %s" % (self.url, self.destination))
                      logger.debug(
                          "Downloading %s to %s" % (self.url,
                                                    self._temp_file_name))
                      _download()
                  else:
                      logger.info(("File %s already exist. Use force=True if you"
                                   " would like to overwrite it.") %
                                  self.destination)
              else:
                  _download()
          finally:
              try:
                  os.remove(self._temp_file_name)
              except OSError:
                  pass
docs: Download from URL.