§
    ®eîim  ã                   óÚ  — d Z ddlmZmZmZmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZ dded	ee         d
eeef         fd„Zddeded	ee         d
efd„Z	 ddddddœdededee         dee         ded         dee         dee         d
e	fd„Zdeded
e
fd„Zdeded
e
fd„Z	 ddddddœdededee         dee         ded         dee         dee         d
e	fd„Zdeded
e
fd„ZdS )z.
Scraping functionality for Firecrawl v2 API.
é    )ÚOptionalÚDictÚAnyÚLiteralé   )ÚScrapeOptionsÚDocumentÚBrowserExecuteResponseÚBrowserDeleteResponse)Únormalize_document_input)Ú
HttpClientÚhandle_response_errorÚprepare_scrape_optionsÚvalidate_scrape_optionsNÚurlÚoptionsÚreturnc                 óî   — | r|                       ¦   «         st          d¦  «        ‚d|                       ¦   «         i}|�7t          |¦  «        }|�&t          |¦  «        }|r|                     |¦  «         |S )zò
    Prepare a scrape request payload for v2 API.
    
    Args:
        url: URL to scrape
        options: ScrapeOptions (snake_case) to convert and include
        
    Returns:
        Request payload dictionary with camelCase fields
    zURL cannot be emptyr   )ÚstripÚ
ValueErrorr   r   Úupdate)r   r   Úrequest_dataÚ	validatedÚoptss        ú_/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/methods/scrape.pyÚ_prepare_scrape_requestr      s„   € ð ð 0�c—i’i‘k”kð 0ÝÐ.Ñ/Ô/Ð/à$)¨3¯9ª9©;¬;Ð#7€LàÐÝ+¨GÑ4Ô4ˆ	ØÐ Ý)¨)Ñ4Ô4ˆDØð *Ø×#Ò# DÑ)Ô)Ð)àÐó    Úclientc                 óv  — t          ||¦  «        }|                      d|¦  «        }|j        st          |d¦  «         |                     ¦   «         }|                     d¦  «        s#t          |                     dd¦  «        ¦  «        ‚|                     di ¦  «        }t          |¦  «        }t          di |¤ŽS )aJ  
    Scrape a single URL and return the document.
    
    The v2 API returns: { success: boolean, data: Document }
    We surface just the Document to callers.
    
    Args:
        client: HTTP client instance
        url: URL to scrape
        options: Scraping options (snake_case)
        
    Returns:
        Document
    z
/v2/scrapeÚscrapeÚsuccessÚerrorúUnknown error occurredÚdata© )	r   ÚpostÚokr   ÚjsonÚgetÚ	Exceptionr   r	   )r   r   r   ÚpayloadÚresponseÚbodyÚdocument_dataÚ
normalizeds           r   r    r    )   s³   € õ & c¨7Ñ3Ô3€Gà�{Š{˜<¨Ñ1Ô1€HàŒ;ð 2Ý˜h¨Ñ1Ô1Ð1à�=Š=‰?Œ?€DØ�8Š8�IÑÔð EÝ˜Ÿš Ð*BÑCÔCÑDÔDÐDà—H’H˜V RÑ(Ô(€MÝ)¨-Ñ8Ô8€JÝÐ!Ð!�jÐ!Ð!Ð!r   Únode©ÚpromptÚlanguageÚtimeoutÚoriginÚjob_idÚcoder2   r3   )Úpythonr0   Úbashr4   r5   c                ó¬  — |r|                      ¦   «         st          d¦  «        ‚|o|                      ¦   «         }|o|                      ¦   «         }|s|st          d¦  «        ‚d|i}	|r||	d<   |r||	d<   |�||	d<   |�||	d<   |                      d	|› d
�|	¦  «        }
|
j        st	          |
d¦  «         |
                     ¦   «         }|                     d¦  «        s#t          |                     dd¦  «        ¦  «        ‚t          |¦  «        }d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   t          di |¤ŽS )aÝ  
    Interact with the scrape-bound browser session for a scrape job.

    Either ``code`` or ``prompt`` must be provided.  When ``prompt`` is given
    the server runs an AI agent that translates the natural-language instruction
    into browser actions.

    Args:
        client: HTTP client instance
        job_id: Scrape job ID
        code: Code to execute (optional if prompt is provided)
        prompt: Natural-language instruction for the browser agent (optional if code is provided)
        language: Programming language ("python", "node", or "bash")
        timeout: Execution timeout in seconds (1-300)
        origin: Optional request origin tag

    Returns:
        BrowserExecuteResponse with execution output
    úJob ID cannot be emptyz*Either 'code' or 'prompt' must be providedr3   r7   r2   Nr4   r5   ú/v2/scrape/ú	/interactzinteract with scrape browserr!   r"   r#   ÚexitCodeÚ	exit_codeÚliveViewUrlÚlive_view_urlÚinteractiveLiveViewUrlÚinteractive_live_view_urlr%   )
r   r   r&   r'   r   r(   r)   r*   Údictr
   )r   r6   r7   r2   r3   r4   r5   Úhas_codeÚ
has_promptr-   r,   r+   r/   s                r   ÚinteractrG   H   sÇ  € ð: ð 3˜Ÿš™œð 3ÝÐ1Ñ2Ô2Ð2ØÐ$˜Ÿ
š
™œ€HØÐ*˜FŸLšL™NœN€JØð G˜Jð GÝÐEÑFÔFÐFð 	�Hð€Dð ð ØˆˆV‰Øð  ØˆˆX‰ØÐØ!ˆˆY‰ØÐØˆˆX‰à�{Š{Ð:¨Ð:Ð:Ð:¸DÑAÔA€HØŒ;ð HÝ˜hÐ(FÑGÔGÐGà�mŠm‰oŒo€GØ�;Š;�yÑ!Ô!ð HÝ˜Ÿš GÐ-EÑFÔFÑGÔGÐGå�g‘”€JØ�ZÐÐ K°zÐ$AÐ$AØ",¨ZÔ"8ˆ
�;ÑØ˜
Ð"Ð" ¸jÐ'HÐ'HØ&0°Ô&?ˆ
�?Ñ#Ø :Ð-Ð-Ð2MÐU_Ð2_Ð2_Ø2<Ð=UÔ2Vˆ
Ð.Ñ/Ý!Ð/Ð/ JÐ/Ð/Ð/r   c                 óV  — |r|                      ¦   «         st          d¦  «        ‚|                      d|› d�¦  «        }|j        st	          |d¦  «         |                     ¦   «         }t          |¦  «        }d|v rd|vr|d         |d<   d|v rd|vr|d         |d<   t          d	i |¤ŽS )
z²
    Stop the interaction session for a scrape job.

    Args:
        client: HTTP client instance
        job_id: Scrape job ID

    Returns:
        BrowserDeleteResponse
    r;   r<   r=   zstop interactionÚsessionDurationMsÚsession_duration_msÚcreditsBilledÚcredits_billedr%   )r   r   Údeleter'   r   r(   rD   r   )r   r6   r,   r+   r/   s        r   Ústop_interactionrN   Š   sÛ   € ð ð 3˜Ÿš™œð 3ÝÐ1Ñ2Ô2Ð2à�}Š}Ð<¨6Ð<Ð<Ð<Ñ=Ô=€HØŒ;ð <Ý˜hÐ(:Ñ;Ô;Ð;à�mŠm‰oŒo€GÝ�g‘”€JØ˜jÐ(Ð(Ð-BÈ*Ð-TÐ-TØ,6Ð7JÔ,Kˆ
Ð(Ñ)Ø˜*Ð$Ð$Ð)9ÀÐ)KÐ)KØ'1°/Ô'Bˆ
Ð#Ñ$å Ð.Ð. :Ð.Ð.Ð.r   c                 ó"   — t          | |¦  «        S ©z(Deprecated alias for stop_interaction().©rN   ©r   r6   s     r   Ústop_interactive_browserrS   ©   ó   € õ
 ˜F FÑ+Ô+Ð+r   c          	      ó.   — t          | ||||||¬¦  «        S )z Deprecated alias for interact().r1   )rG   )r   r6   r7   r2   r3   r4   r5   s          r   Úscrape_executerV   ±   s0   € õ ØØØØØØØðñ ô ð r   c                 ó"   — t          | |¦  «        S rP   rQ   rR   s     r   Údelete_scrape_browserrX   Ç   rT   r   )N)Ú__doc__Útypingr   r   r   r   Útypesr   r	   r
   r   Úutils.normalizer   Úutilsr   r   r   r   Ústrr   r    ÚintrG   rN   rS   rV   rX   r%   r   r   ú<module>r`      sê  ððð ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fðð  ð ¨x¸Ô/Fð ÐRVÐWZÐ\_ÐW_ÔR`ð ð ð ð ð2"ð "�:ð " Cð "°(¸=Ô2Ið "ÐU]ð "ð "ð "ð "ðD ð?0ð
 !Ø28Ø!Ø ð?0ð ?0ð ?0Øð?0àð?0ð �3Œ-ð?0ð
 �SŒMð?0ð Ð.Ô/ð?0ð �cŒ]ð?0ð �SŒMð?0ð ð?0ð ?0ð ?0ð ?0ðD/Øð/àð/ð ð/ð /ð /ð /ð>,Øð,àð,ð ð,ð ,ð ,ð ,ð ðð
 !Ø28Ø!Ø ðð ð Øðàðð �3Œ-ðð
 �SŒMðð Ð.Ô/ðð �cŒ]ðð �SŒMðð ðð ð ð ð,,Øð,àð,ð ð,ð ,ð ,ð ,ð ,ð ,r   