Ë
    ö0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                   ój   — e Zd ZdZdZdZed„ «       Zd„ Zd
de	de	de
dee	ee	   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    ú3/var/www/html/strategist-ai/app/services/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ÚurlÚ
wait_untilÚtimeoutÚreturnc              ƒ   ó  K  — | j                   j                  d¬«      ƒ 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 ŒÞ7 Œ¦# t        $ r6}dt        |«      v rt        j                  d	|› d
|› d�«       n|‚Y d}~ŒÞd}~ww xY w7 ŒÍ7 Œ·7 ŒŸ7 Œ‰7 Œm7 ŒW# 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.
        zuMozilla/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_agentNzNavigating to z with Playwright (wait_until=z)...)r   r   ÚTimeoutzTimeout reached for z with z". Proceeding with current content.é   za[href]z%elements => elements.map(e => e.href)ÚtitlezPlaywright failed to fetch z: T)Úexc_infoÚ )r   Únew_contextÚnew_pager   r   ÚgotoÚ	ExceptionÚstrÚwarningÚasyncioÚsleepÚcontentÚeval_on_selector_allr$   ÚcloseÚerror)
r   r   r   r   ÚcontextÚpageÚer/   Úlinksr$   s
             r   Úget_rendered_contentz#BrowserService.get_rendered_content   sè  è ø€ ð Ÿ™×1Ñ1ð Oð 2ó 
÷ 
ˆð ×%Ñ%Ó'×'ˆð	"Ü�K‰K˜.¨¨Ð-JÈ:È,ÐVZÐ[Ô\ðØ—i‘i °
ÀG�iÓL×LÐLô —-‘- Ó"×"Ð"à ŸL™L›N×*ˆGð ×3Ñ3°IÐ?fÓg×gˆEð Ÿ*™*›,×&ˆEà˜E G¨UÐ#3Ð3ð
 —*‘*“,×ÐØ—-‘-“/×!Ñ!ðA
øð (øð
 MùÜò Ø¤ A£Ñ&Ü—N‘NÐ%9¸#¸¸fÀZÀLÐPrÐ#sÕtà�Gô uûðúð #øà*øð høð 'øð øØ!ùô ò 	Ü�L‰LÐ6°s°e¸2¸a¸SÐAÈDˆLÔQØ�r˜2�:Ôà—*‘*“,×ÑØ—-‘-“/×!Ò!ûð	ûð —*‘*“,×ÑØ—-‘-“/×!Ò!üs3  ‚ H¢D£HºD»HÁ E+ ÁD Á4DÁ5D Á9E+ ÂEÂE+ Â)E!Â*E+ ÃE#ÃE+ ÃE%Ã
E+ Ã&HÃ9E'Ã:HÄE)ÄHÄHÄD Ä	EÄ&,EÅE+ ÅEÅE+ Å!E+ Å#E+ Å%E+ Å'HÅ)HÅ+	GÅ4!GÆGÆG ÆHÆ-F0Æ.HÇG	ÇHÇGÇG ÇH	Ç)G,Ç*H	ÈHÈH	È	H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   r1   r   Ústopr   r   r   s    r   ÚshutdownzBrowserService.shutdown?   sZ   è ø€ Ø�=Š=Ø—-‘-×%Ñ%Ó'×'Ð'Ø×ÒØ×"Ñ"×'Ñ'Ó)×)Ð)Ü�‰Ð0Õ1ð (øà)ús!   ‚*A9¬A5­-A9ÁA7ÁA9Á7A9)Úloadi0u  )Ú__name__Ú
__module__Ú__qualname__r   r   r   Úclassmethodr   r   r+   Úintr   r   r   r7   r:   © ó    r   r	   r	      s�   „ Ø€IØ€HØ€Kàñó ðòMñ
$"¨cð $"¸sð $"ÐVYð $"ÐfkÐloÐquÐvyÑqzð  }Að  BEð  GJð  BJñ  }Kð  mKñ  gLó $"óL2rB   r	   c               ƒ   ó^   K  — t         €t        j                  «       ƒ d {  –—† a t         S 7 Œ
­wr   )Úbrowser_servicer	   r   rA   rB   r   Úget_browserrE   H   s(   è ø€ äÐÜ .× ;Ñ ;Ó =×=ˆÜÐð >ús   ‚- +¡-)r-   ÚloggingÚplaywright.async_apir   Útypingr   r   r   r   Ú	getLoggerr<   r   r	   rD   rE   rA   rB   r   ú<module>rJ      s=   ðÛ Û Ý 1ß .Ó .à	ˆ×	Ñ	˜8Ó	$€÷<2ñ <2ð| €órB   