
    ,i                     l    d Z ddl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 )
zM
Archive Save - High-level Operation

This module saves a URL to archive.is.
    N)DictAny)Page)ManagedPage)ClickElement)
PressEnterc                   B    e Zd ZdZd Zd
dedededeee	f         fdZ
d	S )ArchiveSavez
    Save a URL to archive.is.

    Usage:
        saver = ArchiveSave()
        result = await saver.save(managed_page, url, from_check=False)
    c                 $    t          d           dS )zInitialize the archive saver.u   💾 ArchiveSave initializedN)print)selfs    ?/home/byschii/byschiidev/penelope/lib/highlevel/archive_save.py__init__zArchiveSave.__init__   s    ,-----    Fmanaged_pageurl
from_checkreturnc                 f  K   	 t          d| d| d           t                      }t                      }|rt          d           d}|                    ||d           d{V }|                    d	          sd
|d|                    d           dS t          d           |                    |j        d           d{V }|                    d	          sd
|d|                    d           dS t          j        d           d{V  n.|sd
ddS t          d           |j        	                    dd           d{V  t          j        d           d{V  t          d           d}	|                    ||	d           d{V }|                    d	          sd
|d|                    d           dS t          d           |                    |j        d           d{V }|                    d	          sd
|d|                    d           dS t          j        d           d{V  d|r|nd||j        j
        d|rd |z   nd! d"}
t          d#           |
S # t          $ r1}d
|t          |          d}t          d$|            |cY d}~S d}~ww xY w)%a^  
        Save a URL to archive.is.

        Args:
            page (Page): Playwright page to use
            url (str): URL to save to archive (optional when from_check=True)
            from_check (bool): If True, start from the not found page (click submit button)

        Returns:
            Dict containing save result and archive URL
        u    💾 Saving to archive.is (url='z', from_check=)u7   💾 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  )slowmoNsuccessFzFailed to click submit link: error)r   r   r   u   💾 Pressing enter to submit2   )
base_delayzFailed to press enter:    z5URL is required when not starting from not found page)r   r   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   r   click_selectorgetpresspageasynciosleepgotor   	Exceptionstr)r   r   r   r   clickerpressersubmit_selectorclick_resultpress_resulturl_selectorresulteerror_results                r   savezArchiveSave.save   s     Z	 USUU
UUUVVV"nnG llG @'OPPP #H%,%;%;L/bf%;%g%ggggggg#''	22 #("!\AQAQRYAZAZ!\!\   5666%,]]<3DQS]%T%TTTTTTT#''	22 #("!V<;K;KG;T;T!V!V   mA&&&&&&&&&&  #(!X   5666"',,-BOa,bbbbbbbbbmA&&&&&&&&& 5666%%,%;%;L,_c%;%d%ddddddd#''	22 #("!Z|?O?OPW?X?X!Z!Z   5666%,]]<3DQS]%T%TTTTTTT#''	22 #("!V<;K;KG;T;T!V!V   mA&&&&&&&&&  !>ss'>(+04fS4dGcMMNdff F /000M 	  	  	  Q L
 1a11222	 s@   BI5 A!I5 :"I5 B*I5 A!I5 *A
I5 5
J0?&J+%J0+J0N)F)__name__
__module____qualname____doc__r   r   r*   boolr   r   r4    r   r   r
   r
      sz         . . .f  f { f  f $ f [_`ceh`h[i f  f  f  f  f  f r   r
   )r8   r&   typingr   r   patchright.async_apir   lib.page_managementr   lib.primitive.click_elementr   lib.primitive.press_enterr   r
   r:   r   r   <module>r@      s              & & & & & & + + + + + + 4 4 4 4 4 4 0 0 0 0 0 0s  s  s  s  s  s  s  s  s  s r   