Ë
    ®{jW8  ã                   ón  — 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dlmZ dZdZdZdZd	Zd
ZdZdde› d�dœZdZej,                  j/                  ej,                  j1                  ej,                  j3                  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.zjxc.gov.cn/col/col1229789309/index.html)
CMS: æµ™æ±Ÿæ”¿åŠ¡ JCMS (ZJSJYH å�•å…ƒæž„å»º)
åˆ—è¡¨: GET /api-gateway/jpaas-publish-server/front/page/build/unit
      params: parseType=bulidstatic&webId=2761&tplSetId=6pucDKzxQsGukk9oZp74P&pageType=column
              &tagId=å½“å‰�æ �ç›®åˆ—è¡¨1a&editType=null&pageId=1229789309
              &paramJson={"pageNo":N,"pageSize":15,"search":""}
      å“�åº” JSON data.html: <a href="/col/col.../art/YYYY/art_xxx.html">æ ‡é¢˜</a>
      count=11459 æ€»æ�¡æ•°, 15æ�¡/é¡µ -> 764é¡µ
è¯¦æƒ…: /col/col1229789309/art/2026/art_xxx.html
      æ­£æ–‡ div.ImporF_bd-main > div.artic_main > p
      å�‘å¸ƒæ—¶é—´: å�‘å¸ƒæ—¶é—´ï¼šYYYY-MM-DD HH:MM
      é™„ä»¶: /api-gateway/jpaas-web-server/front/document/download?fileUrl=... å¸¦ download å��
æ ·æœ¬: https://www.zjxc.gov.cn/col/col1229789309/art/2026/art_f23e7d9d82777ae765b177327484ad8b.html
ç”¨æ³•: python3 crawl_zjxc_tzgg.py [--pages=N | N] [--sync-only]
é    N)ÚBeautifulSoupÚTag)Úquoteu   æ–°æ˜ŒåŽ¿-é€šçŸ¥å…¬å‘Šzhttps://www.zjxc.gov.cnzNhttps://www.zjxc.gov.cn/api-gateway/jpaas-publish-server/front/page/build/unitÚ
1229789309u   å½“å‰�æ �ç›®åˆ—è¡¨1aÚ6pucDKzxQsGukk9oZp74PÚ2761zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zhttps://www.zjxc.gov.cn/col/colz/index.html)z
User-AgentÚRefererz
2023-01-01zquality_results.dbz/root/search.dbzwww.zjxc.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_zjxc_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@   Q   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_titlerG   †   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   r0   é   é   Ú04dú-Ú02dz(\d{4})-(\d{2})-(\d{2})r   )rC   ÚsearchÚintÚgroup)ÚsÚmÚyÚmoÚds        r,   Únormalize_daterW   Œ   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ÐØrH   c           	      ó,  — t        j                  | dddœd¬«      }dt        t        dt        dt
        |d	œ}	 t        j                  t        |t        d
¬«      }|j                  «        |j                  «       }|j                  d«      s%t        d| › d|j                  d«      › �«       g ddfS |d   d   }g }d}t        j                  d|«      }	|	rt        |	j!                  d«      «      }t#        |d«      }
|
j%                  dd¬«      D ]–  }|d   j'                  «       }d|vrŒt        j                  d|«      sŒ2t)        |j+                  d¬«      «      }|sŒP|j-                  d«      r|nt.        |j-                  d«      r|nd|z   z   }|j1                  ||dd œ«       Œ˜ t3        «       }g }|D ]/  }|d!   |v rŒ|j5                  |d!   «       |j1                  |«       Œ1 |d|fS # t        $ r }t        d| › d|› �«       g ddfcY d }~S d }~ww xY w)"Né   r   )ÚpageNoÚpageSizerO   F©Úensure_asciiÚbulidstaticÚcolumnÚnull)Ú	parseTypeÚwebIdÚtplSetIdÚpageTypeÚtagIdÚeditTypeÚpageIdÚ	paramJsoné   )ÚparamsÚheadersr/   Úsuccessz
  [list] Pz API fail: Úmessager   ÚdataÚhtmlú ERR: zcount="(\d+)"r0   úhtml.parserÚaT©Úhrefrt   z/art/z/art/\d{4}/art_[0-9a-f]+\.html$©rE   Úhttpú/)r   r   r   r   )ÚjsonÚdumpsÚWEB_IDÚTPL_SETÚTAG_IDÚPAGE_IDÚrequestsr   ÚAPI_URLÚHEADERSÚraise_for_statusr!   r    rC   rO   rP   rQ   r   Úfind_allrE   rG   Úget_textÚ
startswithÚBASE_URLÚappendÚsetÚadd)ÚpageÚ
param_jsonrj   r*   Újro   r+   ÚitemsÚcountrS   Úsouprr   rt   r   Úfull_urlÚseenÚuniqÚits                     r,   Ú
fetch_listr“   —   s  € Ü—‘ t¸ÀrÑJÐY^Ô_€Jà"ÜÜØÜØÜØñ	€Fð
Ü�L‰Lœ¨¼È"ÔMˆØ	×ÑÔØ�F‰F‹HˆØ�u‰u�YÔÜ�J˜t˜f K°·±°iÓ0@Ð/AÐBÔCØ�u˜a�<ÐØ�‰y˜Ñ ˆð €EØ€EÜ
�	‰	Ð" DÓ)€AÙÜ�A—G‘G˜A“J“ˆÜ˜˜}Ó-€DØ�]‰]˜3 Tˆ]Ó*ò 
HˆØ�‰y�‰Ó ˆØ˜$ÑØÜ�y‰yÐ;¸TÔBØÜ˜AŸJ™J¨T˜JÓ2Ó3ˆÙØØŸ?™?¨6Ô2‘4¼ÈDÏOÉOÐ\_ÔL`ÁDÐfiÐlpÑfpÑ8qˆØ�‰˜u¨XÀ2ÑFÕGð
Hô ‹5€DØ€DØò ˆØˆe‰9˜ÑØØ�‰��E‘ÔØ�‰�B�ð	ð
 ��uÐÐøô9 ò Ü�
˜4˜&  q cÐ*Ô+Ø�5˜!ˆ|Õûðús$   ¸A6G* Â/G* Ç*	HÇ3HÈHÈHc           	      ó*  ‡‡— 	 t        j                  | t        d¬«      }|j                  «        d|_        t        |j                  d«      }d}|j                  d«      }|rt        |j                  «       «      }|snt        j                  d	|j                  t        j                  «      }|r=t        t        j                  d
d|j!                  d«      j#                  «       «      «      }|s6|j                  dddi¬«      }|r|j                  d«      rt        |d   «      }d}t        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Œf|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                  |«       �Œ- |D ]&  }|j;                  d'«      }|sŒ|j=                  «        Œ( |	j'                  dd!¬(«      D ]“  }|d   j#                  «       }|j1                  d «      s5|j1                  d)«      s$|j1                  d«      rŒJ|j1                  d*«      rŒ\|j1                  d«      rd|z   nt2        |j1                  d «      r|nd |z   z   |d<   Œ• |	j'                  d+«      D ]a  }|j                  d,d«      }|sŒ|j1                  d«      rŒ*|j1                  d«      rd|z   nt2        |j1                  d «      r|nd |z   z   |d,<   Œc |	j?                  d-«      D ]  }
|
j=                  «        Œ |	j'                  t        j(                  d.«      ¬/«      D ]9  }
|
j;                  d'«      xs |
j;                  d0«      }|sŒ*|j=                  «        Œ; tA        |	jC                  «       «      Št        j                  d1d‰t        j                  t        j.                  z  ¬2«      Št        j                  d3d‰t        j                  t        j.                  z  ¬2«      Št        j                  d4d5‰«      Št        j                  d6d‰«      Št        j                  d7d‰t        j                  ¬2«      Št        j                  d8d‰t        j                  ¬2«      Š|rDt7        ˆfd9„|D «       «      }|s.djE                  d:„ |D «       «      }‰jG                  «       d;z   |z   ŠtI        t        j                  d<d‰«      j#                  «       «      }d=‰v }|d>k  r|s	|s|d||dœS |‰||dœS # t        $ r}t        d| › d|› �«       Y d }~y d }~ww xY w)?Nri   )rk   r/   zutf-8rq   z  [detail] rp   r   Úh1z<title>(.*?)</title>u   _\s*æ–°æ˜Œ.*$|_\s*é€šçŸ¥å…¬å‘Š$r0   ÚmetaÚnameÚArticleTitle)Úattrsr   u(   å�‘å¸ƒæ—¶é—´[ï¼š:]\s*(\d{4}-\d{2}-\d{2})zdiv.ImporF_bd-mainzdiv.artic_mainzdiv.main_sectionz5ImporF_bd-main|artic_main|article-content|TRS_UEDITOR)Úclass_©r   r   r   r   rr   rt   z)\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|7z)$z/document/downloadz/attachment/rv   z//zhttps:rw   Tru   Ú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   Úprs   z./Ú
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¡   rr   Ú	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¡   rr   s     r,   r¤   zparse_detail.<locals>.<genexpr>  s3   è ø€ ÒmÐcd ¨a°©h¨Z°r¼(¿/¹/È!ÈFÉ)Ó:TÐ9UÐU]Ô^Ñmùs   ‚,.ú
ú<[^>]+>z<imgé   )%r~   r   r€   r�   Úencodingr   Útextr    r!   ÚfindrG   rƒ   rC   rO   ÚSrD   rQ   rE   Ú
select_oner‚   ÚcompileÚ
isinstancer   ÚIr„   r…   ÚsplitÚanyr†   Úfind_parentÚ	decomposeÚselectÚstrÚdecode_contentsÚjoinÚrstripr$   )r   r*   rŽ   r+   r   ÚhrS   Úmtr   Úbody_elÚelÚattsÚ	att_linksrr   rt   r—   r¥   r§   r¨   Úhas_attÚatt_htmlÚtext_lenÚhas_imgr£   r­   s                          @@r,   Úparse_detailrÏ   Ê   sÿ  ù€ ðÜ�L‰L˜¤g°rÔ:ˆØ	×ÑÔØˆŒ
Ü˜QŸV™V ]Ó3ˆð
 €EØ�	‰	�$‹€AÙÜ˜AŸJ™J›LÓ)ˆÙÜ�I‰IÐ-¨q¯v©v´r·t±tÓ<ˆÙÜ¤§¡Ð'IÈ2ÈqÏwÉwÐWXËz×O_ÑO_ÓOaÓ bÓcˆEÙØ�Y‰Y�v f¨nÐ%=ˆYÓ>ˆÙ�"—&‘&˜Ô#Ü  9¡Ó.ˆEà€HÜ
�	‰	Ð=¸q¿v¹vÓF€AÙØ—7‘7˜1“:ˆà�o‰oÐ2Ó3Ò°t·±ÐGWÓ7XÒÐ\`×\kÑ\kÐl~Ó\€GØ€Ø—-‘-¤r§z¡zÐ2iÓ'j�-Ókò 	ˆ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Ø"Ÿ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�‰Ó ˆØ�?‰?˜3Ô 4§?¡?°4Ô#8ÀÇÁÐQWÕAXÐae×apÑapÐq}Õa~Ø,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Ø�!‚|™G©DØ¨2¸8ÐTXÑYÐYØ y¸hÐW[Ñ\Ð\øôi ò Ü�˜C˜5  q cÐ*Ô+Üûðús   „A	Y. Ù.	ZÙ7ZÚZ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 }d}t        dd«      D �]V  }|r||kD  r �nLt        |«      \  }}}|r|}t        d	|› d
t        |«      › d|› d�«       |s �n|D �]	  }	t        |	d   «      }
|
€!t        d|	d   d d › �«       |	d   d|	d   g dœ}
|
d   r'|
d   t        k  rt        d|
d   › d|
d   d d › �«       Œat        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�ŒW n t        d t        |«      › d|› d�«       |rXt1        |t$        j&                  j)                  t         j                  d   «      «       d!t         j                  v rt        «        y y y # t
        $ r Y �Œ\w xY w)"Nz--sync-onlyr0   z--pages=ú=z[AutoPg] max_pages=z sync_only=r   iÐ  z[list] Pz: items=z (count=ú)r   z	  [fail] r   é2   r   r   r›   z  [cutoff] rB   é(   r   r²   éÈ   u   æµ™æ±Ÿr   Fr\   r   )r   Ú	site_namer   r   r   r   r   r   r   r   r   z[total] valid=z--sync)ÚsysÚargvr„   rP   r¼   Ú
ValueErrorÚisdigitr!   r@   Úranger“   r$   rÏ   ÚCUTOFFr1   r5   rC   rD   ÚosÚpathÚbasenamerx   ry   r†   r-   )Ú	sync_onlyÚ	max_pagesrr   ÚvalidÚtotal_countÚpgrŒ   Úhas_nextr�   r’   ÚdetÚrecs               r,   Úmainrè   '  s§  € Ø¤§¡Ð)€IØ€IÜ�X‰X�a�bˆ\ò ˆØ�<‰<˜
Ô#ðÜ §¡¨¨Q£°Ñ 2Ó3‘	ð �Y‰Y�[Ü˜A›‰Iðô 
Ð 	˜{¨+°i°[Ð
AÔBÙÜÔØà€EØ€KÜ�A�t‹nó  ˆÙ˜˜išÚÜ!+¨B£Ñˆˆx˜ÙØˆKÜ�˜˜˜H¤S¨£Z L°¸¸¸qÐAÔBÙÚØó 	ˆBÜ˜r %™yÓ)ˆCØˆ{Ü˜	 " W¡+¨c¨rÐ"2Ð!3Ð4Ô5Ø " 7¡¸ÈÈ:ÉÐgiÑj�Ø�:Š 3 z¡?´VÒ#;Ü˜ C¨
¡OÐ#4°A°c¸'±lÀ3ÀBÐ6GÐ5HÐIÔ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˜Öð+	ó, ÙðA ôB 
ˆNœ3˜u›:˜, h¨{¨m¸1Ð
=Ô>ÙÜ˜¤§¡× 0Ñ 0´·±¸!±Ó =Ô>Ø”s—x‘xÑÜÕð  ð øô[ ò Úðús   ½I8É8	JÊJÚ__main__)&Ú__doc__r~   rC   r×   rÝ   rx   ro   r¯   Úbs4r   r   Úurllib.parser   r5   r…   r   r}   r|   r{   rz   r€   rÜ   rÞ   rÃ   ÚdirnameÚabspathÚ__file__r   r3   r1   r-   r@   rG   rW   r“   rÏ   rè   Ú__name__r    rH   r,   ú<module>rñ      sß   ðñó  Û 	Û 
Û 	Û Û ß "Ý à$€	Ø$€Ø
Z€Ø
€Ø	€Ø
!€Ø	€ð DØ0°°	¸ÐEñ€ð 
€à�W‰W�\‰\˜"Ÿ'™'Ÿ/™/¨"¯'©'¯/©/¸(Ó*CÓDÐFZÓ[€
Ø€	Ø	€ò òF2Eòj*òò0òfZ]òz7ðt ˆzÒÙ…Fð rH   