
    ki`                     |    d Z ddlZddlmZmZ ddlmZ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 )z
Archive Get Plugin

Retrieves an archived page from archive.is.
Can start from existing search results or perform a fresh search.
    N)DictAny)PluginMetadataPluginParameter)ClickElement)
PressEnter)TypeText)
ScrollPagec                       e Zd ZdZ edddgddg edddd	d
d           edddd	d          g          Zdeee	f         dedz  fdZ
dedeee	f         deee	f         fdZdS )ArchiveGetPluginz
    Get an archived page from archive.is.
    
    Supports two modes:
    - Fresh search: Navigate to archive.is, search for URL, click first result
    - From check: Assume page already shows results, click first result directly
    zarchive-getzArchive GetPOSTz#df5900z#ff9924urlzURL to RetrieveFzhttps://example.comzAURL to retrieve from archive (required unless from_check is true))nametypelabelrequiredplaceholder	help_text
from_checkcheckboxzFrom check pagez7Start from existing archive check results (skip search))r   r   r   defaultr   )r   descriptionmethodsbg_color
parametersparamsreturnNc                     |                     dd                                          }|                     dd          }|s|sdS dS )z@Validate that URL is provided when not starting from check page.r    r   Fz1URL is required when not starting from check pageN)getstrip)selfr   r   r   s       ?/home/byschii/byschiidev/penelope/plugins/archive_get/plugin.pyvalidate_paramsz ArchiveGetPlugin.validate_params3   sP    jj##))++ZZe44
 	G# 	GFFt    page_idc                 X
  K   |                     dd                                          }|                     dd          }t          d| d|            |                    |           d{V }|j        }	 |                    d|            d{V  t                      }t                      }	t                      }
t                      }|st          d	           |
                    d
d           d{V  t          j        d           d{V  t          d           |                    |d           d{V }|                     d          s6d|d|                     d           d|                                 d{V  S t          d|            |	                    ||           d{V }|                     d          s6d|d|                     d           d|                                 d{V  S t          d           |
                    |           d{V }|                     d          s6d|d|                     d           d|                                 d{V  S t          j        d           d{V  d}t          d|            |                    ||           d{V }|                     d          skd}	 |                                 d{V }n# t$          $ r Y nw xY wd|d|                     d           |j        |d|                                 d{V  S t          j        d           d{V  t          d           |                    |dd !           d{V  t          j        d"           d{V  t          d#           |                    |dd !           d{V  t          j        d"           d{V  t          d$           |                    |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                    ||                                 d{V  S # t$          $ r@}t          d+|            |                    t/          |                     d{V   d}~ww xY w# |                                 d{V  w xY w),aL  
        Execute archive get operation.
        
        Args:
            browser_navigator: BrowserNavigator instance
            page_id: Page to use for operation
            params: Validated parameters (url, from_check)
            
        Returns:
            Dict with success status, archive URL, and page content
        r   r   r   Fu   📥 Archive get: url=z, from_check=Nzgetting archive for u3   🌐 Navigating to archive.is to search for the URLzhttps://archive.isdomcontentloaded)
wait_until   u   👆 Clicking search input '#q'z#qsuccesszFailed to click search input: error)r+   r   r,   u   ⌨️ Typing URL: 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: )r    r!   print_get_page_to_usepageset_busyr   r	   r   r
   gotoasynciosleepclick_selectorset_idler   presscontent	Exceptionr   scrolltitle	set_errorstr)r"   browser_navigatorr&   r   r   r   managed_pager7   clickertyperpresserscrollerclick_inputtype_resultpress_resultfirst_link_selectorclick_firstr/   r3   resultes                        r#   executezArchiveGetPlugin.execute=   s      jj##))++ZZe44
EsEEEEFFF.??HHHHHHHH m	*''(Ds(D(DEEEEEEEEE #nnGJJE llG!||H  $'KLLLii 4ASiTTTTTTTTTmA&&&&&&&&& 7888$+$:$:<$N$NNNNNNN"y11 #("!\+//RYBZBZ!\!\ t ''))))))))))g 1C11222$)JJtS$9$9999999"y11 #("!R8P8P!R!R ` ''))))))))))S 4555%,]]4%8%8888888#''	22 #("!V<;K;KG;T;T!V!V L '')))))))))) mA&&&&&&&&& #AK6IKKLLL ' 6 6|EX Y YYYYYYYK??9-- #)-#7#7#7#7#7#7LL    D  %];??SZC[C[]] $$0 d ''))))))))))S -$$$$$$$$$ +,,,//$S/AAAAAAAAA-$$$$$$$$$+,,,//$S/AAAAAAAAA-$$$$$$$$$%&&&//$c/BBBBBBBBB-$$$$$$$$$$#'::<<//////
%)\\^^333333 $ $ $!
#$
  #x( ,N F GTXGGHHH ''))))))))))  	 	 	0Q00111((Q000000000	 ''))))))))))s   9C:S  AS  AS  <A!S  K9 8S  9
LS  L%S  C/S  64Q+ *S  +Q<9S  ;Q<<)S   
T

;TT

T T))__name__
__module____qualname____doc__r   r   metadatar   rD   r   r$   rR    r%   r#   r   r      s         ~!Y'O'1]   O!'S  
  H0d38n t    A* A*T#s(^ A*X\]`be]eXf A* A* A* A* A* A*r%   r   )rV   r:   typingr   r   lib.plugin_loaderr   r   lib.primitive.click_elementr   lib.primitive.press_enterr   lib.primitive.type_textr	   lib.primitive.scroll_pager
   r   rX   r%   r#   <module>r_      s              = = = = = = = = 4 4 4 4 4 4 0 0 0 0 0 0 , , , , , , 0 0 0 0 0 0l* l* l* l* l* l* l* l* l* l*r%   