Ë
    µŒjŒ&  ã                   ó  — d Z ddlZddlZddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZ erddlmZ ddlmZ dd	lmZ dd
lmZmZmZ  ej4                  e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)zQLoader that uses Playwright to load a page, then uses unstructured to parse html.é    N)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAsyncIteratorÚDictÚIteratorÚListÚOptionalÚUnion)ÚDocument)Ú
BaseLoader)ÚBrowser)ÚPage)ÚResponse)r   r   r   c            	       óT   — e Zd ZdZedddddddefd	„«       Zedd
dddddefd„«       Zy)ÚPlaywrightEvaluatorzÁAbstract base class for all evaluators.

    Each evaluator should take a page, a browser instance, and a response
    object, process the page as necessary, and return the resulting text.
    Úpager   Úbrowserr   Úresponser   Úreturnc                  ó   — y)a  Synchronously process the page and return the resulting text.

        Args:
            page: The page to process.
            browser: The browser instance.
            response: The response from page.goto().

        Returns:
            text: The text content of the page.
        N© ©Úselfr   r   r   s       ú}/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/document_loaders/url_playwright.pyÚevaluatezPlaywrightEvaluator.evaluate   s   € ð 	ó    Ú	AsyncPageÚAsyncBrowserÚAsyncResponsec              ƒ   ó   K  — y­w)a  Asynchronously process the page and return the resulting text.

        Args:
            page: The page to process.
            browser: The browser instance.
            response: The response from page.goto().

        Returns:
            text: The text content of the page.
        Nr   r   s       r   Úevaluate_asyncz"PlaywrightEvaluator.evaluate_async+   s   è ø€ ð 	ùs   ‚N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   r"   r   r   r   r   r      sl   „ ñð ð˜Vð ¨ið À:ð ÐRUò ó ðð ðØðØ*8ðØDSðà	òó ñr   r   c                   óZ   — e Zd ZdZddeee      fd„Zddddd	d
defd„Zddddd	ddefd„Z	y)ÚUnstructuredHtmlEvaluatorz@Evaluate the page HTML content using the `unstructured` library.NÚremove_selectorsc                 óL   — 	 ddl }|| _        y# t        $ r t        d«      ‚w xY w)z%Initialize UnstructuredHtmlEvaluator.r   NzQunstructured package not found, please install it with `pip install unstructured`)ÚunstructuredÚImportErrorr*   )r   r*   r,   s      r   Ú__init__z"UnstructuredHtmlEvaluator.__init__?   s7   € ð	Ûð !1ˆÕøô ò 	Üð-óð ð	ús   ‚ Ž#r   r   r   r   r   r   r   c                 óT  — ddl m} | j                  xs g D ]J  }|j                  |«      j	                  «       }|D ]$  }|j                  «       sŒ|j                  d«       Œ& ŒL |j                  «       } ||¬«      }dj                  |D �	cg c]  }	t        |	«      ‘Œ c}	«      S c c}	w )z3Synchronously process the HTML content of the page.r   ©Úpartition_htmlúelement => element.remove()©Útextú

©
Úunstructured.partition.htmlr1   r*   ÚlocatorÚallÚ
is_visibler   ÚcontentÚjoinr'   ©
r   r   r   r   r1   ÚselectorÚelementsÚelementÚpage_sourceÚels
             r   r   z"UnstructuredHtmlEvaluator.evaluateK   s•   € å>à×-Ñ-Ò3°Ò3ˆHØ—|‘| HÓ-×1Ñ1Ó3ˆHÛ#�Ø×%Ñ%Õ'Ø×$Ñ$Ð%BÕCñ $ð 4ð —l‘l“nˆÙ! {Ô3ˆØ�{‰{©hÓ7©h¨œC �G¨hÑ7Ó8Ð8ùÒ7s   ÂB%r   r   r    c              ƒ   ó¬  K  — ddl m} | j                  xs g D ]b  }|j                  |«      j	                  «       ƒ d{  –—† }|D ]4  }|j                  «       ƒ d{  –—† sŒ|j                  d«      ƒ d{  –—†  Œ6 Œd |j                  «       ƒ d{  –—† } ||¬«      }dj                  |D �	cg c]  }	t        |	«      ‘Œ c}	«      S 7 Œˆ7 Œm7 ŒU7 Œ;c c}	w ­w)z4Asynchronously process the HTML content of the page.r   r0   Nr2   r3   r5   r6   r=   s
             r   r"   z(UnstructuredHtmlEvaluator.evaluate_asyncY   s¾   è ø€ õ 	?à×-Ñ-Ò3°Ò3ˆHØ!Ÿ\™\¨(Ó3×7Ñ7Ó9×9ˆHÛ#�Ø ×+Ñ+Ó-×-Ñ-Ø!×*Ñ*Ð+HÓI×IÑIñ $ð 4ð !ŸL™L›N×*ˆÙ! {Ô3ˆØ�{‰{©hÓ7©h¨œC �G¨hÑ7Ó8Ð8ð :øà-øØIøà*úâ7ùs]   ‚<C¾C¿CÁC	ÁCÁ!CÁ5CÁ6CÂCÂCÂ.CÃ CÃ	CÃCÃCÃC)N)
r#   r$   r%   r&   r
   r	   r'   r.   r   r"   r   r   r   r)   r)   <   sa   „ ÙJñ
1¨°$°s±)Ñ)<ó 
1ð9˜Vð 9¨ið 9À:ð 9ÐRUó 9ð9Øð9Ø*8ð9ØDSð9à	ô9r   r)   c                   óÊ   — e Zd ZdZ	 	 	 	 	 	 ddee   dededeee      dee   dee	eef      d	ee
eej                  e   f      fd
„Zdee   fd„Zdee   fd„Zdee   fd„Zy)ÚPlaywrightURLLoaderad  Load `HTML` pages with `Playwright` and parse with `Unstructured`.

    This is useful for loading pages that require javascript to render.

    Attributes:
        urls (List[str]): List of URLs to load.
        continue_on_failure (bool): If True, continue loading other URLs on failure.
        headless (bool): If True, the browser will run in headless mode.
        proxy (Optional[Dict[str, str]]): If set, the browser will access URLs
            through the specified proxy.
        browser_session (Optional[Union[str, os.PathLike[str]]]): Path to a file with
            browser session data that can be used to restore the browser session.

    Example:
        .. code-block:: python

            from langchain_community.document_loaders import PlaywrightURLLoader

            urls = ["https://api.ipify.org/?format=json",]
            proxy={
                "server": "https://xx.xx.xx:15818", # https://<host>:<port>
                "username": "username",
                "password": "password"
            }
            loader = PlaywrightURLLoader(urls, proxy=proxy)
            data = loader.load()
    NÚurlsÚcontinue_on_failureÚheadlessr*   Ú	evaluatorÚproxyÚbrowser_sessionc                 óÊ   — 	 ddl }|| _        || _        || _        || _        || _        |r|rt        d«      ‚|xs t        |«      | _	        y# t        $ r t        d«      ‚w xY w)z%Load a list of URLs using Playwright.r   NzMplaywright package not found, please install it with `pip install playwright`z:`remove_selectors` and `evaluator` cannot be both not None)
Ú
playwrightr-   rF   rG   rH   rJ   rK   Ú
ValueErrorr)   rI   )	r   rF   rG   rH   r*   rI   rJ   rK   rM   s	            r   r.   zPlaywrightURLLoader.__init__‡   s~   € ð	Ûð ˆŒ	Ø#6ˆÔ Ø ˆŒØˆŒ
Ø.ˆÔá¡	ÜØLóð ð
 #ÒQÔ&?Ð@PÓ&Qˆ�øô% ò 	Üð+óð ð	ús   ‚A ÁA"r   c           	   #   óŠ  K  — ddl m}  |«       5 }|j                  j                  | j                  | j
                  ¬«      }d}| j                  rht        j                  j                  | j                  «      r|j                  | j                  ¬«      }n"t        j                  d| j                  › �«       |€|j                  «       }| j                  D ]…  }	 |j                  «       }|j                  |«      }|€t!        d|› �«      ‚|j#                  d«       | j$                  j'                  |||«      }|j)                  «        d	|i}	t+        ||	¬
«      –— Œ‡ |j)                  «        ddd«       y# t,        $ r4}
| j.                  rt        j1                  d|› d|
› �«       n|
‚Y d}
~
ŒÙd}
~
ww xY w# 1 sw Y   yxY w­w)z Load the specified URLs using Playwright and create Document instances.

        Returns:
            A list of Document instances with loaded content.
        r   )Úsync_playwright©rH   rJ   N©Ústorage_stateúSession file not found: ú"page.goto() returned None for url ÚloadÚsource©Úpage_contentÚmetadataúError fetching or processing ú, exception: )Úplaywright.sync_apirP   ÚchromiumÚlaunchrH   rJ   rK   ÚosÚpathÚexistsÚnew_contextÚloggerÚwarningrF   Únew_pageÚgotorN   Úwait_for_load_staterI   r   Úcloser   Ú	ExceptionrG   Úerror)r   rP   Úpr   ÚcontextÚurlr   r   r4   rZ   Úes              r   Ú	lazy_loadzPlaywrightURLLoader.lazy_load¨   sŠ  è ø€ õ 	8áÔ !Ø—j‘j×'Ñ'°·±ÀdÇjÁjÐ'ÓQˆGØˆGà×#Ò#Ü—7‘7—>‘> $×"6Ñ"6Ô7Ø%×1Ñ1À×@TÑ@TÐ1ÓU‘Gä—N‘NÐ%=¸d×>RÑ>RÐ=SÐ#TÔUàˆØ!×-Ñ-Ó/�à—y”y�ð Ø"×+Ñ+Ó-�DØ#Ÿy™y¨›~�HØÐ'Ü(Ð+MÈcÈUÐ)SÓTÐTà×,Ñ,¨VÔ4àŸ>™>×2Ñ2°4¸À(ÓK�DØ—J‘J”LØ (¨#˜�HÜ"°¸xÔHÓHð !ð( �M‰MŒO÷C Ðøô4 !ò  Ø×/Ò/ÜŸ™Ø;¸C¸5ÀÈaÈSÐQõð  ˜ô	ûð ú÷5 ÐüsH   ‚G�C	F7ÃBE7ÅF7Å.	GÅ7	F4Æ *F/Æ*F7Æ/F4Æ4F7Æ7G Æ<Gc              ƒ   ó`   K  — | j                  «       2 �cg c3 d{  –—† }|‘Œ7 Œ6 c}S c c}w ­w)úçLoad the specified URLs with Playwright and create Documents asynchronously.
        Use this function when in a jupyter notebook environment.

        Returns:
            A list of Document instances with loaded content.
        N)Ú
alazy_load)r   Údocs     r   ÚaloadzPlaywrightURLLoader.aloadÓ   s*   è ø€ ð &*§_¡_Ô%6×7Ó7˜c’Ð7øÒ7Ð7ùÒ7ùs$   ‚.•)—%›#
œ%Ÿ)£%¥)¦.c           	     ó‚  K  — ddl m}  |«       4 ƒd{  –—† }|j                  j                  | j                  | j
                  ¬«      ƒ d{  –—† }d}| j                  rpt        j                  j                  | j                  «      r%|j                  | j                  ¬«      ƒ d{  –—† }n"t        j                  d| j                  › �«       |€|j                  «       ƒ d{  –—† }| j                  D ]®  }	 |j                  «       ƒ d{  –—† }|j                  |«      ƒ d{  –—† }|€t!        d|› �«      ‚|j#                  d«      ƒ d{  –—†  | j$                  j'                  |||«      ƒ d{  –—† }|j)                  «       ƒ d{  –—†  d	|i}	t+        ||	¬
«      ­–— Œ° |j)                  «       ƒ d{  –—†  ddd«      ƒd{  –—†  y7 �Œ¼7 �Œ†7 �Œ.7 Œó7 ŒÍ7 Œ¶7 Œ�7 Œl7 ŒV# t,        $ r5}
| j.                  rt        j1                  d|› d|
› �«       n|
‚Y d}
~
�Œ(d}
~
ww xY w7 Œk7 Œ]# 1 ƒd{  –—†7  sw Y   yxY w­w)rr   r   )Úasync_playwrightNrQ   rR   rT   rU   rV   rW   rX   r[   r\   )Úplaywright.async_apirw   r^   r_   rH   rJ   rK   r`   ra   rb   rc   rd   re   rF   rf   rg   rN   rh   rI   r"   ri   r   rj   rG   rk   )r   rw   rl   r   rm   rn   r   r   r4   rZ   ro   s              r   rs   zPlaywrightURLLoader.alazy_loadÜ   só  è ø€ õ 	:á#×%Ô%¨ØŸJ™J×-Ñ-°t·}±}ÈDÏJÉJÐ-ÓW×WˆGØˆGà×#Ò#Ü—7‘7—>‘> $×"6Ñ"6Ô7Ø$+×$7Ñ$7Ø&*×&:Ñ&:ð %8ó %÷ ‘Gô —N‘NÐ%=¸d×>RÑ>RÐ=SÐ#TÔUàˆØ '× 3Ñ 3Ó 5×5�à—y”y�ð Ø!(×!1Ñ!1Ó!3×3�DØ%)§Y¡Y¨s£^×3�HØÐ'Ü(Ð+MÈcÈUÐ)SÓTÐTà×2Ñ2°6Ó:×:Ð:à!%§¡×!>Ñ!>¸tÀWÈhÓ!W×W�DØŸ*™*›,×&Ð&Ø (¨#˜�HÜ"°¸xÔHÔHð !ð( —-‘-“/×!Ð!÷G &×%Ñ%ùØWùð
ùð 6øð 4øØ3øð ;øàWøØ&ùô !ò  Ø×/Ò/ÜŸ™Ø;¸C¸5ÀÈaÈSÐQõð  ˜õ	ûð úð "øðG &ø×%×%Ñ%üs  ‚H?”G•H?˜5H*ÁGÁAH*Â(GÂ)<H*Ã%GÃ&H*Ã:G%ÄGÄG%Ä&GÄ'(G%ÅGÅ$G%Å4G!Å5G%ÆG#ÆG%Æ%H*Æ:H&Æ;H*Æ?H?Ç
H(ÇH?ÇH*ÇH*ÇH*ÇG%ÇG%ÇG%Ç!G%Ç#G%Ç%	H#Ç.*HÈH*ÈH#È#H*È(H?È*H<È0H3È1H<È8H?)TTNNNN)r#   r$   r%   r&   r	   r'   Úboolr
   r   r   r   r`   ÚPathLiker.   r   r   rp   ru   r   rs   r   r   r   rE   rE   j   sØ   „ ñð> %)ØØ04Ø37Ø*.ØBFñRà�3‰iðRð "ðRð ð	Rð
 # 4¨¡9Ñ-ðRð Ð/Ñ0ðRð ˜˜S #˜X™Ñ'ðRð " %¨¨R¯[©[¸Ñ-=Ð(=Ñ">Ñ?óRðB)˜8 HÑ-ó )ðV8˜T (™^ó 8ð," -°Ñ"9ô ,"r   rE   ) r&   Úloggingr`   Úabcr   r   Útypingr   r   r   r   r	   r
   r   Úlangchain_core.documentsr   Ú)langchain_community.document_loaders.baser   rx   r   r   r   r   r   r    r]   Ú	getLoggerr#   rd   r   r)   rE   r   r   r   Ú<module>r�      so   ðÙ Wã Û 	ß #ß V× VÑ Vå -å @áÝ<Ý6Ý>ß;Ñ;ð 
ˆ×	Ñ	˜8Ó	$€ô#˜#ô #ôL+9Ð 3ô +9ô\^"˜*õ ^"r   