code: def get_file_list(self, prefix, filter=None):
      def traverse(directory, files, directories):
          url = f"{self.URL_ROOT}/{directory}"
          response = urllib.request.urlopen(url).read().decode()
          paths = re.findall('<a href="(.+?)"', response)
          for path in paths:
              path = re.sub(f"^{re.escape(url)}", "", path)
              if path == "../":
                  continue
              resolved_path = f"{directory}{path}"
              if filter and not filter(path):
                  continue
              if path.endswith("/"):
                  directories.append(resolved_path)
              else:
                  files.append(resolved_path)
  
      files = []
      if prefix != "" and not prefix.endswith("/"):
          prefix += "/"
      directories = [prefix]
      while len(directories) > 0:
          directory = directories.pop()
          traverse(directory, files, directories)
      return files
  
imports: import argparse
  import concurrent.futures
  import functools
  import json
  import os
  import random
  import re
  import subprocess
  import time
  import urllib.request
label_desc: Use image node_id 1 for calling the Downloader obj's underlying member method code with example usage: obj.get_file_list(prefix, filter) and returns: files