                                  "--timelapse-output).")
  
          kwargs = {"input_a": self._args.timelapse_input_a,
                    "input_b": self._args.timelapse_input_b,
                    "output": timelapse_output}
          logger.debug("Timelapse enabled: %s", kwargs)
 
</s> remove         if not self._args.timelapse_input_a or not self._args.timelapse_input_b:
            raise ValueError("To enable the timelapse, you have to supply "
                             "all the parameters (--timelapse-input-A and "
                             "--timelapse-input-B).")

        timelapse_output = None
        if self._args.timelapse_output is not None:
            timelapse_output = str(get_folder(self._args.timelapse_output))

        for folder in (self._args.timelapse_input_a,
                       self._args.timelapse_input_b,
                       timelapse_output):
            if folder is not None and not os.path.isdir(folder):
                raise ValueError("The Timelapse path '{}' does not exist".format(folder))
 </s> add         if (not self._args.timelapse_input_a or
                not self._args.timelapse_input_b or
                not self._args.timelapse_output):
            raise FaceswapError("To enable the timelapse, you have to supply all the parameters "
                                "(--timelapse-input-A, --timelapse-input-B and "
                                "--timelapse-output).") </s> remove                        for filename in self._images.input_images]
 </s> add                        for filename in self._images.file_list] </s> remove             file_list = [path for path in get_image_paths(input_aligned_dir)]
 </s> add             file_list = get_image_paths(input_aligned_dir) </s> remove         # Set executable based on whether previewing or not
        if self.args.preview and self.args.action in self._actions_can_preview:
            self.exe = 'ffplay'
            self.output = DataItem()

 </s> add  </s> remove     _actions_can_preview = ["gen_vid", "mux_audio", "rescale", "rotate",
                            "slice"]
 </s> add 
        timelapse_output = str(get_folder(self._args.timelapse_output))

        for folder in (self._args.timelapse_input_a, self._args.timelapse_input_b):
            if folder is not None and not os.path.isdir(folder):
                raise FaceswapError("The Timelapse path '{}' does not exist".format(folder))
            exts = [os.path.splitext(fname)[-1] for fname in os.listdir(folder)]
            if not any(ext in _image_extensions for ext in exts):
                raise FaceswapError("The Timelapse path '{}' does not contain any valid "
                                    "images".format(folder))
                                  "--timelapse-output).")
  
        timelapse_output = str(get_folder(self._args.timelapse_output))

        for folder in (self._args.timelapse_input_a, self._args.timelapse_input_b):
            if folder is not None and not os.path.isdir(folder):
                raise FaceswapError("The Timelapse path '{}' does not exist".format(folder))
            exts = [os.path.splitext(fname)[-1] for fname in os.listdir(folder)]
            if not any(ext in _image_extensions for ext in exts):
                raise FaceswapError("The Timelapse path '{}' does not contain any valid "
                                    "images".format(folder))
          kwargs = {"input_a": self._args.timelapse_input_a,
                    "input_b": self._args.timelapse_input_b,
                    "output": timelapse_output}
          logger.debug("Timelapse enabled: %s", kwargs)
keep add keep keep keep keep
 Bugfixes and minor updates:
  - Remove preview option from effmpeg tool
  - Remove json filetypes from GUI for alignments files
  - Capture and raise empty timelapse folder errors
  - Move convert to use centralized ImagesLoader 
scripts/train.py