Ë
    ÿ�j„  ã                   óz   — d dl Z d dlZd dlmZ d dlmZmZmZmZ  ej                  e
«      Z G d„ d«      Zdad„ Zy)é    N)Úasync_playwright)ÚDictÚListÚOptionalÚTuplec                   óz   — e Zd ZdZdZdZed„ «       Zd„ Zd„ Z	dde
de
dedee
eee
e
f      ee
e
f   f   fd	„Zd
„ Zy)ÚBrowserServiceNc              ƒ   óš   K  — | j                   €. | «       | _         | j                   j                  «       ƒ d {  –—†  | j                   S 7 Œ­w©N)Ú	_instanceÚ_init_browser)Úclss    ú;/var/www/html/strategist-ai/app/services/content/browser.pyÚget_instancezBrowserService.get_instance   s>   è ø€ à�=‰=Ð Ù›EˆCŒMØ—-‘-×-Ñ-Ó/×/Ð/Ø�}‰}Ðð 0ús   ‚6A¸A	¹Ac              ƒ   óî   K  — t        «       j                  «       ƒ d {  –—† | _        | j                  j                  j	                  d¬«      ƒ d {  –—† | _        t        j                  d«       y 7 ŒR7 Œ!­w)NT)Úheadlessz5Browser service initialized with Chromium (headless).)r   ÚstartÚ_playwrightÚchromiumÚlaunchÚ_browserÚloggerÚinfo©Úselfs    r   r   zBrowserService._init_browser   sW   è ø€ Ü!1Ó!3×!9Ñ!9Ó!;×;ˆÔØ"×.Ñ.×7Ñ7×>Ñ>ÈÐ>ÓM×MˆŒÜ�‰ÐKÕLð <øØMús!   ‚A5žA1Ÿ2A5ÁA3Á A5Á3A5c              ƒ   óV   K  — | j                   j                  d¬«      ƒ d {  –—† S 7 Œ­w)NzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36)Ú
user_agent)r   Únew_contextr   s    r   Ú_new_contextzBrowserService._new_context   s2   è ø€ Ø—]‘]×.Ñ.ð Oð /ó 
÷ 
ð 	
ð 
ús   ‚ )¢'£)ÚurlÚ
wait_untilÚtimeoutÚreturnc              ƒ   ó‚  K  — | j                   �| j                   j                  «       s-t        j                  d«       | j	                  «       ƒ d{  –—†  	 | j                  «       ƒ d{  –—† }|j                  «       ƒ d{  –—† }	 t        j                  d|› d|› d�«       	 |j                  |||¬«      ƒ d{  –—†  t        j                  d«      ƒ d{  –—†  |j                  «       ƒ d{  –—† }|j                  dd«      ƒ d{  –—† }|j                  «       ƒ d{  –—† }	||d|	if|j!                  «       ƒ d{  –—†  |j!                  «       ƒ d{  –—†  S 7 �Œ7 Œ÷# t        $ rV}t        j                  d|› d�«       | j	                  «       ƒ d{  –—†7   | j                  «       ƒ d{  –—†7  }Y d}~�ŒOd}~ww xY w7 �ŒD7 �Œ# t        $ r7}d	t        |«      v rt        j                  d
|› d|› d�«       n|‚Y d}~�ŒFd}~ww xY w7 �Œ67 �Œ!7 �Œ
7 Œô7 ŒØ7 ŒÂ# t        $ r^}t        j#                  d|› d|› �d¬«       dg i fcY d}~|j!                  «       ƒ d{  –—†7   |j!                  «       ƒ d{  –—†7   S d}~ww xY w# |j!                  «       ƒ d{  –—†7   |j!                  «       ƒ d{  –—†7   w xY w­w)z]
        Navigates to a URL and returns the fully rendered HTML and extracted links.
        Nz4Browser is disconnected -- relaunching before crawl.z!Browser context creation failed (z!); relaunching and retrying once.zNavigating to z with Playwright (wait_until=z)...)r!   r"   ÚTimeoutzTimeout reached for z with z". Proceeding with current content.é   za[href]zSelements => elements.map(e => ({href: e.href, text: (e.textContent || '').trim()}))ÚtitlezPlaywright failed to fetch z: T)Úexc_infoÚ )r   Úis_connectedr   Úwarningr   r   Ú	ExceptionÚnew_pager   ÚgotoÚstrÚasyncioÚsleepÚcontentÚeval_on_selector_allr'   ÚcloseÚerror)
r   r    r!   r"   ÚcontextÚeÚpager2   Úlinksr'   s
             r   Úget_rendered_contentz#BrowserService.get_rendered_content   sj  è ø€ ð �=‰=Ð ¨¯©×(BÑ(BÔ(DÜ�N‰NÐQÔRØ×$Ñ$Ó&×&Ð&ð	0Ø ×-Ñ-Ó/×/ˆGð ×%Ñ%Ó'×'ˆð	"Ü�K‰K˜.¨¨Ð-JÈ:È,ÐVZÐ[Ô\ðØ—i‘i °
ÀG�iÓL×LÐLô —-‘- Ó"×"Ð"à ŸL™L›N×*ˆGð ×3Ñ3ØØeó÷ ˆEð Ÿ*™*›,×&ˆEà˜E G¨UÐ#3Ð3ð
 —*‘*“,×ÐØ—-‘-“/×!Ñ!ðc 'ùð 0ùÜò 
	0ô �N‰NÐ>¸q¸cÐAbÐcÔdØ×$Ñ$Ó&×&Ñ&Ø ×-Ñ-Ó/×/Ð/ŽGûð
	0úð (ùð
 MúÜò Ø¤ A£Ñ&Ü—N‘NÐ%9¸#¸¸fÀZÀLÐPrÐ#sÕtà�Gõ uûðúð #ùà*ùðùð 'øð øØ!ùô ò 	Ü�L‰LÐ6°s°e¸2¸a¸SÐAÈDˆLÔQØ�r˜2�:Ôà—*‘*“,×ÑØ—-‘-“/×!Ò!ûð	ûð —*‘*“,×ÑØ—-‘-“/×!Ò!üs†  ‚AJ?ÁEÁJ?ÁE$ Á*E"Á+E$ Á/J?ÂGÂJ?ÂH Â%G Â<G	Â=G ÃH ÃHÃH Ã1HÃ2H ÄHÄH Ä#HÄ$
H Ä.J?ÅHÅJ?ÅHÅJ?Å"E$ Å$	GÅ-,F>ÆFÆF>Æ2F5Æ3F>Æ8J?Æ>GÇJ?Ç	G Ç	HÇ,HÈH ÈHÈH ÈH ÈH ÈH ÈJ?ÈJ?È	JÈ'!J ÉJÉ	J ÉJ?É I#É!J?É9I<É:J?Ê JÊJ ÊJ<ÊJÊJ<Ê5J8Ê6J<Ê<J?c              ƒ   óö   K  — | j                   r"| j                   j                  «       ƒ d {  –—†  | j                  r"| j                  j                  «       ƒ d {  –—†  t        j                  d«       y 7 ŒH7 Œ­w)NzBrowser service shut down.)r   r4   r   Ústopr   r   r   s    r   ÚshutdownzBrowserService.shutdownW   sZ   è ø€ Ø�=Š=Ø—-‘-×%Ñ%Ó'×'Ð'Ø×ÒØ×"Ñ"×'Ñ'Ó)×)Ð)Ü�‰Ð0Õ1ð (øà)ús!   ‚*A9¬A5­-A9ÁA7ÁA9Á7A9)Úloadi0u  )Ú__name__Ú
__module__Ú__qualname__r   r   r   Úclassmethodr   r   r   r/   Úintr   r   r   r:   r=   © ó    r   r	   r	      s°   „ Ø€IØ€HØ€Kàñó ðòMò

ñ
7"¨cð 7"¸sð 7"ÐVYð 7"ÐfkÐloÐquÐvzÐ{~ð  ADð  |Dñ  wEñ  rFð  HLð  MPð  RUð  MUñ  HVð  mVñ  gWó 7"ór2rE   r	   c               ƒ   ó^   K  — t         €t        j                  «       ƒ d {  –—† a t         S 7 Œ
­wr   )Úbrowser_servicer	   r   rD   rE   r   Úget_browserrH   `   s(   è ø€ äÐÜ .× ;Ñ ;Ó =×=ˆÜÐð >ús   ‚- +¡-)r0   ÚloggingÚplaywright.async_apir   Útypingr   r   r   r   Ú	getLoggerr?   r   r	   rG   rH   rD   rE   r   ú<module>rM      s?   ðÛ Û Ý 1ß .Ó .à	ˆ×	Ñ	˜8Ó	$€÷T2ñ T2ðl €órE   