Ë
    è‡zj  ã                   óÚ   — 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Zddl	Z	ddl
m
Z
 dZdZdZdZdZ ej                   ed	¬
«       d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)u�   
ZC æ•°æ�®å�Œæ­¥ï¼šWebDAV ä¸‹è½½ PDF â†’ è§£æž� â†’ å¯¼å…¥ ZC.db
åŽ»é‡�æ–¹å¼�ï¼šè§£æž�å�ŽæŸ¥ project_name æ˜¯å�¦å·²åœ¨åº“é‡Œï¼Œä¸�å†�é� æ–‡ä»¶å�� track file
é    N)Údatetimez,https://dav.jianguoyun.com/dav/Downloads_nucz'chniir0000@outlook.com:ah4urmcdv7s4hgpdz/mnt/data/zc_pdfsz/root/ZC.dbz/var/log/zc_sync.logT)Úexist_okc                 óÚ   — t        j                  «       j                  d«      }t        t        d«      5 }|j                  d|› d| › d�«       d d d «       t        | «       y # 1 sw Y   ŒxY w)Nz%Y-%m-%d %H:%M:%SÚaú[z] ú
)r   ÚnowÚstrftimeÚopenÚLOGÚwriteÚprint)ÚmsgÚtsÚfs      ú/root/gov_crawler/sync_zc.pyÚlogr      s[   € Ü	�‰‹×	 Ñ	 Ð!4Ó	5€BÜ	Œc�3‹ð #˜1Ø	�‰�!�B�4�r˜#˜˜bÐ!Ô"÷#ä	ˆ#…J÷#ð #ús   ´A!Á!A*c                  óÔ  — t         dz   } t        j                  j                  | dddi¬«      }t	        j
                  t        j                  «       «      j                  «       }|j                  dd|› �«       	 t        j                  j                  |d¬	«      }|j                  «       j                  «       }g }t        j                  d|«      D ]f  }|j!                  d«      }|j#                  d«      j%                  d«      d   }	t        j&                  j)                  |	«      }	|j+                  |	«       Œh t-        |«      S # t        $ r}t        d
|› �«       g cY d }~S d }~ww xY w)Nú/ÚPROPFINDÚDepthÚ1)ÚmethodÚheadersÚAuthorizationúBasic é   ©Útimeoutu     WebDAV åˆ—è¡¨å¤±è´¥: z<d:href>([^<]+\.pdf)</d:href>é   éÿÿÿÿ)ÚWEBDAV_BASEÚurllibÚrequestÚRequestÚbase64Ú	b64encodeÚAUTHÚencodeÚdecodeÚ
add_headerÚurlopenÚreadÚ	Exceptionr   ÚreÚfinditerÚgroupÚrstripÚsplitÚparseÚunquoteÚappendÚsorted)
ÚurlÚreqÚcredsÚrespÚxml_dataÚeÚpdfsÚmÚhrefÚfnames
             r   Úwebdav_listrB      s1  € Ü
˜Ñ
€CÜ
�.‰.×
 Ñ
  ¨ZÀ'È3ÀÐ
 Ó
P€CÜ×ÑœTŸ[™[›]Ó+×2Ñ2Ó4€EØ‡N�N�? f¨U¨GÐ$4Ô5ðÜ�~‰~×%Ñ% c°2Ð%Ó6ˆØ—9‘9“;×%Ñ%Ó'ˆð €DÜ�[‰[Ð9¸8ÓDò ˆØ�w‰w�q‹zˆØ—‘˜CÓ ×&Ñ& sÓ+¨BÑ/ˆÜ—‘×$Ñ$ UÓ+ˆØ�‰�EÕð	ô
 �$‹<Ðøô ò ÜÐ% a SÐ)Ô*Ø�	ûðús   Á9?E Å	E'ÅE"ÅE'Å"E'c                 óŠ  — t         dz   t        j                  j                  | «      z   }t        j                  j                  |«      }t        j                  t        j                  «       «      j                  «       }|j                  dd|› �«       	 t        j                  j                  |d¬«      }|j                  «       }t        j                  j!                  t"        | «      }t%        |d«      5 }|j'                  |«       d d d «       |S # 1 sw Y   |S xY w# t(        $ r}t+        d| › d|› �«       Y d }~y d }~ww xY w)	Nr   r   r   é<   r   Úwbu     ä¸‹è½½å¤±è´¥ ú: )r"   r#   r4   Úquoter$   r%   r&   r'   r(   r)   r*   r+   r,   r-   ÚosÚpathÚjoinÚPDF_DIRr   r   r.   r   )	Úfilenamer8   r9   r:   r;   ÚdatarI   r   r=   s	            r   Úwebdav_downloadrN   /   sý   € Ü
˜Ñ
œfŸl™l×0Ñ0°Ó:Ñ
:€CÜ
�.‰.×
 Ñ
  Ó
%€CÜ×ÑœTŸ[™[›]Ó+×2Ñ2Ó4€EØ‡N�N�? f¨U¨GÐ$4Ô5ð	Ü�~‰~×%Ñ% c°2Ð%Ó6ˆØ�y‰y‹{ˆÜ�w‰w�|‰|œG XÓ.ˆÜ�$˜Óð 	 Ø�G‰G�DŒM÷	àˆ÷	àˆûÜò Üˆo˜h˜Z r¨!¨Ð-Ô.Üûðús7   ÂA!D Ã5DÄ	D ÄDÄD ÄD Ä	EÄ'D=Ä=Ec                 ój  — dd l }|j                  | «      }|j                  dkD  r|d   j                  «       nd}|j                  dkD  r|d   j                  «       nd}d}t	        d|j                  «      D ]  }|||   j                  «       dz   z  }Œ |j                  «        t        j                  j                  dd«       dd l	}|j                  j                  dd«      }|j                  j                  |«      }	|j                  j                  |	«       |	j                  |«      }
|
j!                  |	j#                  |«      «       |
j%                  d«      sDt&        j                  j)                  | «      }t&        j                  j+                  |«      d   |
d<   |	j-                  |«      }|
|fS )	Nr   Ú r    r   z/root/gov_crawlerÚparse_zcz/root/gov_crawler/parse_zc.pyÚproject_name)Úfitzr   Ú
page_countÚget_textÚrangeÚcloseÚsysrI   ÚinsertÚimportlib.utilÚutilÚspec_from_file_locationÚmodule_from_specÚloaderÚexec_moduleÚextract_basicÚupdateÚextract_page2ÚgetrH   ÚbasenameÚsplitextÚextract_contacts)Úpdf_pathrS   ÚdocÚtext_p1Útext_p2Útext_contactsÚpiÚ	importlibÚspecÚpzÚprA   Úcontactss                r   Ú	parse_pdfrr   @   sc  € ÛØ
�)‰)�HÓ
€CØ#&§>¡>°AÒ#5ˆc�!‰f�o‰oÔ¸2€GØ#&§>¡>°AÒ#5ˆc�!‰f�o‰oÔ¸2€GØ€MÜ�A�s—~‘~Ó&ò 3ˆØ˜˜R™×)Ñ)Ó+¨dÑ2Ñ2‰ð3à‡I�I„KÜ‡H�H‡O�O�AÐ*Ô+ÛØ�>‰>×1Ñ1°*Ð>]Ó^€DØ	�‰×	(Ñ	(¨Ó	.€BØ‡K�K×Ñ˜BÔØ
×Ñ˜Ó!€AØ‡H�HˆR×Ñ˜gÓ&Ô'Ø�5‰5�Ô Ü—‘× Ñ  Ó*ˆÜŸG™G×,Ñ,¨UÓ3°AÑ6ˆˆ.ÑØ×"Ñ" =Ó1€HØˆhˆ;Ðó    c                 óD   — dt        | «      j                  dd«      z   dz   S )Nú'z'')ÚstrÚreplace)Úss    r   Úsqry   W   s!   € Ø”�Q“—‘  TÓ*Ñ*¨SÑ0Ð0rs   c                 óœ   — |r$| j                  d|f«      j                  «       }|ry|r$| j                  d|f«      j                  «       }|ryy)u4   æŸ¥ DBï¼šproject_id æˆ– project_name æ˜¯å�¦å·²å­˜åœ¨z,SELECT 1 FROM zc_projects WHERE project_id=?Tz.SELECT 1 FROM zc_projects WHERE project_name=?F)ÚexecuteÚfetchone)ÚcÚpidÚnameÚrs       r   Úcheck_existsr�   [   sO   € á
Ø�I‰IÐDÀsÀfÓM×VÑVÓXˆÙØÙØ�I‰IÐFÈÈÓP×YÑYÓ[ˆÙØØrs   c                 óÌ  — t        j                  t        «      }|j                  «       }| j	                  dd«      }| j	                  dd«      xs" t
        j                  j                  |«      d   }t        |||«      r|j                  «        yg d¢}t        | «      }||d<   t        j                  |d¬«      | d	<   |D �	cg c]  }	t        | j	                  |	d«      «      ‘Œ }
}	d
dj                  |«      › ddj                  |
«      › d�}|j                  |«       |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«      f	«       ŒŸ |j!                  «        |j                  «        yc c}	w )NÚ
project_idrP   rR   r   F)+rƒ   rR   Úversion_typeÚpublish_dateÚphaseÚconstruction_periodÚtotal_investmentÚproject_typeÚowner_natureÚindustryÚtopicÚscaleÚquantity_scaleÚindustry_levelÚprovinceÚcityÚdetail_addressÚbuilding_areaÚ	land_areaÚfloorsÚforeign_investmentÚ
decorationÚsteel_structureÚexterior_wallÚparkingÚelevatorÚair_conditioningÚ	fresh_airÚheatingÚprefabÚpassive_houseÚconstruction_contentÚequipment_listÚprocurement_equipmentÚprocess_flowÚschedule_overviewÚphase_approvalÚphase_designÚphase_procurementÚphase_constructionÚphase_contractorÚphase_statusÚraw_jsonrq   )Úensure_asciir¬   zINSERT INTO zc_projects (z, z
) VALUES (ú)z‹INSERT INTO zc_contacts (project_id, company, contact_name, department, position, phone, remarks, address, role) VALUES (?,?,?,?,?,?,?,?,?)ÚcompanyÚcontact_nameÚ
departmentÚpositionÚphoneÚremarksÚaddressÚroleT)Úsqlite3ÚconnectÚDBÚcursorrc   rH   rI   re   r�   rW   ÚdictÚjsonÚdumpsry   rJ   r{   Úcommit)rp   rq   rL   Úconnr}   r~   r   ÚfieldsÚraw_datar   ÚvalsÚsqlÚcts                r   Úinsert_to_dbrÅ   h   s¡  € Ü�?‰?œ2Ó€DØ�‰‹€AØ
�%‰%�˜bÓ
!€CØ�5‰5� Ó$ÒE¬¯©×(8Ñ(8¸Ó(BÀ1Ñ(E€DÜ�A�s˜DÔ!Ø�
‰
ŒØò
€Fô �A‹w€HØ#€HˆZÑÜ—J‘J˜x°eÔ<€A€j�MØ&,Ö- ŒBˆq�u‰u�Q˜‹|ÕÐ-€DÐ-Ø% d§i¡i°Ó&7Ð%8¸
À4Ç9Á9ÈTÃ?ÐBSÐSTÐ
U€CØ‡I�Iˆc„NØò 
ˆØ	�	‰	ð ZØ�"—&‘&˜ 2Ó&¨¯©¨~¸bÓ(AÀ2Ç6Á6È,ÐWYÓCZØ�V‰V�J˜rÓ" B§F¡F¨7°2Ó$6¸¿¹¸yÈÓ8LØ�V‰V�I˜bÓ! 2§6¡6¨&°Ó#4ð6õ	
ð
ð 	‡K�K„MØ‡J�J„LØùò .s   Ã"G!c            	      ó²  — t        d«       t        «       } t        dt        | «      › d�«       d}d}| D ]�  }t        j                  j                  t        |«      }t        j                  j                  |«      r|}nt        |«      }|sŒW	 t        |«      \  }}t        |||«      }|r$|dz  }t        d|d d › dt        |«      › d	�«       n|dz  }ŒŸ t        j                  t        «      j                  d«      j!                  «       d   }
t        d|› d|› d|
› d�«       t        d«       y # t        $ r}	t        d
|d d › d|	› �«       Y d }	~	�Œd }	~	ww xY w)Nu   === å¼€å§‹ ZC å�Œæ­¥ ===u   WebDAV å…±æœ‰ u    ä¸ª PDFr   r    u     âœ… é2   u    (è�”ç³»äºº: r®   u     âœ— rF   z SELECT COUNT(*) FROM zc_projectsu   æ–°å¢ž: u
   , è·³è¿‡: u   , ZC.db æ€»è®¡: u    æ�¡u   === å®Œæˆ� ===)r   rB   ÚlenrH   rI   rJ   rK   ÚexistsrN   rr   rÅ   r.   r·   r¸   r¹   r{   r|   )r>   Ú	new_countÚ
skip_countrA   Ú
local_pathrg   rp   rq   Úinsertedr=   Úcounts              r   ÚmainrÏ   �   sS  € ÜÐ"Ô#ä‹=€DÜˆ.œ˜T›˜ 8Ð,Ô-à€IØ€JØò ,ˆä—W‘W—\‘\¤'¨5Ó1ˆ
Ü�7‰7�>‰>˜*Ô%Ø!‰Hä& uÓ-ˆHÙØð		,Ü# HÓ-‰KˆAˆxÜ# A x°Ó7ˆHÙØ˜Q‘�	Ü�f˜U 3 B˜Z˜L¨´c¸(³m°_ÀAÐFÕGà˜a‘�
øð#,ô* �O‰OœBÓ×'Ñ'Ð(JÓK×TÑTÓVÐWXÑY€EÜˆ(�9�+˜Z¨
 |Ð3CÀEÀ7È$ÐOÔPÜÐÕøô ò 	,Ü�&˜˜s ˜˜ B q cÐ*×+Ò+ûð	,ús   ÂAD.Ä.	EÄ7EÅEÚ__main__)Ú__doc__rH   rX   r/   r¼   Úurllib.parser#   r&   Úurllib.requestr·   r   r"   r(   rK   r¹   r   Úmakedirsr   rB   rN   rr   ry   r�   rÅ   rÏ   Ú__name__© rs   r   ú<module>r×      s…   ðñ÷
 ?× >× >Ó >Û Ý à<€Ø0€Ø
€Ø€Ø€à €‡�ˆG˜dÕ #òòò(ò"ò.1ò
ò"òJðD ˆzÒÙ…Fð rs   