
    %j0                         d Z ddlmZ 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	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mZmZ dej*                  fdZd Zed	k(  r e        yy)
zM
python -m apkutils COMMAND

Commands:
    install     Install apk to device
    )absolute_importN)adb)ReadProgress
current_ip	APKReaderdc           
      N    d }	 	 ddt         dt         dt         f fd}d} |d|       d	} j                  d
      } j                  d      } j                  d      j                         xs |j                  d      }t	        d|d|ddj                  |             t	        d       |dz   } |||z   dz   |z   dz   dd|        |||z   dz   dd|       t	        d       |dz   } |||z   dz   dd|        j                  g d      }	t	        |	       t	        d       y ) Nc                    t         j                  j                  |      rt        d|       y t        dj	                  ||              t        j                  | d      }|j                          t        |j                  j                  dd            }t        |j                  |      }t        |dz   d      5 }t        j                  ||       d d d        t        j                  |dz   |       y # 1 sw Y   #xY w)	Nz
Use cachedzDownload {} from {}T)streamzContent-Lengthr   z.cachedwb)ospathexistsprintformatrequestsgetraise_for_statusintheadersr   rawopenshutilcopyfileobjmove)urldstresplengthrfs         U/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/adbutils/__main__.pycache_downloadz&_setup_minicap.<locals>.cache_download   s    77>>#,$#**345||C-T\\%%&6:;6*#	/4( 	%Aq!$	%C)OS)	% 	%s   9C22C;  r   destzipfile_pathc                 0   t        j                  |      5 }| |j                         vrt        d|        	 ddd       y|j	                  |       5 }j
                  j                  |||       ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z% push minicap and minitouch from zip zWARNING: stf stuff %s not foundN)zipfileZipFilenamelistr   r   syncpush)r   r%   moder&   zr!   r   s         r"   push_zipfilez$_setup_minicap.<locals>.push_zipfile,   s    
 __\* 	+a1::<'7>	+ 	+  +AtT*+		+ 	++ +		+ 	+s)    B BB /B B		BBzstf-binaries.zipz7https://github.com/openatx/stf-binaries/archive/0.2.zipzstf-binaries-0.2zro.build.version.sdkzro.product.cpu.abizro.product.cpu.abilist,zsdk: z, abi: z, support-abis: z!Push minicap+minicap.so to devicez(/node_modules/minicap-prebuilt/prebuilt/z/lib/android-z/minicap.soz/data/local/tmp/minicap.soi  z/bin/minicap/data/local/tmp/minicapzPush minitouch to devicez*/node_modules/minitouch-prebuilt/prebuilt/z/bin/minitouchz/data/local/tmp/minitouch)LD_LIBRARY_PATH=/data/local/tmpr1   -iz?If you see JSON output, it means minicap installed successfully)r$   zvendor/stf-binaries-master.zip)strgetpropstripsplitr   joinshell)
r   r#   r/   r&   
zip_foldersdkabiabisprefixoutputs
   `         r"   _setup_minicapr@      sO   *  )I
+3 
+
+ $'
+ &LL!#J
))*
+C
))(
)CII./557>3EEcJD	#sCHHTN
KL	
-.DDF#/#5E-ulD#.0I' 

$%FFF# 002M' WWLNF	&M	
KL    c                    2 t        j                         } | j                  ddd       | j                  dddd	       | j                  d
ddd	       | j                  ddd	       | j                  ddd       | j                  ddd	       | j                  ddd       | j                  dddd	       | j                  dd       | j                  dt        d       | j                  ddd 	       | j                  d!dd"	       | j                  d#dd$	       | j                  d%d&d'       | j                  d(d)       | j                  d*t        d+       | j                  d,dd-	       | j                  d.dd/	       | j                  d0t        d1       | j                  d2d3d4       | j                  d5d6       | j                  d7d8       | j                  d9dd:	       | j                  d;dd<	       | j                  d=d>d?@       | j	                         }|j
                  r t        j
                  |j
                         y |j                  r-t        dAj                  t        j                                      y |j                  rg }t        j                  dBC      D ]_  }|j                  |j                  dDj                  |j                  j!                         D cg c]  \  }}|dEz   |z    c}}      g       a g }t#        | D ]3  }|j                  t%        |D cg c]  }t'        |       c}             5 dFj                  |D cg c]  }dGt        |      z   dHz    c}      }	|D ]  }
t         |	j                  |
         y |j                  rg }t        j(                         D ].  2|j                  2j                  2j+                  dI      g       0 g }t#        | D ]3  }|j                  t%        |D cg c]  }t'        |       c}             5 dFj                  |D cg c]  }dGt        |      z   dHz    c}      }	|D ]  }
t         |	j                  |
         y |j,                  rdJdKlm}m} |j,                  }dL}dMt5               ||fz  }t        dN|       	 dJd l}|j7                  dOP      }|j9                  |       |j;                  dBQ        |dS|f|      }|j?                          y |j@                  rt        dT       t        dUtC        jD                                t        dVt        j                                t        dS       t        dW       t        j(                         D ]B  2t        dX2j                  2jF                  jH                  2jF                  jJ                         D y |jL                  rzt        jN                         D ]b  }tP        jP                  jS                         jU                  dY      }t        dZj                  |d d[ |j                  |jV                               d y |jX                  r|jX                  }d }t[        j\                  d\|      r	 dJd l/}|ji                  |dbc      }n-tj        jl                  jo                  |      sJ ti        |dd      }	 tq        |      }|jA                          |js                          y t        jt                  |j                        2|j*                  r'2j+                  |jv                        }t        |       y |jx                  rzdet        fdf}|jz                  r7dJd l>}|j                  |j                        }t        j                  ||g      }nd }2jy                  |jx                  |j                   dB|h       y |j                  r2j                  |j                         y |j                  rVt[        j                  |j                  xs di      }2j                         D ]  }|j                  |      st        |       ! y |j                  r|j                  rdjt        f2fdk}  | g dl      }!|!j                  dm      st        dn|!      t        j                  |!      }"|"do   |"dp   |"dq   }%}$}#2j+                  drdsdtduj                  |#|$|%      ddvg       2j                  j                  dw|j                         y dx}&2j+                  dy|&g       2j+                  dzd%|&g       2j                  j                  |&|j                         y |j                  rt        2       y |j                  r~|j                  j                  dEd{      \  }'}(tk        j                  |'      j                  })ti        |'dd      5 }*t        |*|)      }%2j                  j                  |%|(|)|       d d d        y |j                  r6|j                  }+tj        jl                  j                  |+      },2j                  j                  |j                        }-|-j                  dJk(  r(|-j                  dJk(  rte        j                  d}|+ d~       ti        |,d      5 }*dJ}.2j                  j                  |+      D ]i  }/|*j                  |/       |.t'        |/      z  }.|-j                  dJk7  r|.|-j                  z  dz  nd}0t        d|, d|. d|-j                   d|0z  dSdB       k t        |+ d|,        d d d        y |j                  r2j                  |j                         y |j                  rQ2j                         j                  }12j                  |1      }t        t        j                  |dt                     y |j                  rA2j                  |j                        }t        t        j                  |dt                     y y c c}}w c c}w c c}w c c}w c c}w # t<        $ r t        dR       Y bw xY w# t<        $ r8 ta        jb                  td        jf                  d]d^d_d`dag      }|dJk(  sJ dJd l/}Y w xY w# |js                          w xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nz-sz--serialzdevice serial number)helpz-Vz--server-version
store_truezshow adb server version)actionrC   z-lz--listzlist devicesz--list-extendedz*list devices with props (overrides --list)r3   z	--installzinstall from local apk or urlz--install-confirmz1auto confirm when install (based on uiautomator2)z-uz--uninstallzuninstall apkz-Lz--launchzlaunch after installz--qrcodez!show qrcode of the specified filez--parsez)parse package info from local file or url)typerC   z--clearzclear all data when uninstallz--list-packageszlist packages installedz	--currentzshow current package infoz-pz	--packagez show package info in json formatz--grepzfilter matched package namesz	--connectzconnect remote devicez--shellzrun shell commandz	--minicapz'install minicap and minitouch to devicez--screenshotztake screenshotz-bz	--browserzopen browser in devicez--pushzGpush local to remote, arg is colon seperated, eg some.txt:/sdcard/s.txtz--pullzApush local to remote, arg is colon seperated, eg /sdcard/some.txtz--dump-infozdump info for developerz--trackztrace device statusargs*	arguments)nargsrC   zADB Server version: {}T)extended :z  z{:<}zgetprop ro.product.modelr   )SimpleHTTPRequestHandlerThreadingHTTPServeri@  zhttp://%s:%d/%sz	File URL:   )border)ttyzCIn order to show QRCode, you need install with: pip3 install qrcode z==== ADB Info ====zPath:zServer version:z>> List of devices attached-z%H:%M:%S.%fz{} {} -> {}z
^https?://z-mpipinstallz-Uhttpio)
block_sizerb
event_namec                     d}| dk(  rt        d       |j                  d       |j                  |      j                  d      j	                          |j                  |      j                  d      j	                          |j                  |      j                  d      j	                          |j                  j                          y | dk(  rAt        d	       |j                  j                  |       |j                  j                          y y )
N	_INSTALL_BEFORE_INSTALLz== Enable popup window watcherhomeu   允许u   继续安装u   安装FINALLYz== Stop popup window watcher)r   presswatcherwhenclickstartremovestop)r]   udnames      r"   	_callbackzmain.<locals>._callback   s    D--67 

4 %%h/557

4 %%n5;;=

4 %%h/557

  "y(45

!!$'

! )rA   )rj   )nolaunch	uninstallcallbackz.*cmdc                     t        ddj                  ddg| z                j                  |       j                         S )NzRun:rL   r   r9   )r   r8   r9   r6   )rp   r   s    r"   	adb_shellzmain.<locals>.adb_shell  s7    fchhw'7#'=>?wws|))++rA   )r2   r1   r3   z2&>/dev/null{zInvalid json formatwidthheightrotationr2   r1   z-Pz{0}x{1}@{0}x{1}/{2}z>/sdcard/minicap.jpgz/sdcard/minicap.jpgz/data/local/tmp/screenshot.pngrm	screencap   )filesizezremote file 'z' does not existr   d   g      Y@zDownload to z ... [z / z	] %.1f %%)endflushz pulled to    )indentdefault)cargparseArgumentParseradd_argumentr4   
parse_argsconnect	adbclientserver_versionr   r   list_extendedlistappendserialr8   tagsitemszipmaxlendevice_listr9   qrcodehttp.serverrO   rP   r   QRCodeadd_dataprint_asciiImportErrorserve_forever	dump_infoadbutilsadb_pathproprk   modeltracktrack_devicesdatetimenowstrftimestatusparserematchrY   
subprocesscallsys
executabler   r   r   isfiler   closedevicerG   rX   install_confirmuiautomator2connect_usb	functoolspartiallaunchrn   list_packagescompilegrepsearch
screenshotminicap
startswithRuntimeErrorjsonloadsr+   pullr@   r,   r7   statst_sizer   basenamer-   sizeexititer_contentwritebrowseropen_browsercurrentapp_currentpackageapp_infodumps)3parserrG   rowsinfokvlenscollr   rowrO   rP   filenameportr   r   qrhttpdeventasctimeurifprY   retcodearr?   rl   u2rj   pattenprr   json_outputdatawhr    remote_tmp_pathlocalremoter   fdremote_pathtarget_pathfinfobytes_so_farchunkpercentpackage_namer   s3                                                     @r"   mainr   U   sR   $$&F j/EF
*+6  8  ++  - )+I  K #<  > @  B m/B
jDZ[

)LM
	2]^
	+<  > )+6  8 L?Z[
#?  A 'EF
#4KL
	+0  2 +F  H S7HI
k0HI
Q  
 P   lAZ[
	,=RS
c<D||$,,'&--i.F.F.HIJNND1 	[DKKchhTYY__EV/WEQq#a/W&XYZ	[: 	4CKKS1SV123	4$?QECFNS0?@ 	'C-&--%&	'yy&&( 	IAKK177+E#FGH	I: 	4CKKS1SV123	4$?QECFNS0?@ 	'C-&--%&	'{{M;;:<x"@@k3	a(BKKNNtN$ $RJ0HI~~"#gx((*+!9!9!;<b	+,&&( 	<A#qxxaffll;	<zz,,. 	RE''++-66}EG-&&ws|U\\5<<PQ	R 		jj88M3'
 SR0B77>>#&&&c4B	2BLLNHHJ 	%Azz#f||	"# 	" %,B!)));II			$,,T[[DS\	]		DNN#			DII-." 	A}}Qa	 
<<,t , $ % K ))#."#8+FF::k*D7mT(^T*5E!qAGG13L+221a;T& 
 FFKK-t?>OGGT?+,GG[$89FFKK9	q			Q/v''% 	4"R(AFFKK6FK3	4 	4 
iigg&&{3DII&::?uzzQHH}[M1ABC+t$ 	<L,,[9  E
*=BZZ1_,3c9RW$[M~ST]^	 	  [M[M:;	< 	< 
	t||$	}}..zz,'djja56	zz$,,'djja56 
u 0X 2? 2?"  	U	@  $//3>>4	SWYa*bc!|#| HHJX	4 	4	< 	<sg   0p)2p/ p4p9p>?9q q r" +r73Bsqq=rr"r47s s__main__)__doc__
__future__r   r   r   r   r   r   r   r   r   r   r(   r   r   r   r   adbutils._utilsr   r   r   	AdbDevicer@   r   __name__ rA   r"   <module>r      sl    '     	 	   
    % ? ?4Mh(( 4MnE7R zF rA   