
    li_                     d    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  G d d          ZdS )	z1
Archive Save Plugin

Saves a URL to archive.is.
    N)DictAny)PluginMetadataPluginParameter)ClickElement)
PressEnterc                       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 )ArchiveSavePluginz
    Save a URL to archive.is.
    
    Supports two modes:
    - Normal: Navigate to archive.is, click URL input, submit
    - From check: Start from not-found page, click submit link
    zarchive-savezArchive SavePOSTz#d3b71cz#d8a80aurlzURL to SaveFzhttps://example.comz>URL to save to archive.is (required unless from_check is true))nametypelabelrequiredplaceholder	help_text
from_checkcheckboxzFrom check pagez3Start from not-found results page (skip navigation))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_save/plugin.pyvalidate_paramsz!ArchiveSavePlugin.validate_params0   sP    jj##))++ZZe44
 	G# 	GFFt    page_idc                   K   |                     dd                                          }|                     dd          }t          d| d|            |                    |           d{V }|j        }	 |                    d| d	           d{V  t                      }t                      }	|rt          d
           d}
|                    ||
d           d{V }|                     d          s6d|d|                     d           d|	                                 d{V  S t          d           |	
                    |d           d{V }|                     d          s6d|d|                     d           d|	                                 d{V  S t          j        d           d{V  nQt          d           |                    dd           d{V  t          j        d           d{V  t          d           d}|                    ||d           d{V }|                     d          s6d|d|                     d           d|	                                 d{V  S t          d           |	
                    |d           d{V }|                     d          s6d|d|                     d           d|	                                 d{V  S t          j        d           d{V  d|r|nd ||j        d!|rd"|z   nd# d$}t          d%           ||	                                 d{V  S # t          $ r@}t          d&|            |                    t#          |                     d{V   d}~ww xY w# |	                                 d{V  w xY w)'a>  
        Execute archive save operation.
        
        Args:
            browser_navigator: BrowserNavigator instance
            page_id: Page to use for operation
            params: Validated parameters (url, from_check)
            
        Returns:
            Dict with success status and current URL
        r   r   r   Fu   💾 Archive save: url=z, from_check=Nzsaving z to archiveu7   💾 Starting from not found page, clicking submit linkzc#CONTENT > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(1) > a:nth-child(1)i  )slowmosuccesszFailed to click submit link: error)r'   r   r(   u   💾 Pressing enter to submit2   )
base_delayzFailed to press enter:    u   💾 Navigating to archive.iszhttps://archive.is/domcontentloaded)
wait_until   u   💾 Clicking URL input fieldz#urlzFailed to click URL input: Tz(from not found page)zArchive save initiatedz for z from not found page)r'   r   r   current_urlmessageu   ✅ Archive save completedu   ❌ Archive save failed: )r   r   print_get_page_to_usepageset_busyr   r   click_selectorset_idlepressasynciosleepgotor   	Exception	set_errorstr)r    browser_navigatorr$   r   r   r   managed_pager3   clickerpressersubmit_selectorclick_resultpress_resulturl_selectorresultes                   r!   executezArchiveSavePlugin.execute:   s0      jj##))++ZZe44
FFF*FFGGG.??HHHHHHHH T	*''(B#(B(B(BCCCCCCCCC #nnG llG :'OPPP #H%,%;%;L/bf%;%g%ggggggg#''	22 #("!\AQAQRYAZAZ!\!\ L '')))))))))) 5666%,]]4B]%G%GGGGGGG#''	22 #("!V<;K;KG;T;T!V!V v ''))))))))))i mA&&&&&&&&&&
 5666ii 5BTiUUUUUUUUUmA&&&&&&&&& 5666%%,%;%;L,_c%;%d%ddddddd#''	22 #("!Z|?O?OPW?X?X!Z!Z J ''))))))))))= 5666%,]]4B]%G%GGGGGGG#''	22 #("!V<;K;KG;T;T!V!V 4 ''))))))))))' mA&&&&&&&&&  !>ss'>(#xfS4dGcMMNdff F /000 ''))))))))))  	 	 	1a11222((Q000000000	 ''))))))))))sA   9BM 1AM (CM AM ;AM 
N%%;N  N%%N( (O)__name__
__module____qualname____doc__r   r   metadatar   r=   r   r"   rH    r#   r!   r
   r
      s         ~"Y'O#1Z   O!'O  
  H0d38n t    h* h*T#s(^ h*X\]`be]eXf h* h* h* h* h* h*r#   r
   )rL   r8   typingr   r   lib.plugin_loaderr   r   lib.primitive.click_elementr   lib.primitive.press_enterr   r
   rN   r#   r!   <module>rS      s              = = = = = = = = 4 4 4 4 4 4 0 0 0 0 0 0S* S* S* S* S* S* S* S* S* S*r#   