<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run(self):
 """ Download the contents of the specified project name or id to dest_directory. """

        files_to_download = self.get_files_to_download()
        total_files_size = self.get_total_files_size(files_to_download)
        if self.file_download_pre_processor:
            self.run_preprocessor(files_to_download)

        self.try_create_dir(self.dest_directory)
        watcher = ProgressPrinter(total_files_size, msg_verb='downloading')
        self.download_files(files_to_download, watcher)
        watcher.finished()

        warnings = self.check_warnings()
        if warnings:
            watcher.show_warning(warnings)