                  continue
              filename = os.path.splitext(frame)[0]
              file_extension = os.path.splitext(frame)[1]
  
              yield {"frame_fullname": frame,
                     "frame_name": filename,
                     "frame_extension": file_extension}
  
      def load_items(self):
          """ Load the frame info into dictionary """
          frames = dict()
          for frame in self.file_list_sorted:
 
</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         for face in self.faces.file_list_sorted:
 </s> add         for face in tqdm(self.faces.file_list_sorted, desc="Converting DFL Faces"): </s> remove     def process_faces(self, filename, faces, save_queue):
        """ Perform processing on found faces """
 </s> add     def output_faces(self, filename, faces, save_queue):
        """ Output faces to save thread """ </s> remove         for frame in tqdm(self.alignments.data.keys(),
                          total=len(self.alignments.frames_count)):
 </s> add         for frame in tqdm(self.alignments.data.keys(), desc=self.output_message): </s> remove         filename = faces["filename"]

 </s> add 
            retval = {"frame_fullname": frame,
                      "frame_name": filename,
                      "frame_extension": file_extension}
            logger.trace(retval)
            yield retval
                  continue
              filename = os.path.splitext(frame)[0]
              file_extension = os.path.splitext(frame)[1]
  
            retval = {"frame_fullname": frame,
                      "frame_name": filename,
                      "frame_extension": file_extension}
            logger.trace(retval)
            yield retval
            retval = {"frame_fullname": frame,
                      "frame_name": filename,
                      "frame_extension": file_extension}
            logger.trace(retval)
            yield retval
            retval = {"frame_fullname": frame,
                      "frame_name": filename,
                      "frame_extension": file_extension}
            logger.trace(retval)
            yield retval
  
      def load_items(self):
          """ Load the frame info into dictionary """
          frames = dict()
          for frame in self.file_list_sorted:
keep keep keep keep replace replace 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/media.py