Ë
    >{j~6  ã                   óJ  — d Z ddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
 dZdZdZddd	œZd
Zej                   j#                  ej                   j%                  ej                   j'                  e«      «      d«      ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u  
æ�¾æ¡ƒè‹—æ—�è‡ªæ²»åŽ¿æ”¿åºœ - é€šçŸ¥å…¬å‘Š (www.songtao.gov.cn/xwdt/tzgg/)
CMS: TRS WCM
åˆ—è¡¨: é�™æ€�åˆ†é¡µ index_N.html (é¦–é¡µ /xwdt/tzgg/, å…±121é¡µ, ~20æ�¡/é¡µ)
      æ�¡ç›® <ul><li><a title="æ ‡é¢˜" href=".../YYYYMM/tYYYYMMDD_ID.html">æ ‡é¢˜</a> æ—¥æœŸ
è¯¦æƒ…: meta ArticleTitle/PubDate + div.TRS_UEDITOR æ­£æ–‡ (ä¿�ç•™ <p>/<table>)
      é™„ä»¶ ./P0*.doc ç›¸å¯¹è·¯å¾„è½¬ç»�å¯¹
æ ·æœ¬: https://www.songtao.gov.cn/xwdt/tzgg/202608/t20260810_90718762.html
ç”¨æ³•: python3 crawl_songtao_tzgg.py [--pages=N | N] [--sync-only]
é    N)ÚBeautifulSoupÚTagu   æ�¾æ¡ƒåŽ¿-é€šçŸ¥å…¬å‘Šzhttps://www.songtao.gov.cnz
/xwdt/tzggzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z%https://www.songtao.gov.cn/xwdt/tzgg/)z
User-AgentÚRefererz
2023-01-01zquality_results.dbz/root/search.dbzwww.songtao.gov.cnc                 ó0  — dd l }|j                  t        «      }|j                  d«       |j	                  «       }|j                  d«       d}| D ]Î  }	 |j                  d|j                  dd«      |j                  dd«      |j                  dd«      |j                  d	d«      |j                  d
d«      |j                  dd«      |j                  dd«      |j                  dd«      |j                  dd«      |j                  dd«      f
«       ||j                  z  }ŒÐ |j                  «        |j                  «        t        d|› dt        | «      |z
  › �«       |S # t        $ r,}t        d|j                  dd«      › d|› �«       Y d }~�Œ@d }~ww xY w)Nr   úPRAGMA busy_timeout=300000aî  CREATE TABLE IF NOT EXISTS crawl_results (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        site_id INTEGER DEFAULT 0,
        title TEXT, url TEXT, content TEXT,
        publish_date TEXT, summary TEXT,
        domain TEXT, category TEXT DEFAULT '',
        content_hash TEXT, crawl_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        industry TEXT DEFAULT '', group_name TEXT DEFAULT '',
        script_name TEXT DEFAULT '', attachments TEXT DEFAULT '[]',
        UNIQUE(domain, url)
    )z¥INSERT OR IGNORE INTO crawl_results (domain, title, url, content, publish_date, summary, industry, group_name, script_name, attachments) VALUES (?,?,?,?,?,?,?,?,?,?)ÚdomainÚ ÚtitleÚurlÚcontentÚpub_dateÚsummaryÚindustryÚ
group_nameÚscript_nameÚattachmentsú[]z  [push] ERR ú: z[push_to_searchdb] new=z skip=)Úsqlite3ÚconnectÚ
QUALITY_DBÚexecuteÚcursorÚgetÚrowcountÚ	ExceptionÚprintÚcommitÚcloseÚlen)ÚrecordsÚbatch_labelr   ÚconnÚcurÚn_newÚrÚes           ú'/root/gov_crawler/crawl_songtao_tzgg.pyÚpush_to_searchdbr)   #   ss  € ÛØ�?‰?œ:Ó&€DØ‡L�LÐ-Ô.Ø
�+‰+‹-€CØ‡K�Kð 
	ô 

ð €EØò :ˆð
	:Ø�K‰Kð xØ—‘�x Ó$ a§e¡e¨G°RÓ&8¸!¿%¹%ÀÀrÓ:JØ—‘�y "Ó% q§u¡u¨Z¸Ó'<¸a¿e¹eÀIÈrÓ>RØ—‘�z 2Ó&¨¯©¨l¸BÓ(?Ø—‘�} bÓ)¨1¯5©5°ÀÓ+EðGôð �S—\‘\Ñ!‰Eð:ð 	‡K�K„MØ‡J�J„LÜ	Ð# E 7¨&´°W³¸eÑ1CÐ0DÐ
EÔFØ€Løô ò 	:Ü�M !§%¡%¨¨b£/Ð!2°"°Q°CÐ8×9Ò9ûð	:ús   ÁCE Å 	FÅ)!FÆFc                  ó´  — dd l } 	 | j                  t        «      }|j                  d«       |j                  dt        f«      j                  «       }|j                  «        |st        d«       y | j                  t        d¬«      }|j                  d«       |j                  d«       dx}}	 |D ]Â  }|\	  }}	}
}}}}}}|j                  d	|	f«      }|j                  «       }	 |rF|j                  d
||
xs dd d |xs d|xs dd d |xs d|xs d|xs d|xs d|d   f	«       |dz  }nH|j                  d||	|
xs dd d |xs d|xs dd d |xs d|xs d|xs d|xs dt        |	f«       |dz  }ŒÄ |j                  «        |j                  dt        f«       |j                  «        |j                  dt        f«      j                  «       d   }|j                  «        t        d|› d|› d|› d�«       y # t        $ r}t        d|› �«       Y d }~y d }~ww xY w# t        $ r}t        d|	› d|› �«       Y d }~�ŒŽd }~ww xY w# |j                  «        w xY w)Nr   r   z�SELECT title, url, content, publish_date, summary, industry, group_name, script_name, attachments FROM crawl_results WHERE domain=? ORDER BY idz[sync] local read ERR: u   [sync] æœ¬åœ°æ²¡æœ‰æ•°æ�®i,  )ÚtimeoutzPRAGMA journal_mode=WALz'SELECT id FROM gov_raw WHERE page_url=?zƒUPDATE gov_raw SET title=?, content=?, publish_date=?, summary=?, industry=?, group_name=?, script_name=?, attachments=? WHERE id=?r	   i ¡ r   é   z«INSERT INTO gov_raw (title, page_url, content, publish_date, summary, industry, group_name, script_name, attachments, site_name, source_url) VALUES (?,?,?,?,?,?,?,?,?,?,?)z  [sync] ERR r   z±INSERT INTO gov_search(rowid,title,site_name,summary) SELECT r.id,r.title,r.site_name,r.summary FROM gov_raw r WHERE r.id NOT IN (SELECT rowid FROM gov_search) AND r.site_name=?z.SELECT COUNT(*) FROM gov_raw WHERE site_name=?z[sync] OK updated=z
 inserted=u    DBå…±u   æ�¡)r   r   r   r   ÚDOMAINÚfetchallr   r   r   Ú	SEARCH_DBÚfetchoneÚ	SITE_NAMEr   )r   r#   Úrowsr'   ÚdstÚupdÚinsr&   r
   r   r   r   r   ÚindÚgrpÚsnÚattr$   ÚrowÚtotals                       r(   Úsync_to_serverr<   F   s–  € Ûð
Ø�‰œzÓ*ˆØ�‰Ð1Ô2Ø�|‰|ð ^ÜˆIó
÷ ‰(‹*ð 	ð 	�
‰
Œñ ÜÐ)Ô*ØØ
�/‰/œ)¨Sˆ/Ó
1€CØ‡K�KÐ)Ô*Ø‡K�KÐ,Ô-Ø€M€Cˆ#ðØò 	2ˆAØHIÑEˆE�3˜ ¨7°C¸¸bÀ#Ø—+‘+ÐGÈ#ÈÓPˆCØ—,‘,“.ˆCð2ÙØ—K‘Kð ^Ø ¢¨B°°Ð 8¸(º.ÀbÈ7Ê=ÐVXÐZ^Ð[^ÐJ_Øš  C¢I¨2¨rªx°R¸ºÀÀcÈ!ÁfðNôOð ˜1‘H‘Cà—K‘Kð FØ  g¢m°°W°fÐ%=¸xº~È2ÐPWÒP]Ð[]Ð_cÐ`cÐOdØš  C¢I¨2¨rªx°R¸ºÀÄiÐQTðVôWð ˜1‘H�Cøð!	2ð& 	�
‰
ŒØ�‰ðQô ˆLô		ð
 	�
‰
ŒØ—‘ÐLÌyÈlÓ[×dÑdÓfÐghÑiˆà�	‰	ŒÜ	Ð˜s˜e :¨c¨U°&¸¸¸sÐ
CÕDøôQ ò ÜÐ'¨ sÐ+Ô,Üûðûô8 ò 2Ü˜ c U¨"¨Q¨CÐ0×1Ò1ûð2ûð 	�	‰	�úsP   †AG9 Â-4I Ã"BHÅ2A!I Ç9	HÈHÈHÈ	IÈ&H=È7I È=IÉI ÉIc                 ó°   — t        j                  dd| xs d«      } t        j                  dd| «      } t        j                  dd| «      j                  «       S )Nz$&middot;|&nbsp;|&#160;|\u200b|\ufeffr	   u   ^[â€¢Â·]\s*z\s+ú )ÚreÚsubÚstrip)Úts    r(   Úclean_titlerC   {   sG   € Ü
�‰Ð6¸¸AºGÀÓD€AÜ
�‰ˆ~˜r 1Ó%€AÜ�6‰6�&˜#˜qÓ!×'Ñ'Ó)Ð)ó    c                 óL  — t        j                  d| xs d«      }|r[t        |j                  d«      «      t        |j                  d«      «      t        |j                  d«      «      }}}|d›d|d›d|d›�S t        j                  d	| xs d«      }|r|j                  d
«      S y)Nu+   (\d{4})[å¹´\-/.](\d{1,2})[æœˆ\-/.](\d{1,2})r	   r,   é   é   Ú04dú-Ú02dz(\d{4})-(\d{2})-(\d{2})r   )r?   ÚsearchÚintÚgroup)ÚsÚmÚyÚmoÚds        r(   Únormalize_daterS   �   s‘   € Ü
�	‰	Ð@À!Â'ÀrÓJ€AÙÜ�q—w‘w˜q“z“?¤C¨¯©°«
£O´S¸¿¹À»³_ˆqˆ2ˆØ�C�˜˜"˜S˜  1 S 'Ð*Ð*Ü
�	‰	Ð,¨aªg°2Ó6€AÙØ�w‰w�q‹zÐØrD   c           
      ó<  — | dk(  rt         › t        › d�}nt         › t        › d| › d�}	 t        j                  |t        d¬«      }|j
                  dk(  rg dfS |j                  «        d	|_        t        |j                  d
«      }g }|j                  d«      D �]“  }|j                  dd¬«      }|sŒ|d   j                  «       }t        j                   d|«      }	|	sŒFt#        |j%                  d¬«      «      xs t#        |j                  dd«      «      }
|
sŒ�|j'                  d«      r|n4|j'                  d«      rd|z   nt         |j'                  d«      r|nd|z   z   }d}t        j                   d|j%                  «       «      }|r|j)                  d«      }|s{t        j                   d|j%                  «       «      }|rUt+        |j)                  d«      «      d›dt+        |j)                  d«      «      d›dt+        |j)                  d«      «      d›�}|j-                  |
||d œ«       �Œ– t/        «       }g }|D ]/  }|d!   |v rŒ|j1                  |d!   «       |j-                  |«       Œ1 |dfS # t        $ r}t        d| › d|› �«       g dfcY d }~S d }~ww xY w)"Nr,   ú/z/index_z.htmlé   ©Úheadersr+   i”  Fúutf-8úhtml.parserz
  [list] Pú ERR: ÚliÚaT©Úhrefr_   z/\d{6}/t\d+_\d+\.html$©rA   r
   r	   Úhttpú//úhttps:ú(\d{4}-\d{2}-\d{2})u"   (\d{4})å¹´(\d{1,2})æœˆ(\d{1,2})æ—¥rH   rI   rF   rJ   rG   )r
   r   r   r   )ÚBASE_URLÚ	LIST_PATHÚrequestsr   ÚHEADERSÚstatus_codeÚraise_for_statusÚencodingr   Útextr   r   Úfind_allÚfindrA   r?   rK   rC   Úget_textÚ
startswithrM   rL   ÚappendÚsetÚadd)Úpager   r&   Úsoupr'   Úitemsr\   r]   r_   rO   r
   Úfull_urlr   Úm2Úm3ÚseenÚuniqÚits                     r(   Ú
fetch_listr}   Œ   s   € Øˆq‚yÜ�
œ9˜+ QÐ'‰ä�
œ9˜+ W¨T¨F°%Ð8ˆð	Ü�L‰L˜¤g°rÔ:ˆØ�=‰=˜CÒØ�u�9ÐØ	×ÑÔØˆŒ
Ü˜QŸV™V ]Ó3ˆð €EØ�m‰m˜DÓ!ó NˆØ�G‰G�C˜dˆGÓ#ˆÙØØ�‰y�‰Ó ˆÜ�I‰IÐ/°Ó6ˆÙØÜ˜AŸJ™J¨T˜JÓ2Ó3ÒV´{À1Ç5Á5ÈÐRTÓCUÓ7VˆÙØØŸ?™?¨6Ô2‘4ÈDÏOÉOÐ\`ÔLa¸ÀDºÔgoÐ{÷  |Kñ  |Kð  LOô  |PÑswð  VYð  \`ñ  V`ñ  haˆØˆÜ�Y‰YÐ-¨r¯{©{«}Ó=ˆÙØ—x‘x “{ˆHÙÜ—‘Ð@À"Ç+Á+Ã-ÓPˆBÙÜ! "§(¡(¨1£+Ó.¨sÐ3°1´S¸¿¹À!»Ó5EÀcÐ4JÈ!ÌCÐPR×PXÑPXÐYZÓP[ÓL\Ð]`ÐKaÐb�Ø�‰˜u¨XÀ8ÑLÖMð)Nô* ‹5€DØ€DØò ˆØˆe‰9˜ÑØØ�‰��E‘ÔØ�‰�B�ð	ð
 �ˆ:ÐøôA ò Ü�
˜4˜&  q cÐ*Ô+Ø�5ˆyÕûðús#   ©.I3 Á-I3 É3	JÉ<JÊJÊJc           	      ó6  ‡‡— 	 t        j                  | t        d¬«      }|j                  «        d|_        t        |j                  d«      }d}|j                  dd	d
i¬«      }|r|j                  d«      rt        |d   «      }|snt        j                  d|j                  t        j                  «      }|r=t        t        j                  dd|j                  d«      j!                  «       «      «      }|s,|j                  d«      }|rt        |j#                  «       «      }d}|j                  dd	di¬«      }|r'|j                  d«      r|d   j!                  «       d d }|s3t        j                  d|j                  «      }|r|j                  d«      }|j%                  d«      xs$ |j%                  d«      xs |j%                  d«      }|€-|j'                  t        j(                  d«      ¬«      D ]  }	|	} n |€|d|g dœS g }
g }|j'                  d«      D �]@  }t+        |t,        «      sŒ|j                  d«      xs dj!                  «       }t        j                  d|t        j.                  «      sd|v sd|v st        j                  d|«      sŒ||j1                  d «      r|n4|j1                  d!«      rd"|z   nt2        |j1                  d#«      r|nd#|z   z   Št        |j#                  d$¬%«      «      xs' |j                  d&«      xs |j5                  d#«      d'   }t7        ˆfd(„|
D «       «      s|
j9                  |‰d)œ«       |j9                  |«       �ŒC |D ]&  }|j;                  d*«      }|sŒ|j=                  «        Œ( |j'                  dd$¬+«      D ]·  }|d   j!                  «       }|j1                  d,«      r$|d-d  }t2        d#z   |j?                  d#«      z   |d<   ŒK|j1                  d#«      s$|j1                  d «      rŒn|j1                  d.«      rŒ€|j1                  d!«      rd"|z   nt2        |j1                  d#«      r|nd#|z   z   |d<   Œ¹ |j'                  d/«      D ]a  }|j                  d0d«      }|sŒ|j1                  d «      rŒ*|j1                  d!«      rd"|z   nt2        |j1                  d#«      r|nd#|z   z   |d0<   Œc |jA                  d1«      D ]  }	|	j=                  «        Œ |j'                  t        j(                  d2«      ¬3«      D ]9  }	|	j;                  d*«      xs |	j;                  d4«      }|sŒ*|j=                  «        Œ; tC        |jE                  «       «      Št        j                  d5d‰t        j                  t        j.                  z  ¬6«      Št        j                  d7d‰t        j                  t        j.                  z  ¬6«      Št        j                  d8d9‰«      Št        j                  d:d‰«      Št        j                  d;d‰t        j                  ¬6«      Št        j                  d<d‰t        j                  ¬6«      Š|
rDt7        ˆfd=„|
D «       «      }|s.djG                  d>„ |
D «       «      }‰jI                  «       d?z   |z   ŠtK        t        j                  d@d‰«      j!                  «       «      }dA‰v }dB‰v xs dC‰v }|dDk  r|s|s	|
s|d||
dœS |‰||
dœS # t        $ r}t        d| › d|› �«       Y d }~y d }~ww xY w)ENrV   rW   rY   rZ   z  [detail] r[   r	   ÚmetaÚnameÚArticleTitle)Úattrsr   z<title>(.*?)</title>u   [-_â€”]\s*æ�¾æ¡ƒ.*$r,   Úh1ÚPubDateé
   rd   zdiv.TRS_UEDITORzdiv.trs_editor_viewzdiv.contentz8TRS_UEDITOR|trs_editor_view|article-content|body_content)Úclass_©r
   r   r   r   r]   r_   z)\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|7z)$z/document/downloadz/attachment/z/P\d+\.ra   rb   rc   rU   Tr`   Údownloadéÿÿÿÿc              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w©r   N© )Ú.0ÚxÚabs_urls     €r(   ú	<genexpr>zparse_detail.<locals>.<genexpr>í   s   øè ø€ Ò9¨q�q˜‘x 7Õ*Ñ9ùs   ƒ)r€   r   Úpr^   z./rF   Ú
javascriptÚimgÚsrczadiv.share, div.ewm, div.qrcode, div.jzgov-qrcode-div, div.app-share, div.print, div.bshare-customu    æ‰«ä¸€æ‰«|åˆ†äº«åˆ°|æ‰“å�°æœ¬é¡µ)ÚstringÚdivz<script[^>]*>.*?</script>)Úflagsz<style[^>]*>.*?</style>z<p[^>]*>z<p>z
<p>\s*</p>z\s*<div id=\"docAppendix\".*$z\s*<div class=\"video\".*$c              3   ó,   •K  — | ]  }|d    ‰v –— Œ y­wr‹   rŒ   )r�   r]   Ú	body_htmls     €r(   r�   zparse_detail.<locals>.<genexpr>  s   øè ø€ Ò:°�a˜‘h )Ô+Ñ:ùs   ƒc              3   ó`   K  — | ]&  }d |d   › dt        j                  |d   «      › d�–— Œ( y­w)z<p><a href="r   z">r€   z</a></p>N)Úhtml_modÚescape)r�   r]   s     r(   r�   zparse_detail.<locals>.<genexpr>  s3   è ø€ ÒmÐcd ¨a°©h¨Z°r¼(¿/¹/È!ÈFÉ)Ó:TÐ9UÐU]Ô^Ñmùs   ‚,.ú
ú<[^>]+>z<imgz<iframeÚvideoé   )&rg   r   rh   rj   rk   r   rl   r   r   rn   rC   r?   rK   ÚSr@   rM   rA   ro   Ú
select_onerm   ÚcompileÚ
isinstancer   ÚIrp   re   ÚsplitÚanyrq   Úfind_parentÚ	decomposeÚlstripÚselectÚstrÚdecode_contentsÚjoinÚrstripr    )r   r&   ru   r'   r
   rO   Úhr   Úbody_elÚelÚattsÚ	att_linksr]   r_   r€   r‘   r“   r”   Úhas_attÚatt_htmlÚtext_lenÚhas_imgÚ	has_videor�   r™   s                          @@r(   Úparse_detailrº   »   s¢  ù€ ðÜ�L‰L˜¤g°rÔ:ˆØ	×ÑÔØˆŒ
Ü˜QŸV™V ]Ó3ˆð
 €EØ�	‰	�& ¨Ð 8ˆ	Ó9€AÙˆQ�U‰U�9ÔÜ˜A˜i™LÓ)ˆÙÜ�I‰IÐ-¨q¯v©v´r·t±tÓ<ˆÙÜ¤§¡Ð'=¸rÀ1Ç7Á7È1Ã:×CSÑCSÓCUÓ VÓWˆEÙØ�I‰I�d‹OˆÙÜ §
¡
£Ó-ˆEà€HØ�	‰	�& ¨Ð 3ˆ	Ó4€AÙˆQ�U‰U�9ÔØ�Y‘<×%Ñ%Ó'¨¨Ð,ˆÙÜ�I‰IÐ,¨a¯f©fÓ5ˆÙØ—w‘w˜q“zˆHà�o‰oÐ/Ó0Ò|°D·O±OÐDYÓ4ZÒ|Ð^b×^mÑ^mÐn{Ó^|€GØ€Ø—-‘-¤r§z¡zÐ2lÓ'm�-Ónò 	ˆBØˆGÙð	ð €Ø¨2¸8ÐTVÑWÐWð €DØ€IØ×Ñ˜cÓ"ó 	 ˆÜ˜!œSÔ!ØØ—‘�f“Ò# ×*Ñ*Ó,ˆÜ�9‰9ÐAÀ4ÌÏÉÔNÐRfÐjnÑRnð  sAð  EIñ  sIô  MO÷  MVñ  MVð  Wað  cgõ  MhØ"Ÿo™o¨fÔ5‘dÈtÏÉÐ_cÔOd¸HÀtºOÔjrð  C÷  Nñ  Nð  ORô  SÑvzð  Y\ð  _cñ  Ycñ  kdˆGÜ˜qŸz™z°˜zÓ5Ó6Òb¸!¿%¹%À
Ó:KÒbÈtÏzÉzÐZ]ËÐ_aÑObˆDÜÓ9°DÔ9Ô9Ø—‘ T°'Ñ:Ô;Ø×Ñ˜QÖð	 ð ò ˆØ�M‰M˜#ÓˆÚØ�K‰K�Mðð
 ×Ñ˜c¨ÐÓ-ò BˆØ�‰y�‰Ó ˆØ�?‰?˜4Ô Ø˜˜�8ˆDÜ  3™¨¯©°SÓ)9Ñ9ˆAˆfŠIØ�_‰_˜SÔ!¨$¯/©/¸&Õ*AÈ$Ï/É/ÐZfÕJgØ,0¯O©O¸DÔ,A˜ DšÄxÐ[_×[jÑ[jÐknÔ[oÑSWÐuxÐ{Ñuñ  HAˆAˆfŠIðBð ×Ñ Ó&ò ~ˆØ�g‰g�e˜RÓ ˆÚ�s—~‘~ fÕ-Ø,/¯N©N¸4Ô,@˜( Sš.ÄhÐY\×YgÑYgÐhkÔYlÑRUÐruÐx{Ñr{ÑF|ˆC�ŠJð~ð
 �n‰nð  Aó  Bò ˆØ
�‰�ðà×Ñ¤b§j¡jÐ1SÓ&TÐÓUò ˆØ�N‰N˜3ÓÒ8 2§>¡>°%Ó#8ˆÚØ�K‰K�Mðô
 �G×+Ñ+Ó-Ó.€IÜ—‘Ð3°R¸Ì"Ï$É$ÔQS×QUÑQUÉ+ÔV€IÜ—‘Ð1°2°yÌÏÉÌrÏtÉtÉÔT€IÜ—‘�{ E¨9Ó5€IÜ—‘�} b¨)Ó4€IÜ—‘Ð7¸¸YÌbÏdÉdÔS€IÜ—‘Ð4°b¸)Ì2Ï4É4ÔP€IáÜÓ:°TÔ:Ó:ˆÙØ—w‘wÑmÐhlÔmÓmˆHØ!×(Ñ(Ó*¨TÑ1°HÑ<ˆIä”2—6‘6˜* b¨)Ó4×:Ñ:Ó<Ó=€HØ˜	Ð!€GØ˜YÐ&Ò>¨'°YÐ*>€IØ�!‚|™G©I¹dØ¨2¸8ÐTXÑYÐYØ y¸hÐW[Ñ\Ð\øôy ò Ü�˜C˜5  q cÐ*Ô+Üûðús   „A	[4 Û4	\Û=\Ü\c                  óò  — dt         j                  v } d }t         j                  dd  D ]O  }|j                  d«      r 	 t        |j	                  dd«      d   «      }Œ4|j                  «       sŒEt        |«      }ŒQ t        d|› d| › �«       | rt        «        y g }t        dd«      D �]M  }|r||kD  r �nCt        |«      \  }}t        d|› d	t        |«      › �«       |s �n|D �]	  }|d
   r'|d
   t        k  rt        d|d
   › d|d   d d › �«       Œ0t        |d   «      }|€!t        d|d   d d › �«       |d   d|d
   g dœ}t        t        |d   xs |d   |d   |d   |d
   xs |d
   t!        j"                  dd|d   «      d d ddt$        j&                  j)                  t         j                  d   «      |d   rt+        j,                  |d   d¬«      nddœ}	|j/                  |	«       �Œ |r�ŒN n t        dt        |«      › �«       |rXt1        |t$        j&                  j)                  t         j                  d   «      «       dt         j                  v rt        «        y y y # t
        $ r Y �ŒMw xY w) Nz--sync-onlyr,   z--pages=ú=z[AutoPg] max_pages=z sync_only=iè  z[list] Pz: items=r   z  [cutoff] r>   r
   é(   r   z	  [fail] é2   r	   r‡   r   rž   éÈ   u   è´µå·žr   r   F)Úensure_asciir   )r   Ú	site_namer
   r   r   r   r   r   r   r   r   z[total] valid=z--sync)ÚsysÚargvrp   rL   r¦   Ú
ValueErrorÚisdigitr   r<   Úranger}   r    ÚCUTOFFrº   r-   r1   r?   r@   ÚosÚpathÚbasenameÚjsonÚdumpsrq   r)   )
Ú	sync_onlyÚ	max_pagesr]   ÚvalidÚpgrv   Úhas_nextr|   ÚdetÚrecs
             r(   ÚmainrÔ      s…  € Ø¤§¡Ð)€IØ€IÜ�X‰X�a�bˆ\ò ˆØ�<‰<˜
Ô#ðÜ §¡¨¨Q£°Ñ 2Ó3‘	ð �Y‰Y�[Ü˜A›‰Iðô 
Ð 	˜{¨+°i°[Ð
AÔBÙÜÔØà€EÜ�A�t‹nó ˆÙ˜˜išÚÜ$ R›.‰ˆˆxÜ�˜˜˜H¤S¨£Z LÐ1Ô2ÙÚØó 	ˆBØ�*Š~ " Z¡.´6Ò"9Ü˜ B z¡NÐ#3°1°R¸±[ÀÀ"Ð5EÐ4FÐGÔHØÜ˜r %™yÓ)ˆCØˆ{Ü˜	 " W¡+¨c¨rÐ"2Ð!3Ð4Ô5Ø " 7¡¸ÈÈ:ÉÐgiÑj�ä Ü&Ø˜W™Ò4¨¨G©Ø˜%‘yØ˜y™>Ø 
™OÒ=¨r°*©~ÜŸ6™6 *¨b°#°i±.ÓAÀ$À3ÐGØØ&Ü!Ÿw™w×/Ñ/´·±¸±Ó<ØUXÐYfÒUgœtŸz™z¨#¨mÑ*<È5ÕQÐmqñˆCð �L‰L˜Öð+	ó, Ùð=ô> 
ˆNœ3˜u›:˜,Ð
'Ô(ÙÜ˜¤§¡× 0Ñ 0´·±¸!±Ó =Ô>Ø”s—x‘xÑÜÕð  ð øôU ò Úðús   ½I)É)	I6É5I6Ú__main__) Ú__doc__rg   r?   rÂ   rÈ   rË   Úhtmlr›   Úbs4r   r   r1   re   rf   rh   rÇ   rÉ   r®   ÚdirnameÚabspathÚ__file__r   r/   r-   r)   r<   rC   rS   r}   rº   rÔ   Ú__name__rŒ   rD   r(   ú<module>rÝ      s¿   ðñ	ó Û 	Û 
Û 	Û Û ß "à$€	Ø'€Ø€	ð DØ6ñ€ð 
€à�W‰W�\‰\˜"Ÿ'™'Ÿ/™/¨"¯'©'¯/©/¸(Ó*CÓDÐFZÓ[€
Ø€	Ø	€ò òF2Eòj*òò,ò^b]òJ4ðn ˆzÒÙ…Fð rD   