          self.shape_model()
          landmarks = self.spatially_filter()
          landmarks = self.temporally_smooth(landmarks)
          self.update_alignments(landmarks)
          self.alignments.save_alignments()
  
          print("\nDone! To re-extract faces run:\n    python tools.py "
                "alignments -j extract -a {} -fr <path_to_frames_dir> -fc "
                "<output_folder>\n".format(self.arguments.alignments_file))
  
 
</s> remove         self.alignments.save_alignments()
 </s> add         self.alignments.save() </s> remove             if not self.alignments.frame_in_alignments(frame_name):
 </s> add             if not self.alignments.frame_exists(frame_name): </s> remove             if not self.alignments.frame_in_alignments(frame_name):
 </s> add             if not self.alignments.frame_exists(frame_name): </s> remove         extracted = self.extracted_faces
        size = extracted.size

        faces = extracted.get_faces_for_frame(frame)

        landmarks_xy = [alignment["landmarksXY"] for alignment in alignments]
        landmarks = [
            {"landmarksXY": aligned}
            for aligned
            in extracted.get_aligned_landmarks_for_frame(frame, landmarks_xy)]

        return FacesDisplay(faces, landmarks, size, self.interface)
 </s> add         faces = self.extracted_faces.get_faces_in_frame(frame)
        landmarks = [{"landmarksXY": face.aligned_landmarks}
                     for face in self.extracted_faces.faces]
        return FacesDisplay(faces,
                            landmarks,
                            self.extracted_faces.size,
                            self.interface) </s> remove         skip_faces = None
        if self.is_extract:
            skip_existing = bool(hasattr(self.args, 'skip_existing')
                                 and self.args.skip_existing)
            skip_faces = bool(hasattr(self.args, 'skip_faces')
                              and self.args.skip_faces)

            if not self.have_alignments_file:
                if skip_existing or skip_faces:
                    print("Skip Existing/Skip Faces selected, but no "
                          "alignments file found!")
                return data
            if not skip_existing and not skip_faces:
                return data
 </s> add         if not self.is_extract:
            data = super().load()
            return data

        skip_existing = bool(hasattr(self.args, 'skip_existing')
                             and self.args.skip_existing)
        skip_faces = bool(hasattr(self.args, 'skip_faces')
                          and self.args.skip_faces)

        if not skip_existing and not skip_faces:
            return data

        if not self.have_alignments_file and (skip_existing or skip_faces):
            print("Skip Existing/Skip Faces selected, but no alignments file "
                  "found!")
            return data
        self.alignments.save()
          self.shape_model()
          landmarks = self.spatially_filter()
          landmarks = self.temporally_smooth(landmarks)
          self.update_alignments(landmarks)
        self.alignments.save()
  
          print("\nDone! To re-extract faces run:\n    python tools.py "
                "alignments -j extract -a {} -fr <path_to_frames_dir> -fc "
                "<output_folder>\n".format(self.arguments.alignments_file))
  
keep keep keep keep replace keep keep keep keep keep
 Fix convert-adjust (#531)

* Add dimensions to alignments + refactor

* Add frame_dims + funcs to DetectFaces. Add alignments lib

* Convert Adjust working

* Refactor and tidy up 
tools/lib_alignments/jobs.py