§
    3¾ d*  ã                   ór   — d 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
mZ ddlmZ  G d„ d	e¦  «        Zd
S )z:
Scrapy Shell

See documentation in docs/topics/shell.rst
é    )ÚThread)ÚScrapyCommand)ÚRequest)ÚShell)ÚDefaultSpiderÚspidercls_for_request)Úguess_schemec                   óH   — e Zd ZdZddddœZd„ Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ ZdS )ÚCommandFTr   z!scrapy.dupefilters.BaseDupeFilter)Ú
KEEP_ALIVEÚLOGSTATS_INTERVALÚDUPEFILTER_CLASSc                 ó   — dS )Nz
[url|file]© ©Úselfs    ú5lib/python3.11/site-packages/scrapy/commands/shell.pyÚsyntaxzCommand.syntax   s   € Øˆ|ó    c                 ó   — dS )NzInteractive scraping consoler   r   s    r   Ú
short_desczCommand.short_desc   s   € Ø-Ð-r   c                 ó   — 	 dS )NzkInteractive console for scraping the given url or file. Use ./file.html syntax or full path for local file.r   r   s    r   Ú	long_desczCommand.long_desc   s   € ðBð	
ð 	
r   c                 óÄ   — t          j        | |¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                     dd	d
dd¬¦  «         d S )Nz-cÚcodez9evaluate the code in the shell, print the result and exit)ÚdestÚhelpz--spiderÚspiderzuse this spiderz--no-redirectÚno_redirectÚ
store_trueFz<do not handle HTTP 3xx status codes and print response as-is)r   ÚactionÚdefaultr   )r   Úadd_optionsÚadd_argument)r   Úparsers     r   r#   zCommand.add_options$   s   € ÝÔ! $¨Ñ/Ô/Ð/Ø×ÒØØØLð 	ñ 	
ô 	
ð 	
ð
 	×Ò˜J¨XÐ<MÐÑNÔNÐNØ×ÒØØØØØOð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó   — dS )zkYou can use this function to update the Scrapy objects that will be
        available in the shell
        Nr   )r   Úvarss     r   Úupdate_varszCommand.update_vars4   s	   € ð 	ˆr   c                 ó   — |r|d         nd }|rt          |¦  «        }| j        j        }t          }|j        r|                     |j        ¦  «        }n"|r t          |t          |¦  «        |d¬¦  «        }| j                             |¦  «        }| 	                    ¦   «         |_
        |j
                             ¦   «          |                      ¦   «          t          || j        |j        ¬¦  «        }|                     ||j         ¬¦  «         d S )Nr   T)Úlog_multiple)r(   r   )ÚurlÚredirect)r	   Úcrawler_processÚspider_loaderr   r   Úloadr   r   Ú_create_crawlerÚ_create_engineÚengineÚstartÚ_start_crawler_threadr   r(   r   r   )r   ÚargsÚoptsr+   r.   Ú	spiderclsÚcrawlerÚshells           r   ÚrunzCommand.run:   s  € ØÐ'ˆd1Œgˆg 4ˆØð 	$å˜sÑ#Ô#ˆCàÔ,Ô:ˆå!ˆ	ØŒ;ð 	Ø%×*Ò*¨4¬;Ñ7Ô7ˆIˆIØð 	Ý-Øw s™|œ|¨YÀTðñ ô ˆIð Ô&×6Ò6°yÑAÔAˆà ×/Ò/Ñ1Ô1ˆŒØŒ×ÒÑÔÐà×"Ò"Ñ$Ô$Ð$åg¨4Ô+;À$Ä)ÐLÑLÔLˆØŠ˜¨$Ô*:Ð&:ˆÑ;Ô;Ð;Ð;Ð;r   c                 óx   — t          | j        j        dddœ¬¦  «        }d|_        |                     ¦   «          d S )NF)Ústop_after_crawlÚinstall_signal_handlers)ÚtargetÚkwargsT)r   r-   r3   Údaemon)r   Úts     r   r4   zCommand._start_crawler_threadV   sD   € ÝØÔ'Ô-Ø(-È%ÐPÐPð
ñ 
ô 
ˆð ˆŒØ	Š‰	Œ	ˆ	ˆ	ˆ	r   N)Ú__name__Ú
__module__Ú__qualname__Úrequires_projectÚdefault_settingsr   r   r   r#   r(   r:   r4   r   r   r   r   r      s™   € € € € € àÐàØØ?ðð Ððð ð ð.ð .ð .ð
ð 
ð 
ð
ð 
ð 
ð ð ð ð<ð <ð <ð8ð ð ð ð r   r   N)Ú__doc__Ú	threadingr   Úscrapy.commandsr   Úscrapy.httpr   Úscrapy.shellr   Úscrapy.utils.spiderr   r   Úscrapy.utils.urlr	   r   r   r   r   ú<module>rN      sÁ   ððð ð
 Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ )Ð )Ð )Ð )Ð )Ð )ðMð Mð Mð Mð Mˆmñ Mô Mð Mð Mð Mr   