
    ij                         d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ  G d
 d          ZdS )aj  
Archive Get - High-level Operation

This module retrieves an archived page from archive.is.

Features:
 - Optionally start from an existing search/results page (from_check=True)
 - Otherwise perform a search for the given URL
 - Click the first result link ('.TEXT-BLOCK > a:nth-child(1)')
 - Perform small scrolls: down, down, up using primitive scroll helper
    N)DictAnyOptional)Page)ManagedPage)ClickElement)
PressEnter)TypeText)
ScrollPagec                   N    e Zd ZdZd Zd
dedee         dede	ee
f         fd	ZdS )
ArchiveGetz
    Get an archived page from archive.is.

    Usage:
        getter = ArchiveGet()
        result = await getter.get(page, url, from_check=False)
    c                     t                      | _        t                      | _        t	                      | _        t                      | _        t          d           dS )zInitialize the archive getter.u   📥 ArchiveGet initializedN)	r   clickerr
   typerr	   presserr   scrollerprint)selfs    >/home/byschii/byschiidev/penelope/lib/highlevel/archive_get.py__init__zArchiveGet.__init__"   sC    #~~ZZ
!||"+,,,,,    NFmanaged_pageurl
from_checkreturnc                   K   	 |j         }t          d| d| d           |s|sdd|dS t          d           |                    dd	
           d{V  t          j        d           d{V  t          d           | j                            |d           d{V }|                    d          sd|d|                    d           dS t          d|            | j        	                    ||           d{V }|                    d          sd|d|                    d           dS t          d           | j
                            |           d{V }|                    d          sd|d|                    d           dS t          j        d           d{V  d}t          d|            | j                            ||           d{V }	|	                    d          sSd}
	 |                                 d{V }
n# t          $ r d}
Y nw xY wd|d|	                    d           |j        |
dS t          j        d           d{V  t          d           | j                            |dd            d{V  t          j        d!           d{V  t          d"           | j                            |dd            d{V  t          j        d!           d{V  t          d#           | j                            |d$d            d{V  t          j        d%           d{V  	 |                                 d{V }|                                 d{V }
n# t          $ r d}d}
Y nw xY wd&||j        ||
d'd(}t          d)|j                    |S # t          $ r1}d|t%          |          d}t          d*|            |cY d}~S d}~ww xY w)+a  
        Get an archived page from archive.is.

        Args:
            page (Page): Playwright page to use
            url (str): URL to retrieve from archive (optional when from_check=True)
            from_check (bool): If True, assume caller already ran an archive check and
                               the page is showing results (don't re-run the search).

        Returns:
            Dict containing get result and archive content information
        u   📥 Getting archive for 'z' (from_check=)Fz,URL is required when not starting from check)successerrorr   u3   🌐 Navigating to archive.is to search for the URLzhttps://archive.isdomcontentloaded)
wait_untilN   u   👆 Clicking search input '#q'z#qr   zFailed to click search input: r   )r   r   r   u%   ⌨️ Typing URL into search input: zFailed to type URL: u   ⏎ Pressing Enter to searchzFailed to press Enter:    z.TEXT-BLOCK > a:nth-child(1)u!   👆 Clicking first result link: z#Failed to click first result link: )r   r   r   page_urlpage_contentg      ?u   🔽 Scrolling down (1)i  i  )distanceslowmog333333?u   🔽 Scrolling down (2)u   🔼 Scrolling upig?Tz1Clicked first result and performed scroll pattern)r   r   archive_url
page_titler%   messageu(   ✅ Archive get completed, resolved to: u   ❌ Archive get failed: )pager   gotoasynciosleepr   click_selectorgetr   typer   presscontent	Exceptionr   r   scrolltitlestr)r   r   r   r   r+   click_inputtype_resultpress_resultfirst_link_selectorclick_firstr%   r)   resulteerror_results                  r   r0   zArchiveGet.get*   s     b	 $DOsOO*OOOPPP  ' s',7enqrrrKLLLii 4ASiTTTTTTTTTmA&&&&&&&&& 7888$(L$?$?d$S$SSSSSSS"y11 @',SC~dodsdst{d|d|C~C~ CcCCDDD$(JOOD#$>$>>>>>>>"y11 v',SCtZeZiZijqZrZrCtCtuuu 4555%)\%7%7%=%=======#''	22 z',SCx]i]m]mnu]v]vCxCxyyy mA&&&&&&&&& #AK6IKKLLL $ ; ;LJ] ^ ^^^^^^^K??9-- #()-#7#7#7#7#7#7LL  ( ( (#'LLL(  %];??SZC[C[]] $$0   -$$$$$$$$$ +,,,-&&tc#&FFFFFFFFF-$$$$$$$$$+,,,-&&tc#&FFFFFFFFF-$$$$$$$$$%&&&-&&td3&GGGGGGGGG-$$$$$$$$$$#'::<<//////
%)\\^^333333 $ $ $!
#$
  #x( ,N F GTXGGHHHM 	  	  	  Q L
 0Q00111	 s   'N= B&N= A#N= 7AN= A&N= >H N= H(%N= 'H((%N= C>N= 4N N= NN= N)N= =
O8&O3-O83O8)NF)__name__
__module____qualname____doc__r   r   r   r7   boolr   r   r0    r   r   r   r      s         - - -o  o k o  o Z^ o kopsuxpxky o  o  o  o  o  o r   r   )rC   r-   typingr   r   r   patchright.async_apir   lib.page_managementr   lib.primitive.click_elementr   lib.primitive.press_enterr	   lib.primitive.type_textr
   lib.primitive.scroll_pager   r   rE   r   r   <module>rM      s   
 
  & & & & & & & & & & & & & & & & + + + + + + 4 4 4 4 4 4 0 0 0 0 0 0 , , , , , , 0 0 0 0 0 0@  @  @  @  @  @  @  @  @  @ r   