
    
3j              	          S SK r S SKrS SKrS SKrS SKJrJr  S SKrS SK	r	S SK
Jr  S SKJrJr  SSKJr  SSKJrJrJrJrJr  SS\S	\S
\S\4S jjrS\4S jrSS\S	\S
\S\4S jjrSS\S	\S
\S\4S jjr " S S5      r " S S5      rg)    N)ImageImageOps)FolderOfImages)common_upscaleProgressBar   )logger)BIGMAXcalculate_file_hash#get_sorted_dir_files_from_directoryvalidate_path
strip_path	directoryimage_load_capskip_first_imagesselect_every_nthc                 `   [         R                  R                  U 5      (       d  g[        XU[        R
                  5      nUS:w  a  US U n[        R                  " 5       nU H+  nUR                  [        U5      R                  5       5        M-     UR                  5       R                  5       $ )NFr   )ospathisdirr   r   IMG_EXTENSIONShashlibsha256updater   encodedigesthex)r   r   r   r   kwargs	dir_filesmfilepaths           h/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite/videohelpersuite/load_images_nodes.pyis_changed_load_imagesr#      s    77==##3IRbdr  eB  eB  CIo~.	A	$X.5578 88:>>    c                     [         R                  R                  U 5      (       d  SU  S3$ [         R                  " U 5      n[	        U5      S:X  a  SU  S3$ g)NDirectory 'z' cannot be found.r   No files in directory ''.T)r   r   r   listdirlen)r   r   s     r"   validate_load_imagesr+      sQ    77==## +=>>

9%I
9~(266r$   c              #     ^^^#    [         R                  R                  U 5      (       d  [        SU  S35      e[	        XU[
        R                  5      n[        U5      S:X  a  [        SU  S35      eUS:  a  US U n0 nSmU Hr  n[        R                  " U5      n	[        R                  " U	5      n	TSU	R                  5       ;   -  mUR                  U	R                  S5      n
U
S-   XyR                  '   Mt     [        UR!                  5       S	 S
9S   mTS   TS   T4v   Ub)  [#        U[        U5      5      =(       d    [        U5      v   T(       a  SOSmUUU4S jn[        U5      nSn[%        U5      n['        X5      n [)        U5      n [)        U5      nUv   US-  nUR+                  X5        UnM)  ! [,         a     Of = fUb"  UR.                  R1                  U5        SUl        Wb  Uv   g g 7f)Nr&   z cannot be found.r   r'   r(   FAr   c                     U S   $ )Nr    )xs    r"   <lambda>"images_generator.<locals>.<lambda>8   s    AaDr$   )keyRGBARGBc                   > [         R                  " U 5      n[        R                  " U5      nUR	                  T5      n[
        R                  " U[
        R                  S9n[        R                  " U5      R                  S5        UR                  S   TS   :w  d  UR                  S   TS   :w  ay  [        R                  " U5      R                  SS5      R                  S5      n[        UTS   TS   SS5      nUR                  S5      R                  SS5      R!                  5       nT(       a  SUS S 2S S 2S4   -
  US S 2S S 2S4'   U$ )N)dtype   r   r   lanczoscenter)r   openr   exif_transposeconvertnparrayfloat32torch
from_numpydiv_shapemovedim	unsqueezer   squeezenumpy)	file_pathi	has_alphaiformatsizes     r"   
load_image$images_generator.<locals>.load_image>   s   JJy!##A&IIgHHQbjj)  %771:a AGGAJ$q'$9  #++B2<<Q?Aq$q'47IxHA		!$$Q+113AAa"fIAa"fIr$   T)r   r   r   FileNotFoundErrorr   r   r   r*   r   r<   r   r=   getbandsgetrN   maxitemsminr   mapnextupdate_absoluteStopIterationinputspophas_closed_inputs)r   r   r   r   
meta_batch	unique_idr   sizes
image_pathrK   countrO   total_imagesprocessed_imagespbarimages
prev_image
next_imagerL   rM   rN   s                     @@@r"   images_generatorri   &   s    77==##+i[8I JKK3IRbdr  eB  eB  CI
9~"9)B GHHo~.	EI
JJz"##A&SAJJL((			!&&!$qff   u{{}.1!4D
q'47I
%%.#i.1CS^C!fuG y>L|$D*(F	&\
fJ!  !1@#J   i('+
$ s$   E?G85F: :
GG8G1G8c                    Ub  XTR                   ;  aT  [        XX#XE5      n[        U5      u  pxn	Ub5  XgX4UR                   U'   [        UR                  [        U5      5      Ul        OUR                   U   u  pgpUb   [
        R                  " XdR                  5      n[        R                  " [        R                  " U[        R                  " [        R                  XSU	-   445      5      5      n
U	(       a!  U
S S 2S S 2S S 2S4   nU
S S 2S S 2S S 2S S24   n
O6[        R                  " U
R                  S5      SS4[        R                  SS9n[!        U
5      S:X  a  [#        SU  S35      eXU
R                  S5      4$ )N   r   @   cpu)r7   devicez*No images could be loaded from directory 'r(   )r[   ri   rX   rV   total_frames	itertoolsisliceframes_per_batchrB   rC   r?   fromiterr7   rA   zerosrN   r*   rQ   )r   r   r   r   r^   r_   genwidthheightrL   rf   maskss               r"   load_imagesry   b   sU   Y.?.??y:K_iu%)#Y"	!,/+JJi(&)**A*A49&MJ#(2(9(9)(D%Fs$?$?@bkk#rxxfUVYbUbEc8d/efgFq1Qw!Abqb!V[[^R4EMMRWX
6{a"LYKWY Z[[&++a.((r$   c                   r    \ rS rSr\S 5       rSrSrSrSr	S\
4S jr\S\
4S	 j5       r\S\
4S
 j5       rSrg)LoadImagesFromDirectoryUploady   c           	         [         R                  " 5       n/ n[        R                  " U5       H_  n[        R                  R                  [        R                  R                  X5      5      (       a  MF  US:w  d  MN  UR                  U5        Ma     SU40SSS[        SS.4SSS[        SS.4SSS[        SS.4SS.S	S
0S.$ )N	clipspacer   INTr   r   defaultrV   rT   stepVHS_BatchManagerr   r   r   r^   r_   	UNIQUE_IDrequiredoptionalhidden)	folder_pathsget_input_directoryr   r)   r   isfilejoinappendr
   )s	input_dirdirectoriesitems       r"   INPUT_TYPES)LoadImagesFromDirectoryUpload.INPUT_TYPESz   s     446	JJy)D77>>"'',,y"?@@T[EX""4( *
 k^ $)a&Z[*\"]&+1V]^-_%`%*!F\],^$_3	 [
 	
r$   IMAGEMASKr   r   r   frame_country   #   Video Helper Suite 🎥🅥🅗🅢r   c                 X    [         R                  " [        U5      5      n[        U40 UD6$ N)r   get_annotated_filepathr   ry   selfr   r   s      r"   ry   )LoadImagesFromDirectoryUpload.load_images   s'     77
98MN	9///r$   c                 X    [         R                  " [        U5      5      n[        U40 UD6$ r   )r   r   r   r#   r   r   r   s      r"   
IS_CHANGED(LoadImagesFromDirectoryUpload.IS_CHANGED   s'     77
98MN	%i:6::r$   c                 V    [         R                  " [        U5      5      n[        U5      $ r   )r   r   r   r+   r   s      r"   VALIDATE_INPUTS-LoadImagesFromDirectoryUpload.VALIDATE_INPUTS   s"     77
98MN	#I..r$   r/   N__name__
__module____qualname____firstlineno__classmethodr   RETURN_TYPESRETURN_NAMESFUNCTIONCATEGORYstrry   r   r   __static_attributes__r/   r$   r"   r{   r{   y   sl    
 
* ,L3LH4H0S 0 ; ; ; /c / /r$   r{   c                   r    \ rS rSr\S 5       rSrSrSrSr	S\
4S jr\S\
4S	 j5       r\S\
4S
 j5       rSrg)LoadImagesFromDirectoryPath   c           	      l    SSS/ S.40SSS[         SS.4SSS[         SS.4SSS[         SS.4S	S
.SS0S.$ )Nr   STRINGzX://path/to/images)placeholdervhs_path_extensionsr   r   r   r   r   r   r_   r   r   )r
   )r   s    r"   r   'LoadImagesFromDirectoryPath.INPUT_TYPES   sp     h8Leg(hi $)a&Z[*\"]&+1V]^-_%`%*!F\],^$_3	 [
 	
r$   r   r   ry   r   r   c                 p    [        U5      nUb  [        U5      S:w  a  [        SU-   5      e[        U40 UD6$ )NTzdirectory is not valid: )r   r+   	Exceptionry   r   s      r"   ry   'LoadImagesFromDirectoryPath.load_images   s@    y)	 4Y ?4 G6BCC9///r$   c                 "    Uc  g[        U40 UD6$ )Ninput)r#   r   s      r"   r   &LoadImagesFromDirectoryPath.IS_CHANGED   s    %i:6::r$   c                 2    Uc  g[        [        U5      5      $ )NT)r+   r   r   s      r"   r   +LoadImagesFromDirectoryPath.VALIDATE_INPUTS   s    #Jy$9::r$   r/   Nr   r/   r$   r"   r   r      sl    
 
  ,L3LH4H0S 0 ; ; ;
 ;c ; ;r$   r   )r   r   r   )r   r   r   NN)r   r   rI   r?   rB   PILr   r   rp   r   comfy.k_diffusion.utilsr   comfy.utilsr   r   r	   utilsr
   r   r   r   r   r   intr#   r+   ri   ry   r{   r   r/   r$   r"   <module>r      s    	       2 3  n nc 3 WZ ru C 9 9S 9QT 9lo 9x)3 ) )C )gj ).)/ )/X); );r$   