          if self._update_type != "output":
              queue = args[0]
          for filename, image, hsh in tqdm(self._loader.load(), total=self._loader.count):
              if hsh not in self._alignments.hashes_to_frame:
                  self._skip_count += 1
                  logger.warning("Skipping face not in alignments file: '%s'", filename)
                  continue
  
              frames = self._alignments.hashes_to_frame[hsh]
              if len(frames) > 1:
 
</s> remove                 self._skip_count += 1
 </s> add                 self._counts["skip"] += 1 </s> remove                     self._update_count += 1
 </s> add                     self._counts["update"] += 1 </s> remove                 self._face_count += 1
 </s> add                 self._counts["face"] += 1 </s> remove                 logger.debug("Image not loaded: '%s'", filename)
 </s> add                 logger.warning("Frame not loaded: '%s'", filename) </s> remove         if self._skip_count != 0:
 </s> add         if self._counts["skip"] != 0:
                self._counts["skip"] += 1
          if self._update_type != "output":
              queue = args[0]
          for filename, image, hsh in tqdm(self._loader.load(), total=self._loader.count):
              if hsh not in self._alignments.hashes_to_frame:
                self._counts["skip"] += 1
                  logger.warning("Skipping face not in alignments file: '%s'", filename)
                  continue
  
              frames = self._alignments.hashes_to_frame[hsh]
              if len(frames) > 1:
keep keep keep keep replace keep keep keep keep keep
 Core Update (#995)

* lib.alignments - Add Video Meta Data methods

* lib.image - Monkey Path ImageIO for video scanning 
tools/mask/mask.py