Ë
    °È„j%"  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dl
mZ d dl
mZ d dl
mZ d dlmZ d	d
lmZ d	dlmZ d	dlmZ d	dlmZ d	dlmZ d	dlmZ d	dlmZ 	 	 d#dee   dedeeef   deee      deeeef      f
d„Z	 	 d#dee   dee   deee      dee   fd„Z	 	 	 d$dedee   dee   deeef   deee      deeeef      dedee   fd„Zdee   fd „Zdee   fd!„Z deeef   dee   fd"„Z!y)%é    N)ÚJSONDecodeError)Úloads)ÚDict)ÚList)ÚOptional)ÚUnion)ÚFFmpegErroré   )ÚImageSourceFound)ÚInvalidVideoProportion)ÚLiveStreamFound)ÚNoAudioSourceFound)ÚNoVideoSourceFound)ÚAudioParameters)ÚVideoParametersÚffmpeg_parametersÚpathÚstream_parametersÚbefore_commandsÚheadersc              ƒ   óº  K  — 	 t        j                  t        t        d| ||||d«      «      ƒ d {  –—† t         j                  j
                  t         j                  j
                  dœŽƒ d {  –—† }	 t        j                  |j                  «       d¬«      ƒ d {  –—† \  }}t        |j                  d«      «      xs i }|j                  dg «      }	|j                  d	g «      }
d
|j                  d«      v r
t        «       ‚	 d}d}d}d}d\  }}|	D ]  }|j                  dd«      }|j                  dd«      }g d¢}|dk(  rH|||v z  }d}t!        |j                  dd«      «      }t!        |j                  dd«      «      }|sŒr|sŒud}Œx|dk(  sŒ~d}Œ� t#        |t$        «      r»|st'        |«      ‚|st)        d«      ‚t+        |«      |z  }t-        ||j.                  «      }t!        ||z  «      }||j0                  kD  r&|j2                  r|j0                  }t!        ||z  «      }|dz  r|dz
  n|}|dz  r|dz
  n|}||_        ||_        |rd|_        t7        |«      ‚t#        |t8        «      r|st;        |«      ‚d|
vrt=        |«      ‚y 7 �Œ\7 �Œ"# t        $ r t        d«      ‚w xY w7 �Œ# t        j                  t        f$ r |j                  «        ‚ w xY w­w)NÚffprobeF©ÚstdoutÚstderrzffprobe not installedé   ©Útimeoutúutf-8ÚstreamsÚformatzNo such fileT)r   r   Ú
codec_typeÚ Ú
codec_name)ÚpngÚjpegÚjpgÚmjpegÚvideoÚwidthr   ÚheightÚaudiozVideo proportion not foundé   r
   é
   Úduration)ÚasyncioÚcreate_subprocess_execÚcleanup_commandsÚbuild_commandÚ
subprocessÚPIPEÚFileNotFoundErrorr	   Úwait_forÚcommunicater   ÚdecodeÚgetÚTimeoutExpiredr   ÚkillÚintÚ
isinstancer   r   r   ÚfloatÚminr*   r+   Úadjust_by_heightÚ
frame_rater   r   r   r   )r   r   r   r   r   r   r   r   ÚresultÚstream_listÚformat_contentÚ
have_videoÚis_imageÚ
have_audioÚhave_valid_videoÚoriginal_widthÚoriginal_heightÚstreamr"   r$   Úimage_codecsÚratioÚnew_wÚnew_hs                           úG/var/www/html/GAP/venv/lib/python3.12/site-packages/pytgcalls/ffmpeg.pyÚcheck_streamrR      s  è ø€ ð3Ü×6Ñ6Ü#ÜØØ%ØØ%Ø#ØØóó
÷ 
ô ×%Ñ%×*Ñ*Ü×%Ñ%×*Ñ*ò
÷ 
ˆð$Ü&×/Ñ/Ø×ÑÓ!Øô 
÷ 
‰ˆ�ô �v—}‘} WÓ-Ó.Ò4°"ˆØ—j‘j ¨BÓ/ˆØŸ™ H¨bÓ1ˆØ˜VŸ]™]¨7Ó3Ñ3Ü#Ó%Ð%ð 4ð €JØ€HØ€JØÐà&*Ñ#€N�Oàò ˆØ—Z‘Z ¨bÓ1ˆ
Ø—Z‘Z ¨bÓ1ˆ
Ú6ˆØ˜Ò Ø˜
 lÐ2Ñ2ˆHØˆJÜ  §¡¨G°QÓ!7Ó8ˆNÜ! &§*¡*¨X°qÓ"9Ó:ˆOÚ¢>Ø#'Ñ Ø˜7Ó"Ø‰Jðô Ð#¤_Ô5ÙÜ$ TÓ*Ð*ÙÜ(Ø,óð ô �nÓ%¨Ñ7ˆÜ�NÐ$5×$;Ñ$;Ó<ˆÜ�E˜E‘MÓ"ˆð Ð%×,Ñ,Ò,Ø×.Ò.à%×,Ñ,ˆEÜ˜ ™Ó&ˆEà" QšY�˜’	¨EˆØ" QšY�˜’	¨EˆØ#(ÐÔ Ø"'ÐÔÙØ+-ÐÔ(Ü" 4Ó(Ð(äÐ#¤_Ô5¹jÜ  Ó&Ð&à˜Ñ'Ü˜dÓ#Ð#ð (ðe
ùð
úô ò 3ÜÐ1Ó2Ð2ð3úð
úô ×%Ñ%¤Ð7ò Ø�‰ŒØðüsw   ‚K„,J °J±<J Á-JÁ.J Á3(J- ÂJ*ÂA&J- ÄBKÆKÆKÆC<KÊJ ÊJ ÊJ'Ê'KÊ*J- Ê-+KËKÚcommandsÚprocess_nameÚ	blacklistÚreturnc              ƒ   óª  K  — 	 t        j                  |s| d   n|ddt         j                  j                  t         j                  j                  ¬«      ƒ d {  –—† }	 t        j                  |j                  «       d¬«      ƒ d {  –—† \  }}|j                  d«      }t        j                  d|«      }|d	gz  }g }d
}	| D ]=  }
t        |
«      dkD  sŒ|
d   dk(  r|
|vxs
 |d uxr |
|v }	|	s||
gz  }Œ3|
d   dk7  sŒ<d
}	Œ? |S 7 Œª7 Œ~# t        j                  t        f$ r |j                  «        ‚ w xY w# t        $ r t        | d   › d�«      ‚w xY w­w)Nr   z-hÚfullr   r   r   r   z(?m)^ *(-\w+).*?\s+ú-iFú-z not installed)r0   r1   r4   r5   r7   r8   r9   r;   r   r<   ÚreÚfindallÚlenr6   r	   )rS   rT   rU   Úproc_resr   Ú_rC   Ú	supportedÚnew_commandsÚignore_nextÚvs              rQ   r2   r2   x   s  è ø€ ð
":Ü ×7Ñ7Ù+ˆH�QŠK°ØØÜ×%Ñ%×*Ñ*Ü×%Ñ%×*Ñ*ô
÷ 
ˆð	Ü%×.Ñ.Ø×$Ñ$Ó&Øô÷ ‰IˆF�Að —]‘] 7Ó+ˆFô —J‘JÐ5°vÓ>ˆ	Ø�d�VÑˆ	ØˆØˆàò 		(ˆAÜ�1‹v˜‹zØ�Q‘4˜3’;Ø"#¨9Ð"4ò #AØ!¨Ð-Ò@°!°y°.ð  ñ #Ø  Q CÑ'‘LØ�q‘T˜S“[Ø"'‘Kð		(ð Ðð?
øðùô
 ×)Ñ)¬?Ð;ò 	Ø�M‰MŒOØð	ûô& ò :Ü˜X a™[˜M¨Ð8Ó9Ð9ð:üse   ‚E„AD5 ÁDÁD5 Á(D ÂDÂD Â3D5 Ã)D5 Ã=D5 ÄEÄD5 ÄD Ä+D2Ä2D5 Ä5EÅEÚnameÚis_livestreamc                 óæ  — |sg S t        |«      }t        |t        «      r|d   }n|d   }| g}||d   z  }t        j                  j                  |«      s|s| dk(  r|g d¢z  }| dk(  r|g d¢z  }|r||z  }|�1|D ],  }	|j                  d«       |j                  |	› d	||	   › �«       Œ. |d
| dk(  r|› n|gz  }||d   z  }| dk(  r|t        |«      z  }||d   z  }| dk(  r|j                  d«       |S )Nr)   r,   ÚstartÚffmpeg)z
-reconnectÚ1z-reconnect_at_eofri   z-reconnect_streamedri   z-reconnect_delay_maxÚ2r   )ú-vÚerrorz-show_entriesz)stream=width,height,codec_type,codec_namez-show_formatz-ofÚjsonz-headersz: rY   ÚmidÚendzpipe:1)Ú_get_stream_paramsr>   r   Úosr   ÚexistsÚappendÚ_build_ffmpeg_options)
rd   r   r   r   r   r   re   ÚcommandÚffmpeg_commandÚis
             rQ   r3   r3   ¢   sS  € ñ Øˆ	Ü Ð!2Ó3€GäÐ#¤_Ô5Ø˜'Ñ"‰à˜'Ñ"ˆà ˜6€Nà�g˜gÑ&Ñ&€Nä�7‰7�>‰>˜$ÔÙ!Ø˜Ò Øò 	
ñ 		
ˆð ˆyÒØò 
ñ 	
ˆñ Ø˜/Ñ)ˆàÐØò 	8ˆAØ×!Ñ! *Ô-Ø×!Ñ! Q C r¨'°!©*¨Ð"6Õ7ð	8ð ØØ˜XÒ%ˆ4‰&¨4ðñ €Nð �g˜e‘nÑ$€NàˆxÒØÔ/Ð0AÓBÑBˆà�g˜e‘nÑ$€NØˆxÒØ×Ñ˜hÔ'àÐó    ru   c                 óh  — g d¢}|D �ci c]  }|g “Œ }}|d   }| r:t        j                  | «      D ]"  }|dd  }||v r|}Œ||   j                  |«       Œ$ |D � ci c]  } | t        ||    «      “Œ }} |dd  D ](  }||d      D ]  }||   |xx   ||d      |   z  cc<   Œ Œ* ||d   = |S c c}w c c} w )N)Úbaser,   r)   r   r-   r
   )ÚshlexÚsplitrs   Ú_extract_stream_params)ru   Ú	arg_namesÚargÚcommand_argsÚcurrent_argÚpartÚarg_nameÚxs           rQ   rp   rp   é   s  € Ú*€IØ-6Ö7 c˜#˜r™'Ð7€LÐ7Ø˜A‘,€KáÜ—K‘K Ó(ò 	7ˆDØ˜A˜B�xˆHØ˜9Ñ$Ø&‘à˜[Ñ)×0Ñ0°Õ6ð	7ð $öàð 	Ô'¨°WÑ(=Ó>Ñ>ð€Lð ð
 ˜˜ˆ}ò BˆØ˜i¨™lÑ+ò 	BˆAØ˜Ñ˜aÓ  L°¸1±Ñ$>¸qÑ$AÑAÔ ñ	BðBð 	�Y˜q‘\Ð"àÐùò+ 8ùòs   ‰
B*ÁB/c                 ó�   — g d¢}|D �ci c]  }|g “Œ }}|d   }| D ]"  }|dd  }||v r|}Œ||   j                  |«       Œ$ |S c c}w )N)rg   rn   ro   r   é   )rs   )ru   r~   r   r€   r�   r‚   rƒ   s          rQ   r}   r}     sn   € Ú'€IØ-6Ö7 c˜#˜r™'Ð7€LÐ7Ø˜A‘,€Kàò 3ˆØ˜˜�8ˆØ�yÑ Ø"‰Kà˜Ñ%×,Ñ,¨TÕ2ð3ð Ðùò 8s   ‰
Ac                 óÂ  — t        j                  d«      j                  }|t         j                  k(  rdnd}d|dg}t	        | t
        «      r>|j                  ddt        | j                  «      dt        | j                  «      g«       |S t	        | t        «      rE|j                  d	d
t        | j                  «      dddd| j                  › d| j                  › �g«       |S )Nrh   ÚinfoÚquietrk   z-fÚs16lez-acz-arÚrawvideoz-rz-pix_fmtÚyuv420pz-vfzscale=ú:)ÚloggingÚ	getLoggerÚlevelÚDEBUGr>   r   ÚextendÚstrÚchannelsÚbitrater   rB   r*   r+   )r   Ú	log_levelÚffmpeg_levelÚoptionss       rQ   rt   rt     sâ   € ô ×!Ñ! (Ó+×1Ñ1€IØ&¬'¯-©-Ò7‘6¸W€Là�\ 4Ð(€GäÐ#¤_Ô5Ø�‰ØØ”3Ð(×1Ñ1Ó2Ø”3Ð(×0Ñ0Ó1ð
ô 	ð €Nô 
Ð%¤Ô	7Ø�‰ØØ”#Ð'×2Ñ2Ó3ØØØØÐ&×,Ñ,Ð-¨QÐ/@×/GÑ/GÐ.HÐIð
ô 	ð €Nrx   )NN)NNF)"r0   rŽ   Úos.pathrq   r[   r{   r4   rm   r   r   Útypingr   r   r   r   Úntgcallsr	   Ú
exceptionsr   r   r   r   r   Ú	types.rawr   r   r“   rR   r2   Úboolr3   rp   r}   rt   © rx   rQ   ú<module>r       sÃ  ðÛ Û Û Û 	Û Û Ý  Ý Ý Ý Ý Ý å  å (Ý .Ý 'Ý *Ý *Ý &Ý &ð ,0Ø(,ñ\$Ø ‘}ð\$à
ð\$ð ˜_¨oÐ=Ñ>ð\$ð ˜d 3™iÑ(ð	\$ð
 �d˜3 ˜8‘nÑ%ó\$ðB #'Ø%)ñ':Ø�3‰ið':à˜3‘-ð':ð ˜˜S™	Ñ"ð':ð 
ˆ#�Yó	':ð^ ,0Ø(,ØñDØ
ðDà ‘}ðDð �3‰-ðDð ˜_¨oÐ=Ñ>ð	Dð
 ˜d 3™iÑ(ðDð �d˜3 ˜8‘nÑ%ðDð ðDð 
ˆ#�YóDðN ¨¡ó ð4 D¨¡Ió ðØ  °/Ð!AÑBðà	ˆ#�Yôrx   