
    hj                     r   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKrSSK7  SSKJr  SS	KJr  SS
KJrJrJr   S SKr S SKJrJrJr  S SK J!r!J"r"  S SK#J$r$  S SK%J&r&J'r'  \((       a  SSK)J*r*J+r+   S SK,r- S SK.J/r/   S SK0J1r1  S r2S r3SDS jr4S\54S jr6S r7S r8S\54S jr9S\:4S jr;S\:4S  jr<S!\54S" jr=0 r>S#\?S$\?S%\54S& jr@SES' jrAS( rB " S) S*5      rCSFS+\5S,\54S- jjrDS. rES/ rFS0 rGS1 rHS2 rIS3 rJS4 rKS5 rL/ rMS6 rN\SGS7 j5       rO    SHS8 jrPS9 rQS: rRSIS; jrSS< rT " S= S>\U5      rV " S? S@5      rWSA rXSB rYSC rZg! \ a    Sr GN	f = f! \ a    Su  rrr\R?                  S5         GN"f = f! \ a    Sr- GNf = f! \ a    Sr/ GNf = f! \ a    Sr1 GNf = f)J    N)BytesIO)JSONDecodeError)
format_exc   )*)DependencyMissingError   )some_random_headers)async_searcherbash	run_async)Image	ImageDraw	ImageFont)NNNzPIL not installed!)quoteunquote)Button)DocumentAttributeAudioDocumentAttributeVideo)get_stored_msg	store_msg)	Telegraph)BeautifulSoupc                 |   #    Sn[        US-   U -   SS9I S h  vN n[        US-   U -   SS9I S h  vN nX24$  N N	7f)Nz"https://api.orangefox.download/v3/zreleases?codename=Tre_jsonzdevices/get?codename=)r   )codenameofox_baseurlreleasesdevices       (/root/TeamUltroid/pyUltroid/fns/tools.pyget_ofoxr"   @   s_     7L#++h6 H "..94 F s   <8<:<<c                 j    U R                  S[        S5      5      R                  S[        S5      5      $ )N'z%5C%27"z%5C%22)replacer   )texts    r!   _unquote_textr(   O   s*    <<WX./77WX=NOO    c                    0 n [        U [        5      (       aZ  [        R                  " [        U 5      5      nU(       a2  [        R                  " [        R                  " [        U 5      5      XS9nU$ [        U [
        5      (       a  U nU(       a  [        R                  " XUS9nU$ ! [         a    [        U 5      n U$ f = f)N)indentensure_ascii)
isinstancestrjsonloadsdumpsdictr   eval)datar+   asciiparseds       r!   json_parserr7   S   s    FdC  ZZD	*FJJs4y)& M d##FDeL M  dMs   A-B( 33B( (C Curlc                    #     [        U SS9I S h  vN $  N! [         a  n[        R                  U5         S nAgS nAff = f7f)NT)headF)r   BaseExceptionLOGSdebug)r8   ers     r!   	is_url_okr?   h   s:     #Cd3333 

2s3   A  A 
A<AAAc                   #    [        S[        U 5       S35      I S h  vN u  pU(       a%  UR                  S5      (       a  [        SU S35      e0 n[        R
                  " U5      S   nU(       d  0 $ US   nUS   nUR                  S	5      S
;   a%  US   S   US   S   US   R                  SS5      S.$ UR                  S5      (       aN  UR                  SU 5      US'   UR                  S5      =(       d    [        R                  S5      =(       d    SUS'   UR                  S5      (       au  [        [        US   R                  SS5      5      5      US'   [        [        US   R                  SS5      5      5      US'   [        US   R                  SS5      5      US'   [        [        UR                  SS5      5      5      US'   U$  GN7f) Nzmediainfo "z" --Output=JSON	NOT_FOUNDr$   z3' is not installed!
Install it to use this command.mediatrackr   Format)GIFPNGr	   HeightWidthBitRatei@  )heightwidthbitrate
AudioCountTitletitle	Performerartist 	performer
VideoCounti  rJ   i   rK   rL   Durationduration)r   r(   endswithr   r/   r0   getudBget_keyintfloat)fileout_r4   _infoinfos         r!   metadatarb   s   s    +mD&9%:/JKKFCQZZ$$$sFG
 	
 DJJsOG$E	'NE8Dxx^+Ahx(1Xg&Qx||Is3
 	

 xx$/W HH[1PS[[5JPb[xxU58<<##>?@XE%(,,w"=>?WeAhll9c:;Y5*a!89:DK5 Ls   GGF3Gc           
        #    [        U 5      I S h  vN nU(       d  g SU;   a=  [        UR                  SS5      UR                  SS5      UR                  SS5      SS9/$ SU R                  S5      S	   -   n[	        UR                  SS5      UR                  S
U R                  S5      S	   R                  US5      5      UR                  S5      S9/$  N7f)NrK   rV   r      rJ   T)rV   whsupports_streaming.rO   /rR   rS   )rV   rO   rS   )rb   r   rX   splitr   r&   )r]   r4   exts      r!   set_attributesrm      s     $D$"*a0((7C(((8S)#'	
 	
 

3#
#CXXj!,((7DJJsOB$7$?$?R$HIhh{+	
   s   CCCCtextsc                 p   / n[         R                  " SU 5       HV  nUu  p4UR                  S5      nUS   n[        U5      S:  a  US   R	                  X4/5        MC  UR	                  X4//5        MX     U n[         R                  " SU 5       H  nUR                  US5      nM     UR                  5       U4$ )Nz\[(.*?)\|(.*?)\]|r   r	   ri   z\[.+?\|.+?\]rR   )refindallrk   lenappendr&   strip)rn   btnzr'   r8   urlstxts          r!   get_msg_buttonrz      s    
CZZ-u5	yy~1gt9q=GNND;'JJ}% 6 CZZ)51kk!R  2 99;r)   buttonc           
      \   / nU  H  n[        U5      S:  aJ  UVVs/ s H)  u  p4[        R                  " X4R                  5       5      PM+     nnnUR	                  U5        M\  UR	                  [        R                  " US   S   US   S   R                  5       5      /5        M     U$ s  snnf )Nr	   r   )rs   r   r8   ru   rt   )r{   rv   rw   xykks         r!   create_tl_btnr      s    
Cq6A:789qtq&**Q	*qB9JJrNJJ

1Q47AaDGMMO<=>  J	 :s   0B(buttonsc                 p   SnU  H  nSnU H  n[        UR                  S5      (       d  M   US-  nUS:  a6  USUR                  R                   SUR                  R                   S3-  nMa  USUR                  R                   SUR                  R                   S3-  nM     M     [	        U5      u  pEU$ )	NrR   r   r8   r	   [z | z | same]])hasattrr{   r'   r8   rz   )r   ry   iar_   rv   s         r!   
format_btnr      s    
CAqxx''Qq5Qqxx}}oShGGCQqxx}}oSa@@C   C FAJr)   queryc                    #     [        SU R                  SS5       3SS9I S h  vN nU$  N! [         a    S n U$ f = f7f)Nz$https://saavn-api.vercel.app/search/ z%20T)r8   r   )r   r&   r;   )r   r4   s     r!   saavn_searchr      sX     #6u}}S%7P6QR
 
 K
  Ks,   A  - +- A - =A =A chat_idmsg_iduploaderc                   #    [         R                  SU5        U [        ;   a  U[        U    ;   a  [        U    U   nOgSSS.SSS.SSS.S	SS.S
SS.SSS.S.nU(       a  X$;   a  XB   S   nXB   S   nOgS[        US5      0n US:X  a  SU SU SU S3n[        R
                  " USSSS9n	U	R                  S:X  aP  [        R                  " U	R                  5      n
U
R                  S0 5      R                  S5      nU(       a  SU 3nU$ gSU	R                  R                  5        3$ US:X  a	  SU S U 3nOUS!:X  a	  S"U S U 3nOuUS#:X  d  US$:X  a^   [        XWSUS%9I S h  vN n[        U[         5      (       a4  S'U;   a  S(US'    3$ UR                  S)5      S*:X  a  UR                  S+5      $ O[#        S,5      e[        R
                  " WSSSS9n	U	R                  S:X  a  U	R                  R                  5       $ S&U	R                  R                  5        3$  N! [         a  nS&U 3s S nA$ S nAff = f! [         a  nS&U 3s S nA$ S nAff = f7f)-Nz-webuploader function called with uploader: %szFile not found in cache.z!https://siasky.net/skynet/skyfileT)r8   r/   zhttps://file.io/zhttps://0x0.stFzhttps://transfer.shzhttps://catbox.moe/user/api.phpzhttps://filebin.net)siaskyfile.io0x0.sttransfercatboxfilebinr8   r/   z"Uploader not supported or invalid.r]   rbr   zcurl -X POST --data-binary '@z' -H 'filename: "z"' "r%   )shellcapture_outputr'   r   binidzhttps://filebin.net/z.Failed to extract bin ID from Filebin responsez"Failed to upload file to Filebin: r   z9curl -F reqtype=fileupload -F time=24h -F 'fileToUpload=@z' r   zcurl -F 'file=@r   r   r4   postr   zFailed to upload file: skylinkzhttps://siasky.net/status   linkzUploader not supported)r<   ra   _webupload_cacheopen
subprocessrun
returncoder/   r0   stdoutrX   stderrru   r   	Exceptionr-   r2   
ValueError)r   r   r   r]   sitesr8   json_formatfilescmdresponseresponse_jsonbin_idfilebin_urlr   es                  r!   webuploaderr      s    II=xH""v1A'1J'J(0) >tL-t<*E:15A;UK0%@E H%oe$of-3T$%&E'-y 1$7I$vVYUZZ\]C!~~cdQUVH""a' $

8?? ;&**5"599$?$8"AK&&K;HOO<Q<Q<S;TUU!MdVSUVYUZ[C!#D6C51C"h(&:5-$  
 &$''&0	1B0CDD::h'3.!::f--566>>#T$TR!#??((**,X__-B-B-D,EFF#  50445  -(,,-s   BIBH9 IH9 )I**H9 H #H$H ("H9 
I%H9 0I1AH9 =I>H9 IH 
H6'H1+H6,H9 0I1H66H9 9
IIIIIIc                    / n[         R                  " U 5       H\  u  p4nU HP  nU(       a  UR                  U5      (       d  M"  UR                  [         R                  R                  X65      5        MR     M^     [        U5      $ N)oswalkrW   rt   pathjoinsorted)r   	extensionfilelistrootdirsr   r]   s          r!   get_all_filesr   4  s_    HWWT]EDdmmI&>&>T 89  + (r)   c                 J   / n[        U 5      S::  a  UR                  U 5        O|U R                  S5      nU He  n[        U5      S::  a  UR                  U5        M%  [        U5      S-  n[        SUS-   5       H  nUR                  X5S-
  S-  US-   5        M!     Mg     US S $ )N7   
r	   r      )rs   rt   rk   range)r'   lines	all_lineslinekrw   s         r!   text_setr   =  s    E
4yBTJJt$	D4yBT"IOq!a%ALLA|B!@A )  ":r)   c                   D    \ rS rSr\S 5       r\S 5       r\S 5       rSrg)
LogoHelperiQ  c                     [         R                  " SUR                  UR                  45      n[        R
                  " U5      nUR                  X5      $ )NRGB)r   newrK   rJ   r   Draw
textlength)r'   imagefontimdraws        r!   get_text_sizeLogoHelper.get_text_sizeR  s<    YYuu{{ELL9:~~b!t**r)   c                     Sn[         R                  " X5      n[        R                  XU5      nXFUR                  -  -  U-  n[        U5      $ )Nd   )r   truetyper   r   rK   round)r'   r   r   target_width_ratiotested_font_sizetested_fontobserved_widthestimated_font_sizes           r!   find_font_sizeLogoHelper.find_font_sizeX  sR    ((@#11${K <=@RR 	 ())r)   c           	         UR                  S5      nUR                  S5      =(       d    Sn[        UR                  S5      5      nUR                  S5      n[        R                  " U 5      nUR                  u  p[        X5      nX:w  a  UR                  SSX45      nUR                  S:  a  UR                  S5      nUR                  u  p[        R                  " U5      n[        R                  XX5      n[        R                  " X-5      nUR                  U5      u  nnnnUU-
  UU-
  S	-  nnUR!                  U	U-
  S
-  U
U-
  S
-  4UUUUUS9  [#        S5      nUR%                  US5        U$ )Nfillwidth_ratiogffffff?stroke_widthstroke_fillr   i  )  r   g      ?r   )r   r   r   r   zlogo.pngrF   )rX   r[   r   r   sizemincroprJ   resizer   r   r   r   r   r   getbboxr'   check_filenamesave)imgpathr'   funtargsr   r   r   r   imgrK   rJ   fctr   	font_sizer   ltrbre   rf   	file_names                         r!   	make_logoLogoHelper.make_logob  sZ   xxhh}-4488N34hh}-jj!& ?((Aq#+,C::**\*C~~c"--d#K	!!$2\\$'
1a1uq1um1		ai1_
a/1%# 	 	
 #:.	E"r)    N)	__name__
__module____qualname____firstlineno__staticmethodr   r   r   __static_attributes__r   r)   r!   r   r   Q  s<    + +
 * *  r)   r   r4   r   c                   #     Sn[        X US.SSS9I S h  vN nSSUS   S    3SUS   S    S3S	.4$  N! [         a     S
nSU R                  S5      USS.n [        X SSS9I S h  vN  nSUS   US    S3S	.4s $ ! [         a2  n[        R	                  U5        S S S [        U5      S.4s S nAs $ S nAff = ff = f7f)Nzhttps://spaceb.in/api/)contentr   T)r/   r   r   zhttps://spaceb.in/payloadr   z/raw)r   rawzhttps://dpaste.org/api/r/   zutf-8604800)formatr  lexerexpiresr   r8   )r   r  error)r   r   encoder<   ra   r.   )r4   r   r8   resr   s        r!   	get_paster    s    &"3I-V]akopp(Y)=(>?'It(<'=TB
 
 	
 q
  	+C ;;w/"#	D 'sD$OOOCE
e*T*    	IIaLQ  	sm   C8 68 C8 
C&B)A,*B>C?C
B=%B80B=1C6C8B==CCc                   #    [         R                  SU  35        SSS.SSS.SSS./n[        R                  " S	[	        U5      S
-
  5      nX   S   nX   S   n S[        U 5       SU SU S3n[        USS9I Sh  vN n[        S5        U(       a  SU;  a  [         R                  S5        / $ / nUS    Hq  n UR                  UR                  SS5      UR                  SS5      UR                  SS5      UR                  S0 5      R                  SUS   5      US   S.5        Ms     [        R                  " U5        [         R                  S [	        U5       S!U  35        U$  N! [         a,  n	[         R                  S[        U	5       35         Sn	A	M  Sn	A	ff = f! [         a-  n	[         R                  S"[        U	5       35        / s Sn	A	$ Sn	A	ff = f7f)#zGet image results from Google Custom Search API.

Args:
    query (str): Search query string
    
Returns:
    list: List of dicts containing image info (title, link, source, thumbnail, original)
zSearching Google Images for: 'AIzaSyAj75v6vHWLJdJaYcj44tLz7bdsrh2g7Y0712a54749d99a449e)keycxz'AIzaSyDFQQwPLCzcJ9FDao-B7zDusBxk8GoZ0HY001bbd139705f44a6z'AIzaSyD0sRNZUa8-0kq9LAREDAFKLNO1HPmikRU4717c609c54e24250r   r	   r  r  z-https://www.googleapis.com/customsearch/v1?q=z&cx=z&key=z&searchType=image&num=10Tr   Nr   itemsz(No results from Google Custom Search APIrO   rR   contextLinkdisplayLinkr   thumbnailLinkr   )rO   r   source	thumbnailoriginalz Failed to process image result: zFound z images for query: zError in get_google_images: )r<   ra   randomrandintrs   r   r   printr  rt   rX   r   warningr.   shuffle	exception)
r   google_keys	key_indexGOOGLE_API_KEY	GOOGLE_CXr8   r   google_imagesitemr   s
             r!   get_google_imagesr*    s     	II-eW56
 =%	

 =%	

 =%	
K q#k"2Q"67I +E2N&t,I),9+N#	 	 (T::j7(2JJABI W%D
$$!XXgr2 HH]B7"hh}b9!%'2!6!:!:?DQWL!Y $V&  & 	}%		F3}-..A%IJ3 ;"  ?AxHI  5c!fX>?	s   AG"F$ =E)>2F$ 0G1
F$ <A-E+)?F$ (G)F$ +
F!5!FF$ F!!F$ $
G."GGGGGc                    #    SnUR                  U 5      n [        USS9I S h  vN R                  S5      $  N! [         a$    [        R                  S[        5        S35         g f = f7f)Nz'https://api.safone.dev/chatbot?query={}Tr   r   z**ERROR:**``)r	  r   rX   r   r<   ra   r   )messagechatbot_basereq_links      r!   get_chatbot_replyr0    se     <L""H1$Xt<<AA*MM< 1		K
~Q/01s1   A+: 8: A+: +A(%A+'A((A+c                    [         R                  R                  U 5      (       aa  Sn SR                  " [         R                  R	                  U 5      U4-   6 n[         R                  R                  U5      (       a  US-  nOU$ M^  U $ )Nr	   z
{0}_{2}{1})r   r   existsr	  splitext)filroidnoults      r!   r   r     sp    	ww~~g%%rww'7'7'@B5'HICww~~c""a
  Nr)   c                 R   #    [        U 5      I S h  vN R                  S5      $  N7f)NrV   )rb   rX   )r]   s    r!   genssr8    s      4. %%j11 s   '%'c                    #    [        U 5      I S h  vN n[        US-  5      n[        US-  [        U5      -   5      n[        U5      nXB:  a  [        U5      O
[        U5      nXV4$  NU7f)N   )r8  r   r[   stdr)r]   stimetsecr}   r~   pinpons          r!   
duration_sr@    s]     tDdQhAdQhU#$A
q'CX$q'4:C8O s   A)A'AA)c                    [        U S5      u  p[        US5      u  p![        [        U5      5      S:X  a  S[        U5      -   n[        [        U5      5      S:X  a  S[        U5      -   n[        [        U 5      5      S:X  a  S[        U 5      -   n U(       a  [        U5      S-   OSU(       a  [        U5      S-   OS-   U (       a  [        U 5      -   $ S-   $ )N<   r	   0:z00:rR   )divmodrs   r.   )secondsminuteshourss      r!   r;  r;    s    gr*GGR(NE
3w<AG$
3u:!c%j 
3w<AG$$#e*s
%#*CL3	7$CL	. +-	.r)   c                 X   [         R                  " SSS9nU R                  SS9nU [         R                  " U5         US'   U [         R                  " U5         US'   [         R
                  " U SS9nU [         R                  " U5         US'   U [         R                  " U5         US'   U$ )	zget the required points)   r   float32dtyper	   )axisr   r      )npzerossumargminargmaxdiff)ptsrectsrU  s       r!   order_pointsrY  2  s    88F),DQA"))A,DG"))A,DG773QD"))D/"DG"))D/"DGKr)   c                      SS K n[        U5      nUu  pEpg[        R
                  " US   US   -
  S-  US   US   -
  S-  -   5      n[        R
                  " US   US   -
  S-  US   US   -
  S-  -   5      n	[        [        U5      [        U	5      5      n
[        R
                  " US   US   -
  S-  US   US   -
  S-  -   5      n[        R
                  " US   US   -
  S-  US   US   -
  S-  -   5      n[        [        U5      [        U5      5      n[        R                  " SS/U
S-
  S/U
S-
  US-
  /SUS-
  //SS9nUR                  X>5      nUR                  XX45      $ ! [         a    [        S5      ef = f)Nr   *This function needs 'cv2' to be installed.r   r	   rK  rL  )cv2ImportErrorr   rY  rP  sqrtmaxr[   arraygetPerspectiveTransformwarpPerspective)r   rV  r\  rW  tltrbrblwidthAwidthBmaxWidthheightAheightB	maxHeightdstMs                   r!   four_point_transformro  >  s   S DRRWWr!ur!u}*11!/CDEFWWr!ur!u}*11!/CDEF3v;F,Hgg11!+AA10DEFGgg11!+AA10DEFGCL#g,/I
((
Q(Q,"X\9q=$AAyST}CUVC 	##D.Au()>??  S$%QRRSs   E' 'E=c                     [         (       d  [        R                  S5        g [        (       a	  [        S   $ SSKJn Jn  U R                  S5      nU R                  S5      n[        X#=(       d    SS9nU(       a  [        R                  U5        U$ UR                  nUS S	 nUR                  R                  (       a  S
UR                  R                   3OSn UR                  XeUS9  U R!                  SUR#                  5       5        [        R                  U5        U$ ! [         aC  nS[        U5      ;   a  UR                  SXWS9   S nANe[        R                  U5         S nAg S nAff = f)Nz'Telegraph' is not Installed!r   r   )rY   ultroid_bot_TELEGRAPH_TOKENGRAPH_DOMAINz	graph.org)domain   zhttps://t.me/zhttps://t.me/TeamUltroid)
short_nameauthor_name
author_urlSHORT_NAME_TOO_LONGultroiduser)r   r<   ra   	TELEGRAPHrR   rY   rq  rZ   rt   	full_namemeusernamecreate_accountr   r.   r#  set_keyget_access_token)	rY   rq  tokenTELEGRAPH_DOMAINTelegraphClientgd_namerv  profile_urlr>   s	            r!   telegraph_clientr  W  sC   9		12y|#KK*+E{{>2.M+NO)##G"J >>"" //01' 
&&!; 	' 	
 KK"O$D$D$FG_%   CG+**(g +  NN2s   D 
E,)E'E''E,c                 @    [        5       nUR                  U US9nUS   $ )N)rO   html_contentr8   )r  create_page)rO   html	telegraphpages       r!   make_html_telegraphr  ~  s1     "I   ! D ;r)   c                   #    U(       aF  SnXS'   UR                  SS5      US'   UR                  SS5      US'   UR                  SS5      US'   OXS	'   [        USUSS
9I S h  vN nU(       d  [        U5      nUS-   Ul        U$  [	        UR                  5       5      $  N<! [         a     Of = fUS-   n[        US5       nUR                  U5        S S S 5        U$ ! , (       d  f       U$ = f7f)Nz.https://rayso-api-desvhu-33.koyeb.app/generater'   themebreezedarkModeTrO   Ultroidcode)r   r/   
re_contentz.jpgwb)	rX   r   r   namer7   decoder   r   write)	r  base_urlr   downloadraysokwargsconr]   fs	            r!   Carbonr    s      Cv **Wh7w#ZZ
D9z **Wi8wvxdDQ
QCs|&	 K	szz|,, R  		6!$GGCL K KsN   A!C1#B $"C1B" C1"
B/,C1.B//C1C
C1
C.)C1c                    #    SSK Jn  U R                  UR                  S5      5      I S h  vN nUR	                  S5      I S h  vN   UR
                  n[        R                  " SS9n[        X25        U$  NJ N37f)Nr   )rY   LOG_CHANNELzK**Message has been stored to generate a shareable link. Do not delete it.**   )nbytes)	rR   rY   
forward_torZ   replyr   secrets	token_hexr   )msgrY   r   msg_hashs       r!   get_file_linkr    sm     >>#++m"<==F
,,U   YYF  *HhO >s!   *A;A7A;A92A;9A;c                 .  #    SSK JnJn  [        U5      nU(       d  g  UR	                  UR                  S5      [        U5      S9I S h  vN nU(       a  UR                  (       d-  UR                  U R                  SU R                  S9I S h  vN $ UR                  U R                  UR                  =(       d    SUR                  U R                  S	9I S h  vN   g  N! [         a"  n[        R                  SU 35         S nAg S nAff = f N N87f)
Nr   )rY   asstr  )idszFileStore, Error: z!__Message was deleted by owner!__)reply_torR   )r]   r  )rR   rY   r  r   get_messagesrZ   r[   r   r<   r!  r   send_messager   r'   rB   )eventhashrY   r  r   r  r>   s          r!   get_stored_filer    s     D!F%%ckk-&@c&k%RR cff&&MM> ' 
 
 	
 

EMM388>r		TYT\T\

]]] S )"./
 ^s`   D+C" 
C C" A DDA
DDD C" "
D,D	D	DDDc                 <   Sn[        U R                  S5      5      nSU< SU< SU< 3n[        R                  " XsS9R                  nUR                  S5      n	[        R                  " XY5      n	U	(       d  g[        R                  " U	S   5      n U(       a  U S 4$ U $ )	Nz*(?s)class="(?:t0|result-container)">(.*?)<utf8z"https://translate.google.com/m?tl=z&sl=z&q=)timeoutrR   r   )
r   r  requestsrX   r  r  rq   rr   r  unescape)
r'   lang_tgtlang_srcr  detectpatternescaped_textr8   r   results
             r!   	translater    s    ;GV,-LC
 ||C199H__V$FZZ(F==#D!D$<+t+r)   c                 f   U R                  SS5      R                  SS5      R                  SS5      R                  SS5      R                  SS5      R                  SS5      R                  SS5      R                  S	S5      R                  S
S5      R                  SS5      R                  SS5      $ )N$rR   z?(.*)z(.*)z(?: |)z| z( |)z
?((.|//)*)z?P<shortname>\w+()z?(\d+))r&   )r   s    r!   cmd_regex_replacer    s    C	"				2		r				r	"	$b	)	b		b		B	r)   c                       \ rS rSrSrg)LottieExceptioni  r   N)r   r   r   r  r  r   r)   r!   r  r    s    r)   r  c                       \ rS rSrSr\SS j5       r\SS j5       r\S 5       r\SS j5       r	\SS j5       r
\SS j5       r\S	S
/ S4S j5       rSrg
)TgConverteri  z!Convert files related to Telegramc                 ,  #    [         R                  SU  SU 35         UR                  S5      (       a  [        SU  SU S35      I Sh  vN u  pEO[        SU  SU S35      I Sh  vN u  pEU(       a*  [         R	                  S	U 35        U(       a  [        U5      eU(       aR  [        R                  R                  U 5      (       a.  [        R                  " U 5        [         R                  S
U  35        [        R                  R                  U5      (       a  [         R                  SU 35        U$ [         R	                  SU 35        g GN N! [         a3  n[         R                  S[        U5       35        U(       a  e  SnAgSnAff = f7f)z!Convert to/from animated sticker.zConverting animated sticker:  -> webpz=lottie_convert.py --webp-quality 100 --webp-skip-frames 100 '' 'r$   Nlottie_convert.py 'z&Error in animated_sticker conversion: Removed original file: zSuccessfully converted to zOutput file not created: z&Unexpected error in animated_sticker: )r<   ra   rW   r   r  r  r   r   r2  remover   r#  r.   )r]   out_paththrowr  r>   r^   r   s          r!   animated_stickerTgConverter.animated_sticker  s^     			1$tH:FG	  (( $STXSYY\]e\ffgh! C !%':4&H:Q%O PP

CB4HI)"--"''....		$		3D6:;ww~~h''		6xjABJJ28*=># Q  	NNCCF8LM 	s_   F+E 
EE 'E(CE 5F6E FE E 
F)FFFFc                   #    [         R                  SU  SU 35         [        S[        U 5       S[        U5       S35      I Sh  vN u  p#U(       a  [         R	                  SU 35        [
        R                  R                  U5      (       a  [         R                  S5        U$ [         R	                  S	5        g Nv! [         a+  n[         R                  S
[        U5       35         SnAgSnAff = f7f)z Convert animated sticker to gif.zConverting to gif: r  r  r  r$   Nz%Error in animated_to_gif conversion: zSuccessfully converted to gifz/Gif conversion failed - output file not createdz%Unexpected error in animated_to_gif: )r<   ra   r   r(   r  r   r   r2  r   r#  r.   )r]   r  r>   r^   r   s        r!   animated_to_gifTgConverter.animated_to_gif  s      			'vT(<=	 %mD&9%:#mH>U=VVWX GB 

B2$GHww~~h''		9:JJHI  	NNB3q6(KL	sM   C7'B? B=AB? &C7'B? <C7=B? ?
C4	!C/*C7/C44C7c                    [         R                  SU  35         [        R                  " U 5      nUR                  UR
                  4nUR                  =(       a    UR
                  S:  a  UR                  nUR
                  nUR                  UR
                  :  a  SU-  nSnXE-  nOSU-  nX5-  nSn[        R                  " U5      n[        R                  " U5      nXg4nUR                  U5      nOSn	UR                  U	5        [         R                  SU SUR                   35        U$ ! [         a'  n
[         R                  S[        U
5       35        e Sn
A
ff = f)zBResize the given photo to 512x512 (for creating telegram sticker).zResizing photo for sticker: rd   rd   rd   zResized image from  to zError in resize_photo_sticker: N)r<   ra   r   r   rK   rJ   mathfloorr   r  r   r   r#  r.   )photor   original_sizesize1size2scalesize1newsize2newsizenewmaxsizer   s              r!   resize_photo_sticker TgConverter.resize_photo_sticker"  s/    			089	JJu%E"[[%,,7M,3;;-%KE"H$}H%KE$}H"H::h/::h/#.W-$(II+M?$uzzlKLL 	NN<SVHEF	s   DD/ /
E 9"EE c                   #    UR                  S5      (       a  [        R                  XS S US9I S h  vN $ UR                  S5      (       a8  [        SU  SU S35      I S h  vN u  p4[        R                  SU S	U 35        O7[        SU  S
U S35      I S h  vN u  p4[        R                  SU S	U 35        U(       a  [        R                  " U 5        [        R                  R                  U5      (       a  U$ g  N N Ni7f)N.webm)r  r  z.gifzffmpeg -i 'z' -an -sn -c:v copy 'z.mp4' -yzFFmpeg output: z	, Error: r  z' -y)
rW   r  create_webmr   r<   ra   r   r  r   r2  )input_outputr  r^   r>   s        r!   ffmpeg_convertTgConverter.ffmpeg_convertC  s     ??7##$00CR[ 1    ??6"" ;vh6KF8S[!\]]GCIIuIbT:; ;vhc&!FGGGCIIuIbT:;IIf77>>&!!M " ^ Hs4   1DD/D#D$7DDA&DDDc                   #    [         R                  SU  SU S35         [        U 5      I S h  vN nUS-  nUS   US   pTXE:X  a
  US:w  a  Su  pEUS:w  d  US:w  a  XE:  a  Su  pEXT:  a  S	u  pE[        S
U  SUS    SU SU SU S35      I S h  vN   U(       aR  [        R
                  R                  U 5      (       a.  [        R                  " U 5        [         R                  SU  35        [        R
                  R                  U5      (       a  [         R                  SU 35        U$ [         R                  SU 35        g  GN N! [         a+  n[         R                  S[        U5       35         S nAg S nAff = f7f)NzCreating webm: r  r  rJ   rK   rd   r  )rd   ri   )ri   rd   zffmpeg -i "z;" -preset fast -an -to 00:00:03 -crf 30 -bufsize 256k -b:v rL   z -vf "scale=rD  z,fps=30" -c:v libvpx-vp9 "z" -yr  zSuccessfully created webm: z0Webm creation failed - output file not created: zError in create_webm: )r<   ra   rb   r   r   r   r2  r  r  r   r#  r.   )r]   r  r  r_   rf   re   r   s          r!   r  TgConverter.create_webmT  s    		OD6dV59:	tn$AGODX;'
qv!s(Cx185"DA5"DAdV#^_`aj_k^llxyzx{{|}~|  @Z  [_  Z`  `d  e   "''....		$		3D6:;ww~~d##		7v>?JJI$PQ3 %  	NN3CF8<=	s^   FE	 EA E	 EBE	 *F+E	 FE	 E	 	
E>!E94F9E>>Fc                    [         R                  SU  SU 35         U (       d  [         R                  S5        g[        R                  R                  U 5      (       d  [         R                  SU  35        g SSKnUR                  U 5      nUR                  5       u  pVU(       d  [         R                  SU  35        gUR                  X5        UR                  5         [        R                  R                  U5      (       d  [         R                  S	U 35        gU(       aR  [        R                  R                  U 5      (       a.  [        R                  " U 5        [         R                  S
U  35        [         R                  SU 35        U$ ! [         a    [        S5      ef = f! [         a+  n[         R                  S[!        U5       35         SnAgSnAff = f)z-Convert video/gif to image using first frame.zConverting to image: r  Input file is NoneNInput file does not exist: r   r[  zFailed to read frame from zFailed to save image: r  z!Successfully converted to image: zError in to_image conversion: )r<   ra   r  r   r   r2  r\  r]  r   VideoCapturereadimwritereleaser  r   r#  r.   )r  r  r  r\  r   successframer   s           r!   to_imageTgConverter.to_imagev  sz    			)&dV<=%	

/077>>&))

8AB[ ""6*C XXZNG

7x@AKK$KKM77>>$''

3D6:;"''..00		&!		3F8<=II9$@AK-  [,-YZZ[0  	NN;CF8DE	sC   F) <F) 8F <AF) ?AF) A2F) F&&F) )
G3!GG	convertedNTc           
      l  ^^#    [         R                  SU  ST=(       d    T 35        U (       d  [         R                  S5        g[        R                  R                  U 5      (       d  [         R                  SU  35        gSU ;   a#  U R                  S5      S   R                  5       nO[         R                  S5        U $ UT;   d  UT:X  d  T(       d	  T(       d  U $ UU4S	 jn US
:X  a  S HA  nU" U5      (       d  M  US-   U-   n[        R                  XUS9I Sh  vN n	U	(       d  M?  U	s  $    U" S5      (       a@  [        R                  U SUS9I Sh  vN n
U
(       a  [        R                  XSS9I Sh  vN $ GOUS:X  a0  U" S
5      (       a!  US-   n[        R                  XUS9I Sh  vN $ GOUS;   a  S HA  nU" U5      (       d  M  US-   U-   n[        R                  XUS9I Sh  vN n	U	(       d  M?  U	s  $    S H9  nU" U5      (       d  M  US-   U-   n[        R                  XUS9n	U	(       d  M7  U	s  $    GO>US;   Ga7  S H  nU" U5      (       d  M   [        R                  " U 5      nUS-   U-   nUR!                  XR#                  5       5        U(       aR  [        R                  R                  U 5      (       a.  [        R$                  " U 5        [         R                  SU  35        Us  $    S H  nU" U5      (       d  M  US-   U-   nUS:X  aD  [        R                  U SUS9I Sh  vN nU(       a  [        R                  XSS9I Sh  vN s  $ Md  [        R                  XUS9I Sh  vN s  $    [         R                  SU  ST=(       d    T 35        g GN GNT GN4 GN GN! [&         a0  n[         R                  SU S[)        U5       35         SnAGM  SnAff = f N N N}! [&         a+  n[         R+                  S[)        U5       35         SnAgSnAff = f7f)z'Convert between different file formats.zConverting r  r  Nr  rh   ri   zInput file has no extensionc                 &   > TU :H  =(       d    U T;   $ r   r   )exteallowed_formats
convert_tos    r!   recycle_type)TgConverter.convert.<locals>.recycle_type  s    %@)@@r)   tgs)r  r/   pngmp4gif)r  webmr  )r  
remove_oldTr/   z.tgs)r	  r  r  )r  jpgjpegr  )r  r  r  r  )r  r  icor  zFailed to convert image to z: )r	  r  r  r  zNo valid conversion found for zError in convert: )r<   ra   r  r   r   r2  rk   lowerr  r  convertr  r  r  r   r   r   upperr  r   r.   r#  )
input_fileoutnamer  r  r
  rl   r  extnr  r  gif_filer   r   r   png_files     ``           r!   r  TgConverter.convert  s-     			K
|4
0Mo/NOPJJ+,ww~~j))JJ4ZLAB*""3'+113CJJ45 ?"j /	AS	e|AD#D))&}t3'2'C'C&Z (D ( " "6#)M B  ''%0%8%8"u &9 &  H  %0%<%<XW[%<%\\\ &&"V+D!,!=!=" "> "   ' ..2D#D))&}t3'2'A'A&Z (B ( " "6#)M 3 ;D#D))&}t3!,!5!5jz!5!Z!6#)M ; 662D#D))
%"'**Z"8C#*S=4#7DHHT::<8)bggnnZ.H.H "		* 5 $		,CJ<*P Q#'K 3 3D#D))&}t36>-8-@-@ *+0+5 .A . (H
  (-8-G-G$,4 .H ." (" !"  (
 *5)C)C * *D * $  3$ JJ7
|4
HeVeGfghS"   ]"2  ) % JJ)DTF"SQRVH'UV$%(("$  	NN/Ax89	so  C"P4'O< O<  N*!	O< .O< 1P42'O< N-"O< <N0=O<  P41O< 2N33O< 6P47O< O< 2N63	O<  O< P4O< !O< ?O< P4O< #BN9:O< <P4=O< &O< 9O6:"O< O8O< "P4#O< <O:=O< P4&O< )P4*O< -O< 0O< 3O< 6O< 9
O3$O.'O< .O33O< 8O< :O< <
P1!P,'P4,P11P4r   )zsticker.tgsFF)zgif.gif)F)videoF)r   r   r   r  __doc__r  r  r  r  r  r  r  r  r  r   r)   r!   r  r    s    + 8  $  @     B ( (T  u ur)   r  c                      [        U R                  5       5      nU$ ! [         a2  nSSKJn  UR                  U5        U R                  5       n S nAU$ S nAff = f)Nr   )r<   )r3   ru   r   rR   r<   r=   )strivaluer>   r<   s       r!   
_get_valuer    sN    TZZ\" L  

2

Ls    
A'AAc                    [        U [        5      (       a  U R                  S5      nOU R                  5       n0 nU H  nSU;   aN  UR                  SSS9nUS   R	                  5       n[        US   5      nUR                  Xx=(       d    / 05        MW  SU;   d  M_  UR                  SSS9nU[        UR                  5       5      S      n	[        U	[        5      (       d  M  [        US   5      nU(       d  M  U	R                  U5        M     U$ )Nr   rD  r	   )maxsplitr   -ri   )
r-   r.   rk   	readlinesru   r  updatelistkeysrt   )
r]   r   r  r  r^   r   splir  r  wheres
             r!   	safe_loadr&  %  s    $zz$~~
C$;::cA:.Dq'--/CtAw'EJJ[b)*D[::cA:.DSXXZ(,-E%&&"47+5LL'  Jr)   c                    [         R                  " SU 5      nU(       a*  US   u  p#nU(       a  [        SU-   5      nU[        U5      4$ [         R                  " SU 5      nU(       a"  [        US   S   5      [        US   S   5      4$ g)Nzt\.me\/(c\/)?([^\/]+)\/(\d+)r   z-100zuser_id=(\d+)&message_id=(\d+)r	   )NN)rq   rr   r[   )r   m
is_channelchatr   s        r!   get_chat_and_msgidr+  ;  s~    


2D9A#$Q4 
&v}%DS[  


4d;A1Q47|S1a\))r)   )NFr   )ry   )rR   )z&https://carbonara.solopov.dev/api/cookultroidFF)enautorB  F)[r/   r  r   r  rq   r   r  sslr  ior   json.decoderr   	tracebackr   r  rR   
exceptionsr   r
   helperr   r   r   certifir]  PILr   r   r   r<   ra   urllib.parser   r   telethonr   telethon.tl.typesr   r   run_as_moduledB.filestore_dbr   r   numpyrP  r  r   bs4r   r"   r(   r7   r.   r?   rb   rm   rz   r"  r   r   r   r   r[   r   r   r   r   r  r*  r0  r   r8  r@  r;  rY  ro  r{  r  r  r  r  r  r  r  r   r  r  r  r&  r+  r   r)   r!   <module>r>     s5     	      (     / ! 3 3$//
 (  L;#!P* B4# $$  &c   B<s B<C B<3 B<J(/ /l# # BFX1	$2*	@, 	$N   6
>
^$,$&i h hV	,   G
  $"2E9iII"#$  	B
  I
  MsZ   E 
E( F F F* E%$E%(F	F	FFF'&F'*F65F6