+
    UejU                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtH	t	H
t
HtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHt ]P8                  ! ]4      tR R ltR
R R	 llt R# )u8  Scrape CIRE por NIF.

Pesquisa `ConsultasCire.aspx` filtrando por NIF/NIPC e devolve uma linha por
publicação onde esse NIF aparece em qualquer papel. O parsing de blocos e datas
vive em `cire_common.py`, partilhado com o sweep nacional
(`cire_announcements.py`), que usa a mesma página com filtro por datas.
N)date)Any)build_clientextract_aspnet_statehttp_get	http_postrandom_delay)F_ACTOSF_ATEF_BTNF_DESDEF_DIASF_GRUPOF_NUMERO
F_PESQUISAF_TIPOF_TRIBUNAISURLparse_cire_pageparse_pt_datesplit_processc                    V ^8  d   QhR\         R\        \        \         \         3,          ,          R\         R,          /# )   
target_nifpartiesreturnN)strlistdict)formats   "app/scrapers/cire.py__annotate__r!   (   s2      # T#s(^(< t     c                 ~    V F6  pVP                  R 4      V 8X  g   K  VP                  R4      ;'       g    Ru # 	  R# )nifroleN)get)r   r   ps   && r    	_role_forr(   (   s7    55<:%55=((D(  r"   c                    V ^8  d   QhR\         R\         R\         R\        \        \         \        3,          ,          /# )r   r$   
company_iddaysr   )r   r   r   r   )r   s   "r    r!   r!   /   sC     N N	NN N 
$sCx.	Nr"   c                  "   \        4       ;_uu_4       GRj  xL
 p\        V\        4      G Rj  xL
 p\        VP                  4      p/ VC\
        R\        V \        V\        R\        R\        R\        R\        R\        R\        R/
Cp\        4       G Rj  xL
  \!        V\        VR\        /R7      G Rj  xL
 p. p^p	 \#        VP                  4      p
VP%                  V
R,          4       V
R,          '       g   MV	^8  d   \&        P)                  R	W	4       M}\        VP                  4      p/ VCR
RRR/Cp\        3 F  pVP+                  VR4       K  	  \        4       G Rj  xL
  \!        V\        VR\        /R7      G Rj  xL
 pV	^,          p	K  RRR4      GRj  xL
  X'       d
   X
R,          M^ p\&        P-                  RWV\/        V4      4       . pV EFJ  p\1        VP3                  R4      ;'       g    R4      w  ppV'       g   K5  VP3                  R4      ;'       g    Rp\5        VP3                  R4      4      ;'       g8    \5        VP3                  R4      4      ;'       g    \6        P8                  ! 4       p\;        T VP3                  R4      ;'       g    . 4      pTP=                  RTRRRTRTRTRVP3                  R4      ;'       g+    VP3                  R4      ;'       g    VP3                  R4      RVRVR \>        P@                  ! VR!R"7      R#R/
4       EKM  	  V#  EL EL EL EL EL EL EL  + GRj  xL 
 '       g   i     EL; i5i)$u   Pesquisa CIRE por NIF na janela escolhida. Devolve uma linha por
publicação onde o NIF aparece em qualquer papel (Insolvente, Administrador,
Credor, Reclamante, …).Nr$    	PesquisarReferer)dataheadersblockshas_nextz-cire %s: hit pagination safety cap at page %d__EVENTTARGETz(ctl00$ContentPlaceHolder1$Pager1$lnkNext__EVENTARGUMENTtotalz2cire nif=%s days=%s -> total_reported=%d parsed=%dprocessotribunalzCITIUS/CIREr0   u   data da propositura da ação_partiesr*   sourcecireprocess_numberjuizospeciesu   espécieespecieatorole_in_process
date_filedraw_jsonF)ensure_asciiraw_html)!r   r   r   r   textr   r   r   r   r   r	   r   r   r
   r   r   r   r   extendloggerwarningpopinfolenr   r&   r   r   todayr(   appendjsondumps)r$   r*   r+   clientinitialvspayloadr
all_blockspage	page_datavs_nextpager_payloadkr6   outentryr<   r=   r8   rB   r%   s   &&&                   r    scrape_cire_for_nifr^   /   s     ~~~ --!',,/

EDRRbR2;
 nFCg	3?OPP+-
'/Ii12Z((rzNPSZ*1662G!K!2M
 X!!!T* .  -)UXIYZZAAIDO ~R #-Ig!E
KKDcQVX[\fXgh "C -eii
.C.I.Ir J99Z(99M%))F+,  UYY'FGH zz| 	
 eii
399r:

j& .H599Z0\\EIIi4H\\EIIV[L\!4jDJJu5AD	
 2 JM - 	P( !ZM ~~~s   M(L6M(ML9A(ML< M;L?<B0M,M- MMMM((M)M(5AM(M(M(2#M(!M(83M(,4M(!M(:=M(9M<M?MMMM(M%	M
M%	M%		M()todos)!__doc__rO   loggingdatetimer   typingr   app.scrapers.baser   r   r   r   r   app.scrapers.cire_commonr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   	getLogger__name__rH   r(   r^    r"   r    <module>ri      sY           " 
		8	$N Nr"   