  
      def load_dfl(self):
          """ Load alignments from DeepFaceLab and format for Faceswap """
          alignments = dict()
          for face in self.faces.file_list_sorted:
              if face["face_extension"] != ".png":
                  logger.verbose("'%s' is not a png. Skipping", face["face_fullname"])
                  continue
  
              fullpath = os.path.join(self.faces.folder, face["face_fullname"])
 
</s> remove 
 </s> add             f_hash = face["face_hash"] </s> remove             self.alignments.file = self.alignments.get_location(
                self.faces.folder,
                "alignments")
 </s> add             self.alignments.file = self.alignments.get_location(self.faces.folder, "alignments") </s> remove         for face in tqdm(self.items, total=len(self.items)):
            frame = self.alignments.get_full_frame_name(face["frame_name"])
            alignment_faces = self.alignments.count_faces_in_frame(frame)

            if alignment_faces <= face["face_index"]:
 </s> add         for face in tqdm(self.items, desc=self.output_message):
            f_hash = face["face_hash"]
            if not self.alignments.hashes_to_frame.get(f_hash, None):
                logger.debug("Returning: '%s'", face["face_fullname"]) </s> remove             index = 0
            original_file = ""
            if not self.dfl:
                index = int(filename[filename.rindex("_") + 1:])
                original_file = "{}".format(filename[:filename.rindex("_")])
            yield {"face_fullname": face,
                   "face_name": filename,
                   "face_extension": file_extension,
                   "frame_name": original_file,
                   "face_index": index}
 </s> add             face_hash = hash_image_file(os.path.join(self.folder, face))
            retval = {"face_fullname": face,
                      "face_name": filename,
                      "face_extension": file_extension,
                      "face_hash": face_hash}
            logger.trace(retval)
            yield retval </s> remove     def convert_dfl_alignment(dfl_alignments, alignments):
 </s> add     def convert_dfl_alignment(dfl_alignments, f_hash, alignments):
        for face in tqdm(self.faces.file_list_sorted, desc="Converting DFL Faces"):
  
      def load_dfl(self):
          """ Load alignments from DeepFaceLab and format for Faceswap """
          alignments = dict()
        for face in tqdm(self.faces.file_list_sorted, desc="Converting DFL Faces"):
              if face["face_extension"] != ".png":
                  logger.verbose("'%s' is not a png. Skipping", face["face_fullname"])
                  continue
  
              fullpath = os.path.join(self.faces.folder, face["face_fullname"])
keep keep keep keep replace keep keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
tools/lib_alignments/jobs.py