Ë
    û{jø8  ã                   óf  — 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ZdZd	Zd
ZdZdde› d�dœZdZej*                  j-                  ej*                  j/                  ej*                  j1                  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¢  
æ¸©å·žç“¯æ±Ÿå�£(æµ·æ´‹ç»�æµŽå�‘å±•ç¤ºèŒƒåŒº) - å»ºè®¾é¡¹ç›®çŽ¯å¢ƒå½±å“�è¯„ä»·ä¿¡æ�¯å…¬ç¤º (ojk.wenzhou.gov.cn/col/col1229874415/index.html)
CMS: æµ™æ±Ÿæ”¿åŠ¡ JCMS (ZJSJYH å�•å…ƒæž„å»º) - ä¸Žæ–°æ˜Œ/æ´žå¤´å�Œæ¬¾
åˆ—è¡¨: GET /api-gateway/jpaas-publish-server/front/page/build/unit
      params: parseType=bulidstatic&webId=2070&tplSetId=fbSBcd1C5fiSI7LwwVOpW&pageType=column
              &tagId=å†…é¡µåˆ†é¡µåˆ—è¡¨&editType=null&pageId=1229874415
              &paramJson={"pageNo":N,"pageSize":20,"search":""}
      å“�åº” JSON data.html: <a href="/col/col.../art/...">æ ‡é¢˜</a>
      count=131 æ€»æ�¡æ•° -> 7é¡µ (20æ�¡/é¡µ)
è¯¦æƒ…: /col/col1229874415/art/YYYY/art_hex.html
      æ­£æ–‡ div.zwnr_con > div#zoom > p
      meta PubDate / æ—¶é—´ï¼šYYYY-MM-DD HH:MM
æ ·æœ¬: https://ojk.wenzhou.gov.cn/col/col1229874415/art/2026/art_e85b48cb6178421491d45cbc10041d87.html
ç”¨æ³•: python3 crawl_ojk_hpgs.py [--pages=N | N] [--sync-only]
é    N)ÚBeautifulSoupÚTagu(   æ¸©å·žç“¯æ±Ÿå�£-å»ºè®¾é¡¹ç›®çŽ¯è¯„å…¬ç¤ºzhttps://ojk.wenzhou.gov.cnzQhttps://ojk.wenzhou.gov.cn/api-gateway/jpaas-publish-server/front/page/build/unitÚ
1229874415u   å†…é¡µåˆ†é¡µåˆ—è¡¨ÚfbSBcd1C5fiSI7LwwVOpWÚ2070é   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z"https://ojk.wenzhou.gov.cn/col/colz/index.html)z
User-AgentÚRefererz
2023-01-01zquality_results.dbz/root/search.dbzojk.wenzhou.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_ojk_hpgs.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@   P   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           	      ó4  — t        j                  | t        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t0        |j/                  d«      r|nd|z   z   }|j3                  ||ddœ«       Œ˜ t5        «       }g }|D ]/  }|d    |v rŒ|j7                  |d    «       |j3                  |«       Œ1 |d|fS # t        $ r }t        d| › d|› �«       g ddfcY d }~S d }~ww xY w)!Nr   )Ú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©Úhrefrs   z/art/z/art/\d{4}/art_[0-9a-f]+\.html$©rE   Úhttpú/)r   r   r   r   )ÚjsonÚdumpsÚ	PAGE_SIZEÚ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_jsonri   r*   Újrn   r+   ÚitemsÚcountrS   Úsouprq   rs   r   Úfull_urlÚseenÚuniqÚits                     r,   Ú
fetch_listr“   –   s  € Ü—‘ t¼ÈbÑQÐ`eÔf€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ÐÐøô7 ò Ü�
˜4˜&  q cÐ*Ô+Ø�5˜!ˆ|Õûðús$   ¼A6G. Â3G. Ç.	HÇ7HÈHÈHc           	      óÂ  ‡‡— 	 t        j                  | t        d¬«      }|j                  «        d|_        t        |j                  d«      }d}t        j                  d|j                  t        j                  «      }|r=t        t        j                  d	d|j                  d
«      j                  «       «      «      }|s,|j!                  d«      }|rt        |j#                  «       «      }|s6|j!                  dddi¬«      }|r|j                  d«      rt        |d   «      }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Œ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(                  d0«      ¬1«      D ]9  }
|
j;                  d)«      xs |
j;                  d2«      }|sŒ*|j=                  «        Œ; tA        |	jC                  «       «      Št        j                  d3d‰t        j                  t        j.                  z  ¬4«      Št        j                  d5d‰t        j                  t        j.                  z  ¬4«      Št        j                  d6d7‰«      Št        j                  d8d‰«      Št        j                  d9d‰t        j                  ¬4«      Št        j                  d:d‰t        j                  ¬4«      Š|rDt7        ˆfd;„|D «       «      }|s.djE                  d<„ |D «       «      }‰jG                  «       d=z   |z   ŠtI        t        j                  d>d‰«      j                  «       «      }d?‰v }d@‰v xs dA‰v }|dBk  r|s|s	|s|d||dœS |‰||dœS # t        $ r}t        d| › d|› �«       Y d }~y d }~ww xY w)CNrh   )rj   r/   zutf-8rp   z  [detail] ro   r   z<title>(.*?)</title>u   [-_â€”]\s*.*$r0   Úh1ÚmetaÚnameÚArticleTitle)Úattrsr   ÚPubDateé
   u@   (?:æ—¶é—´|å�‘å¸ƒæ—¥æœŸ|å�‘å¸ƒæ—¶é—´)[ï¼š:]\s*(\d{4}-\d{2}-\d{2})zdiv.zwnr_conzdiv#zoomzdiv.ny-contentz/zwnr_con|ny-content|article-content|TRS_UEDITOR)Úclass_©r   r   r   r   rq   rs   z)\.(pdf|doc|docx|xls|xlsx|zip|rar|wps|7z)$z/document/downloadz/attachment/ru   z//zhttps:rv   Trt   Ú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   Úprr   z./Ú
javascriptÚimgÚsrczmdiv.share, div.ewm, div.qrcode, div.jzgov-qrcode-div, div.app-share, div.print, div.bshare-custom, div.fzxxzsu    æ‰«ä¸€æ‰«|åˆ†äº«åˆ°|æ‰“å�°æœ¬é¡µ)Ú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£   rq   Ú	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£   rq   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é   )%r~   r   r€   r�   Úencodingr   Útextr    r!   rC   rO   ÚSrG   rD   rQ   rE   Úfindrƒ   Ú
select_oner‚   ÚcompileÚ
isinstancer   ÚIr„   r…   ÚsplitÚanyr†   Úfind_parentÚ	decomposeÚselectÚstrÚdecode_contentsÚjoinÚrstripr$   )r   r*   rŽ   r+   r   rS   ÚhÚmtr   Úbody_elÚelÚattsÚ	att_linksrq   rs   r—   r§   r©   rª   Úhas_attÚatt_htmlÚtext_lenÚhas_imgÚ	has_videor¥   r¯   s                           @@r,   Úparse_detailrÓ   È   sV  ù€ ðÜ�L‰L˜¤g°rÔ:ˆØ	×ÑÔØˆŒ
Ü˜QŸV™V ]Ó3ˆð
 €EÜ
�	‰	Ð)¨1¯6©6´2·4±4Ó8€AÙÜœBŸF™FÐ#3°R¸¿¹À»×9IÑ9IÓ9KÓLÓMˆÙØ�I‰I�d‹OˆÙÜ §
¡
£Ó-ˆEÙØ�Y‰Y�v f¨nÐ%=ˆYÓ>ˆÙ�"—&‘&˜Ô#Ü  9¡Ó.ˆEà€HØ�	‰	�& ¨Ð 3ˆ	Ó4€AÙˆQ�U‰U�9ÔØ�Y‘<×%Ñ%Ó'¨¨Ð,ˆÙÜ�I‰IÐYÐ[\×[aÑ[aÓbˆÙØ—w‘w˜q“zˆHà�o‰o˜nÓ-Òq°·±ÀÓ1LÒqÐPT×P_ÑP_Ð`pÓPq€GØ€Ø—-‘-¤r§z¡zÐ2cÓ'd�-Óeò 	ˆ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ð  Mó  Nò ˆØ
�‰�ðà×Ñ¤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[Ñ\Ð\øôs ò Ü�˜C˜5  q cÐ*Ô+Üûðús   „A	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Úbasenamerw   rx   r†   r-   )Ú	sync_onlyÚ	max_pagesrq   Ú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á   rw   rn   r±   Úbs4r   r   r5   r…   r   r}   r|   r{   rz   ry   r€   rà   râ   rÆ   ÚdirnameÚabspathÚ__file__r   r3   r1   r-   r@   rG   rW   r“   rÓ   rì   Ú__name__r¢   rH   r,   ú<module>rô      sá   ðñó Û 	Û 
Û 	Û Û ß "à6€	Ø'€Ø
]€Ø
€Ø	€Ø
!€Ø	€Ø€	ð DØ3°G°9¸KÐHñ€ð 
€à�W‰W�\‰\˜"Ÿ'™'Ÿ/™/¨"¯'©'¯/©/¸(Ó*CÓDÐFZÓ[€
Ø€	Ø	€ò òF2Eòj*òò/òd_]òD7ðt ˆzÒÙ…Fð rH   