
    ᨽg                         d dl Z d dlZd dlZd dlZd dlmZ d dlZddlm	Z	m
Z
  e j                  d      Zd Z e       d        Zd Zdd	Zd
 Zd Zy)    N)	lru_cache   )FNAME_PER_PLATFORMget_platformimageio_ffmpegc                  h    t        j                  dd      } | r| S t               } | r| S t        d      )a=  
    Get the ffmpeg executable file. This can be the binary defined by
    the IMAGEIO_FFMPEG_EXE environment variable, the binary distributed
    with imageio-ffmpeg, an ffmpeg binary installed with conda, or the
    system ffmpeg (in that order). A RuntimeError is raised if no valid
    ffmpeg could be found.
    IMAGEIO_FFMPEG_EXENzpNo ffmpeg exe could be found. Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.)osgetenv_get_ffmpeg_exeRuntimeError)exes    ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/imageio_ffmpeg/_utils.pyget_ffmpeg_exer      sC     ))($
/C

 
C

 	>     c                  H   t               } t        j                  j                  t	               t        j                  | d            }|r,t        j                  j                  |      rt        |      r|S | j                  d      r1t        j                  j                  t        j                  ddd      }n/t        j                  j                  t        j                  dd      }|r,t        j                  j                  |      rt        |      r|S d}t        |      r|S y )N winLibrarybinz
ffmpeg.exeffmpeg)r   r
   pathjoin_get_bin_dirr   getisfile_is_valid_exe
startswithsysprefix)platr   s     r   r   r   '   s    >D '',,|~'9'='=dB'G
HC
rww~~c"}S'9
 uggll3::y%Fggll3::uh7
rww~~c"}S'9
 CS
r   c                  F   t         j                  dk  r!t        j                  j	                  dd      } nAt        j                  j                  d      dz  }t        j                  j                  |      } | 5 }	 d d d        t        j                        S # 1 sw Y   xY w)N)   	   zimageio_ffmpeg.binariesz__init__.py)	r   version_info	importlib	resourcesr   filesas_filestrparent)contextrefr   s      r   r   r   A   s    
& %%**+DmT!!''(AB]R%%--c2	 D t{{ s   8BB c                    d }d }d}t         j                  j                  d      r7t        j                         }|xj
                  t        j                  z  c_        | r2t         j                  j                  d      rd}nt        j                  }d}t        j                  dd      j                         |vrd }|||dS )Nr   r   i   )r   0falseno IMAGEIO_FFMPEG_NO_PREVENT_SIGINTr   )startupinfocreationflags
preexec_fn)r   platformr   
subprocessSTARTUPINFOdwFlagsSTARTF_USESHOWWINDOWr
   setpgrpr   lower)prevent_sigintr3   r5   r4   falsys        r   _popen_kwargsr?   M   s    KJM
||u% ,,.z>>> <<""5)&MJ$E	yy3R8>>@M
 #&  r   c                    | dg}	 t        t        j                  d      5 }t        j                  |f|t        j
                  dt                d d d        y# 1 sw Y   yxY w# t        t        t        j                  f$ r Y yw xY w)N-versionw)stdoutstderrTF)
openr
   devnullr7   
check_callSTDOUTr?   OSError
ValueErrorCalledProcessError)r   cmdnulls      r   r   r   i   s    

C"**c" 	d!! ):):>Ko	 		 Z!>!>? s.   A% 0AA% A"A% "A% %BBc                  H   t               } t        j                  | dgfi t               j	                  dd      d   }|j                  d      j                         }|j	                  dd      d   j                         j	                  d	d      d   j                         }|S )
zF
    Get the version of the used ffmpeg executable (as a string).
    rA      
r   r   ignore)errorsversion )r   r7   check_outputr?   splitdecodestriplstrip)r   linerR   s      r   get_ffmpeg_versionr[   u   s     
C""C#4HHNNq	D ;;h;'--/DjjA&r*11399#qA!DJJLGNr   )F)loggingr
   r7   r   	functoolsr   importlib.resourcesr&   _definitionsr   r   	getLoggerloggerr   r   r   r?   r   r[    r   r   <module>rc      s\     	  
   :			+	,4  2	8	
r   