code: def run(self):
      end = (
          float("inf")
          if self.opt["seconds"] <= 0
          else self.opt["seconds"]
      )
      i = 0
      timespent = 0
      while True:
          try:
              frame = FRAMES[i % len(FRAMES)]
              color = COLORS[i % len(COLORS)]
              i += 1
              sys.stdout.write(CLEAR_SCREEN)
              sys.stdout.write(color)
              sys.stdout.write("\n\n    ")
              sys.stdout.write(frame.replace("\n", "\n    "))
              sys.stdout.write(COLORS[(i * 3 + 1) % len(COLORS)])
              sys.stdout.write(
                  "\n\n              P A R T Y    P A R R O T\n"
              )
              sys.stdout.write(RESET)
              time.sleep(DELAY)
              timespent += DELAY
              if timespent > end:
                  raise KeyboardInterrupt
          except KeyboardInterrupt:
              break
      sys.stdout.write(RESET + "\n")
  
file_path: ParlAI/parlai/scripts/party.py
imports: import sys
  import time
  from parlai.core.script import ParlaiScript, register_script
  from parlai.core.params import ParlaiParser
label_desc: Use image node_id 2 for calling the Party obj's underlying member method code with example usage: obj.run() without return types