Ë
    ÒðNjZR  ã            	       óz  — 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 ddl	m
Z
 ddlZddlmZ ddlmZ ddlZdZdZd	Zd
Z eee«      ZdZdZ ej2                  ed¬«       g d¢Z e
g d¢«      Zg d¢ZdddddddddœZ eej?                  «       «      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ð  
parse_zc_v2.py â€” ZC é¡¹ç›® PDF è§£æž�ï¼ˆDownloads_nuc ç›®å½•ï¼‰
====================================================

æ•°æ�®æ�¥æº�ï¼šå�šæžœäº‘ WebDAV /dav/Downloads_nuc/ï¼ˆPDF æ–‡ä»¶ï¼‰
ç¼“å­˜ç›®å½•ï¼š/mnt/data/zc_pdfs/
ç›®æ ‡æ•°æ�®åº“ï¼š/root/ZC.db (zc_projects + zc_contacts)

ç”¨æ³•ï¼š
  python3 parse_zc_v2.py             # å¢žé‡�ï¼ˆæŒ‰ project_name åŽ»é‡�ï¼Œå·²æœ‰åˆ™ UPDATEï¼‰
  python3 parse_zc_v2.py force       # å…¨é‡�é‡�è·‘
  python3 parse_zc_v2.py test        # æµ‹è¯• 3 ä¸ªæ–‡ä»¶
é    N)Údatetime)ÚOrderedDict)ÚHTTPBasicAuth)ÚElementTreezhttps://dav.jianguoyun.comz/dav/Downloads_nuc/zchniir0000@outlook.comÚah4urmcdv7s4hgpdz/mnt/data/zc_pdfsz/root/ZC.dbT)Úexist_ok)*Ú
project_idÚproject_nameÚ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))u   é¡¹ç›®ç¼–å�·r	   )u   ç‰ˆæœ¬ç±»åž‹r   )u   å�‘å¸ƒæ—¶é—´r   )u   é¡¹ç›®é˜¶æ®µr   )u   å»ºè®¾å‘¨æœŸr   )u   æ€»æŠ•èµ„é¢�r   )u   å·¥ç¨‹ç±»åž‹r   )u   ç”²æ–¹æ€§è´¨r   )u   æ‰€å±žè¡Œä¸šr   )u   æ‰€å±žä¸“é¢˜r   )u   é¡¹ç›®è§„æ¨¡r   )u   æ•°é‡�è§„æ¨¡r   )u   è¡Œä¸šçº§åˆ«r   )u   å»ºç­‘é�¢ç§¯r   )u   å� åœ°é�¢ç§¯r   )u   å»ºç­‘å±‚æ•°r   )u   å¤–èµ„å�‚ä¸Žr   )u   è£…ä¿®r   )u	   é’¢ç»“æž„r   )u   å¤–å¢™æ��æ–™r    )u   è½¦åº“å�œè½¦ä½�r!   )u   ç”µæ¢¯r"   )u   ç©ºè°ƒr#   )u   æ–°é£Žç³»ç»Ÿr$   )u   ä¾›æš–æ–¹å¼�r%   )u   è£…é…�å¼�å»ºç­‘r&   )u	   è¢«åŠ¨æˆ¿r'   ))u   ç«‹é¡¹å®¡æ‰¹r-   )u   é¡¹ç›®è®¾è®¡r.   )u   ä¸»è®¾å¤‡æ��æ–™é‡‡è´­r/   )u   ä¸»ä½“æ–½å·¥r0   )u   å·¥ç¨‹åˆ†åŒ…r1   )u   æš‚å­˜/å�–æ¶ˆ/å·²å®Œå·¥r2   u   ä¸šä¸»õ	   è®¾è®¡é™¢õ   æ–½å·¥å�•ä½�)u	   ä¸šä¸»æ–¹r3   r4   u	   æ–½å·¥æ–¹u   ä¸šä¸»å�•ä½�u   è®¾è®¡å�•ä½�u	   æ‰¿åŒ…å•†u	   æ‰¿åŒ…æ–¹c                 óh   — t        dt        j                  «       j                  d«      › d| › �«       y )Nú[z%Y-%m-%d %H:%M:%Sz] )Úprintr   ÚnowÚstrftime)Úmsgs    ú /root/gov_crawler/parse_zc_v2.pyÚlogr<   w   s*   € Ü	ˆAŒh�l‰l‹n×%Ñ%Ð&9Ó:Ð;¸2¸c¸UÐ
CÕDó    c                  óH  — t         t        z   } t        j                  d| t        ddid¬«      }|j
                  dk7  rt        d|j
                  › �«       g S t        j                  |j                  «      }dd	i}g }|j                  d
|«      D ]ˆ  }|j                  d|«      }|j                  xs dj                  d«      j                  dd«      d   }t        j                   j#                  |«      }|j%                  d«      sŒx|j'                  |«       ŒŠ t)        |«      S )NÚPROPFINDÚDepthÚ1é   )ÚauthÚheadersÚtimeoutéÏ   z  WEBDAV PROPFIND failed: ÚdzDAV:z.//d:responsezd:hrefÚ ú/é   éÿÿÿÿz.pdf)ÚWEBDAV_BASEÚ
WEBDAV_DIRÚrequestsÚrequestÚAUTHÚstatus_coder<   ÚETÚ
fromstringÚcontentÚfindallÚfindÚtextÚrstripÚrsplitÚurllibÚparseÚunquoteÚendswithÚappendÚsorted)ÚurlÚrÚrootÚnsÚpdfsÚrespÚhrefÚfns           r;   Úwebdav_listrh      sù   € Ü
œ
Ñ
"€CÜ×Ñ˜ S¬t¸gÀs¸^ÐUWÔX€AØ‡}�}˜ÒÜÐ(¨¯©¨Ð8Ô9Øˆ	Ü�=‰=˜Ÿ™Ó#€DØ
ˆvˆ€BØ€DØ—‘˜_¨bÓ1ò ˆØ�y‰y˜ 2Ó&ˆØ�i‰iŠo˜2×%Ñ% cÓ*×1Ñ1°#°qÓ9¸"Ñ=ˆÜ�\‰\×!Ñ! "Ó%ˆØ�;‰;�vÕØ�K‰K˜�Oðô �$‹<Ðr=   c                 ód  — t         t        z   t        j                  j	                  | «      z   }t        j                  |t        d¬«      }|j                  dk(  r1t        |d«      5 }|j                  |j                  «       d d d «       yt        d| › d|j                  › �«       y# 1 sw Y   yxY w)	Né<   )rC   rE   éÈ   ÚwbTz  DOWNLOAD FAILED z: HTTP F)rL   rM   rZ   r[   ÚquoterN   ÚgetrP   rQ   ÚopenÚwriterT   r<   )ÚfilenameÚ
local_pathr`   ra   Úfs        r;   Úwebdav_downloadrt   ‘   s�   € Ü
œ
Ñ
"¤V§\¡\×%7Ñ%7¸Ó%AÑ
A€CÜ�‰�Sœt¨RÔ0€AØ‡}�}˜ÒÜ�*˜dÓ#ð 	 qØ�G‰G�A—I‘IÔ÷	àÜÐ
˜X˜J g¨a¯m©m¨_Ð=Ô>Ø÷		àús   Á%B&Â&B/c                 ó  — g }i }t         D ]:  }| j                  d|z   dz   «      }|dk  r| j                  |«      }|dk\  sŒ6|||<   Œ< |s|S t        |j                  «       d„ ¬«      }t	        |«      D �]  \  }\  }}t        | «      }	|dz   t        |«      k  r||dz      d   }	n| j                  d|«      }
|
dk\  r|
}	| ||	 j                  «       }|sŒa|j                  d«      }t        j                  |d«      }d}|D ]§  }d|v sŒd	|v sd
|v sŒd	|v r#|j                  d	d«      d   j                  «       n"|j                  d
d«      d   j                  «       }t        j                  dd|«      j                  «       }t        j                  dd|«      j                  «       }|} n t        j                  d|«      }|D �]Å  }|j                  d«      }|dddddd|dœ}|D �]ƒ  }|j                  «       }|sŒ|j                  d«      r+d	|v r'|j                  d	d«      d   j                  «       |d<   ŒS|j                  d«      r+d	|v r'|j                  d	d«      d   j                  «       |d<   Œ�|j                  d«      r+d	|v r'|j                  d	d«      d   j                  «       |d<   ŒË|j                  d«      r,d	|v r(|j                  d	d«      d   j                  «       |d<   �Œ|j                  d«      r,d	|v r(|j                  d	d«      d   j                  «       |d<   �ŒE|j                  d«      s�ŒXd	|v s�Œ^|j                  d	d«      d   j                  «       |d<   �Œ† |d   s|d   s�Œµ|j                  |«       �ŒÈ �Œ |S )u  ä»Ž PDF æ­£æ–‡ï¼ˆç¬¬2é¡µèµ·ï¼‰æ��å�–è�”ç³»äººåˆ—è¡¨ã€‚
    æ ¼å¼�ï¼š
      ä¸šä¸»æ–¹
        å�•ä½�å��ç§°ï¼š[ä¸»ä½“æ‰¿å»ºå•†]XXXå…¬å�¸(ç§�è�¥)
        å§“å��ï¼šXXX
        éƒ¨é—¨ï¼šXXX
        è�ŒåŠ¡ï¼šXXX
        æ‰‹æœºï¼š1XXXXXXXXXX
        ...
      è®¾è®¡é™¢
        ...
    ú
r   c                 ó   — | d   S )NrJ   © )Úxs    r;   ú<lambda>z"extract_contacts.<locals>.<lambda>»   s
   € °q¸±t€ r=   )ÚkeyrJ   zPowered by TCPDFrH   u   å�•ä½�å��ç§°õ   ï¼šú:rK   u   \s*[ï¼ˆ(].*?[ï¼‰)]$u   ^\[ä¸šä¸»\]u   \n(?=å§“å��[ï¼š:]))ÚcompanyÚcontact_nameÚ
departmentÚpositionÚphoneÚremarksÚaddressÚroleu   å§“å��r   u   éƒ¨é—¨r€   u   è�ŒåŠ¡r�   u   æ‰‹æœºr‚   u   å¤‡æ³¨rƒ   u   å�•ä½�æ³¨å†Œåœ°å�€r„   )ÚCONTACT_SECTIONSrV   r_   ÚitemsÚ	enumerateÚlenÚstripÚsplitÚROLE_MAPrn   ÚreÚsubÚ
startswithr^   )rW   ÚcontactsÚ	positionsÚsecÚidxÚsectionsÚiÚsec_nameÚsec_posÚnext_posÚpbrÚblkÚlinesr…   r~   ÚlineÚvalÚperson_blocksÚpblkÚplinesÚcÚls                         r;   Úextract_contactsr£       s‹  € ð €Hð €IÜò !ˆØ�i‰i˜˜s™
 TÑ)Ó*ˆØ�Š7Ø—)‘)˜C“.ˆCØ�!‹8Ø ˆI�cŠNð!ñ Øˆä�i—o‘oÓ'©^Ô<€Hä"+¨HÓ"5ó 4#ÑˆÑˆH�gä�t“9ˆØˆq‰5”3�x“=Ò Ø  A¡‘ qÑ)‰Hà—)‘)Ð.°Ó8ˆCØ�aŠxØ�à�7˜8Ð$×*Ñ*Ó,ˆÙØà—	‘	˜$“ˆÜ�|‰|˜H bÓ)ˆð ˆØò 	ˆDØ Ò%¨5°D©=¸CÀ4ºKØ:?À4¹-�d—j‘j ¨Ó*¨2Ñ.×4Ñ4Ô6ÈTÏZÉZÐX[Ð]^ÓM_Ð`bÑMc×MiÑMiÓMk�ä—f‘fÐ3°R¸Ó=×CÑCÓE�Ü—f‘f˜^¨R°Ó5×;Ñ;Ó=�Ø�Ùð	ô Ÿ™Ð!6¸Ó<ˆà!ó 	#ˆDØ—Z‘Z Ó%ˆFØ#°RÀrØ¨"¸ÈÐTXñZˆAàó A�Ø—G‘G“I�ÙØØ—<‘< Ô)¨u¸©zØ()¯©°°qÓ(9¸"Ñ(=×(CÑ(CÓ(E�A�nÒ%Ø—\‘\ (Ô+°¸!±Ø&'§g¡g¨e°QÓ&7¸Ñ&;×&AÑ&AÓ&C�A�l’OØ—\‘\ (Ô+°¸!±Ø$%§G¡G¨E°1Ó$5°bÑ$9×$?Ñ$?Ó$A�A�j’MØ—\‘\ (Ô+°¸!±Ø!"§¡¨°Ó!2°2Ñ!6×!<Ñ!<Ó!>�A�g“JØ—\‘\ (Ô+°¸!±Ø#$§7¡7¨5°!Ó#4°RÑ#8×#>Ñ#>Ó#@�A�i“LØ—\‘\Ð"6Ö7¸UÀa»ZØ#$§7¡7¨5°!Ó#4°RÑ#8×#>Ñ#>Ó#@�A�i“LðAð  �Ò  A g¤JØ—‘ Ö"ò+	#ð?4#ðl €Or=   c                 ó$  — t        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                  «        i }|j                  d«      }t        |«      D �]B  \  }}	t        j                  «       D �]$  \  }
}|	j                  |
dz   «      s|	j                  |
dz   «      sŒ0|	t        |
«      dz   d j                  «       }|s8|dk7  r3|dz   t        |«      k  r"||dz      j                  «       }|r
d|vrd|vr|}|dk(  r‘|r|gng }d}||z   t        |«      k  rf|||z      j                  «       }d|v s#d|v st        |«      d	k  s|j                  d
«      rn(|j                  |«       |dz  }||z   t        |«      k  rŒfdj                  |«      }|||<    �ŒB �ŒE |D �]  }	|	j                  d«      s|	j                  d«      sŒ'd|	v r|	j                  dd«      d   n|	j                  dd«      d   j                  «       }t        j                   d|«      }|rE|j#                  d«      j                  «       |d<   |j#                  d	«      j                  «       |d<   ŒÀd|v r@|j                  dd«      }|d   j                  «       |d<   |d   j                  «       |d<   �Œ||d<   �Œ |D ]\  }	|	j                  d«      sŒd|	v sd|	v sŒd|	v r|	j                  dd«      d   n|	j                  dd«      d   j                  «       |d<   Œ^ g }d}|D ]Ä  }	|	j                  d«      rZd|	v sd|	v rRd}d|	v r|	j                  dd«      d   n|	j                  dd«      d   j                  «       }|r|j                  |«       Œn|sŒq|	j                  d«      s|	j                  d«      r n2|	j                  «       sŒ¦|j                  |	j                  «       «       ŒÆ |rdj                  |«      |d<   |D ]Œ  }	|	j                  d«      s|	j                  d«      sŒ&d|	v r|	j                  dd«      d   n|	j                  dd«      d   j                  «       }t        j$                  dd|«      j                  «       }||d<    n t'        d„ t        j)                  «       D «       «      dz   }|D ]F  }	|	j                  «       }	|	sŒt        |	«      dkD  sŒ%|	j                  |«      rŒ7d|	vsŒ<d|	vsŒA|	|d <    n |j+                  d «      sb|D ]]  }	|	j                  «       }	|	sŒt        |	«      dkD  sŒ%|	j                  |«      rŒ7|	j                  dd«      d   j                  «       |d <    n |j                  d«      }t        |«      D �]”  \  }}	t        j,                  d!|	«      }|r"|j#                  d«      j                  «       |d"<   t        j,                  d#|	«      }|r"|j#                  d«      j                  «       |d$<   t        j,                  d%|	«      }|r"|j#                  d«      j                  «       |d&<   t.        D ]×  \  }}|	j                  |«      sŒd|	v s*d|	v s&t        |	j                  «       «      t        |«      k(  sŒFt        |	j                  «       «      t        |«      k(  r*|dz   t        |«      k  r||dz      j                  «       nd}n<d|	v r|	j                  dd«      d   n|	j                  dd«      d   j                  «       }|||<    �Œ” �Œ— |j+                  d «      sDt0        j2                  j5                  | «      }t0        j2                  j7                  |«      d   |d <   t9        |«      }t;        |«      }||d'<   t=        j>                  |d¬(«      |d)<   ||fS )*u1   è§£æž�å�•ä¸ª PDF â†’ (record dict, contacts list)r   rH   rJ   rv   r|   r}   Nr   é   u   é¡¹ç›®õ   çœ�/å¸‚õ	   çœ�ï¼�å¸‚rK   uæ   ^(é»‘é¾™æ±Ÿ|å†…è’™å�¤|å¹¿è¥¿|è¥¿è—�|æ–°ç–†|å®�å¤�|é�’æµ·|ç”˜è‚ƒ|å››å·�|è´µå·ž|äº‘å�—|é™•è¥¿|å±±è¥¿|æ²³åŒ—|å±±ä¸œ|æ²³å�—|æ¹–åŒ—|æ¹–å�—|æ±Ÿè‹�|æµ™æ±Ÿ|å®‰å¾½|æ±Ÿè¥¿|ç¦�å»º|å¹¿ä¸œ|æµ·å�—|è¾½å®�|å�‰æž—|ä¸Šæµ·|åŒ—äº¬|å¤©æ´¥|é‡�åº†)(.*)$r   r   rI   õ   è¯¦ç»†åœ°å�€r   Fõ   å»ºè®¾å†…å®¹æ��è¿°Tõ   è¯¥é¡¹ç›®å�¯èƒ½õ   æ¸©é¦¨æ��ç¤ºr(   õ   ä¸»è¦�è®¾å¤‡u   æ¸©é¦¨æ��ç¤º.*r)   c              3   ó    K  — | ]  }|–— Œ y ­w)Nrx   )Ú.0Úks     r;   ú	<genexpr>zparse_pdf.<locals>.<genexpr>Q  s   è ø€ Ò7 œ1Ñ7ùs   ‚)r¦   r§   r¨   r©   rª   r¬   r«   é   r
   u    ç²¾å‡†é‡‡è´­è®¾å¤‡[ï¼š:]?\s*(.*)r*   u   å·¥è‰ºæµ�ç¨‹[ï¼š:]?\s*(.*)r+   u   å·¥æœŸæ¦‚è¿°[ï¼šï¼š]?\s*(.*)r,   r�   )Úensure_asciiÚraw_json) Úfitzro   Ú
page_countÚget_textÚrangeÚcloser‹   rˆ   Ú	PAGE1_MAPr‡   r�   r‰   rŠ   r^   Újoinr�   ÚmatchÚgrouprŽ   ÚtupleÚkeysrn   ÚsearchÚPHASE_LABELSÚosÚpathÚbasenameÚsplitextr£   ÚdictÚjsonÚdumps)ÚfilepathÚdocÚtext_p1Útext_p2Útext_contactsÚpiÚrecordr›   r•   r¢   Úlabelr{   r�   Únext_lÚvalsÚnÚmÚpartsÚ
desc_linesÚin_descÚrestÚlabel_prefixesÚp2_linesÚphase_labelÚfnamer�   Úraws                              r;   Ú	parse_pdfrÝ   ú   sš  € ä
�)‰)�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à€Fð �M‰M˜$Ó€EÜ˜%Ó ó ‰ˆˆ1Ü#Ÿ/™/Ó+ó 	‰JˆE�3Ø�|‰|˜E E™MÔ*¨a¯l©l¸5À3¹;Õ.GØœ˜E›
 1™˜Ð&×,Ñ,Ó.�á˜s jÒ0°Q¸±U¼SÀ»ZÒ5GØ" 1 Q¡3™Z×-Ñ-Ó/�FÙ %¨vÑ"5¸#ÀVÑ:KØ$˜à˜*Ò$Ù$'˜C™5¨R�DØ�AØ˜a™%¤# e£*Ò,Ø!& q¨1¡u¡×!3Ñ!3Ó!5˜Ø  F™?¨c°V©m¼sÀ6»{ÈQºÐRX×RcÑRcÐdlÔRmØ!ØŸ™ FÔ+Ø˜Q™˜ð ˜a™%¤# e£*Ó,ð Ÿ'™' $›-�CØ!��s‘Úò)	ðð0 ó )ˆØ�<‰<˜	Ô" a§l¡l°;Õ&?Ø,1°Q©J�1—7‘7˜5 !Ó$ RÒ(¸A¿G¹GÀCÈ»OÈBÑ<O×VÑVÓXˆCÜ—‘ðCàDGóIˆAñ Ø%&§W¡W¨Q£Z×%5Ñ%5Ó%7��zÑ"Ø!"§¡¨£×!1Ñ!1Ó!3��v’Ø˜‘ØŸ	™	 # qÓ)�Ø%*¨1¡X§^¡^Ó%5��zÑ"Ø!& q¡§¡Ó!1��v“à%(��zÓ"ð)ð$ ò nˆØ�<‰<˜Õ'¨U°a©Z¸3À!º8ØAFÈ!Á¨¯©°°qÓ(9¸"Ò(=ÐQR×QXÑQXÐY\Ð^_ÓQ`ÐacÑQd×'kÑ'kÓ'mˆFÐ#Ò$ðnð
 €JØ€GØò -ˆØ�<‰<Ð,Ô-°5¸A±:ÀÈÁØˆGØ-2°a©Z�A—G‘G˜E 1Ó% bÒ)¸Q¿W¹WÀSÈ!»_ÈRÑ=P×WÑWÓYˆDÙØ×!Ñ! $Ô'ØÚØ�|‰|Ð-Ô.°!·,±,¸~Ô2NÙØ�w‰w�yØ×!Ñ! !§'¡'£)Õ,ð-ñ Ø)+¯©°Ó)<ˆÐ%Ñ&ð ò ˆØ�<‰<Ð)Ô*¨a¯l©l¸>Õ.JØ,1°Q©J�1—7‘7˜5 !Ó$ RÒ(¸A¿G¹GÀCÈ»OÈBÑ<O×VÑVÓXˆCÜ—&‘&Ð*¨B°Ó4×:Ñ:Ó<ˆCØ'*ˆFÐ#Ñ$Ùðô Ñ7¤i§n¡nÓ&6Ô7Ó7ð ;Qñ Q€Nàò ˆØ�G‰G‹IˆÚ”�Q“˜!“ A§L¡L°Õ$@ÀUÐRSÂ^ÐX[ÐcdÒXdØ%&ˆF�>Ñ"Ùð	ð
 �:‰:�nÔ%Øò 	ˆAØ—‘“	ˆAÚ”S˜“V˜a“Z¨¯©°^Õ(DØ)*¯©°¸Ó):¸2Ñ)>×)DÑ)DÓ)F��~Ñ&Ùð		ð �}‰}˜TÓ"€HÜ˜(Ó#ó ‰ˆˆ1ä�I‰IÐ9¸1Ó=ˆÙØ./¯g©g°a«j×.>Ñ.>Ó.@ˆFÐ*Ñ+Ü�I‰IÐ3°QÓ7ˆÙØ%&§W¡W¨Q£Z×%5Ñ%5Ó%7ˆF�>Ñ"Ü�I‰IÐ5°qÓ9ˆÙØ*+¯'©'°!«*×*:Ñ*:Ó*<ˆFÐ&Ñ'Ü ,ò 	ÑˆK˜Ø�|‰|˜KÕ(¨e°q©j¸CÀ1¹HÌÈAÏGÉGËIËÔZ]Ð^iÓZjÓHjÜ�q—w‘w“y“>¤S¨Ó%5Ò5Ø56¸±U¼SÀ»]Ò5J˜( 1 q¡5™/×/Ñ/Ô1ÐPR‘Cà49¸Q±J˜1Ÿ7™7 5¨!Ó,¨RÒ0ÀAÇGÁGÈCÐQRÃOÐTVÑDW×^Ñ^Ó`�CØ!��s‘Úò	ðð* �:‰:�nÔ%Ü—‘× Ñ  Ó*ˆÜ!#§¡×!1Ñ!1°%Ó!8¸Ñ!;ˆˆ~Ñô   Ó.€Hô ˆv‹,€CØ€Cˆ
�OÜŸ™ C°eÔ<€Fˆ:Ñà�8ÐÐr=   c                 ó`  — t        j                  t        «      }| j                  dd«      }| j                  dd«      }d }|r!|j	                  d|f«      j                  «       }|€#|r!|j	                  d|f«      j                  «       }t        D �cg c]  }| j                  |d«      ‘Œ }}|j                  | j                  dd«      «       t        dgz   }dj                  dgt        |«      z  «      }|r?dj                  d	„ |D «       «      }	d
|	› d�}
|j	                  |
||d   gz   «       |d   }d}nNddj                  |«      › d|› d�}
|j	                  |
|«       |j	                  d«      j                  «       d   }d}|j                  «        |j                  «        ||xs |fS c c}w )Nr	   rH   r
   z2SELECT rowid FROM zc_projects WHERE project_id = ?z4SELECT rowid FROM zc_projects WHERE project_name = ?r³   z, ú?c              3   ó&   K  — | ]	  }|› d �–— Œ y­w)z=?Nrx   )r®   rs   s     r;   r°   z!upsert_project.<locals>.<genexpr>�  s   è ø€ Ò5 q˜Q˜C˜rœ(Ñ5ùs   ‚zUPDATE zc_projects SET z WHERE rowid=?r   ÚUPDATEzINSERT INTO zc_projects (ú,z
) VALUES (ú)zSELECT last_insert_rowid()ÚINSERT)Úsqlite3ÚconnectÚDB_PATHrn   ÚexecuteÚfetchoneÚ	ZC_FIELDSr^   rº   r‰   Úcommitr¸   )rÎ   ÚdbÚpidÚpnameÚexistingrs   rÑ   Úall_colsÚphÚset_cÚsqlÚrowidÚactions                r;   Úupsert_projectrö   ‰  s˜  € Ü	�‰œÓ	!€BØ
�*‰*�\ 2Ó
&€CØ�J‰J�~ rÓ*€Eà€HÙ
Ø—:‘:ÐRÐUXÐTZÓ[×dÑdÓfˆØÐ™Eà—:‘:ÐTÐW\ÐV^Ó_×hÑhÓjˆô (1Ö1 !ˆF�J‰J�q˜"ÕÐ1€DÐ1Ø‡K�K�—
‘
˜: rÓ*Ô+ä˜J˜<Ñ'€HØ	�‰�C�5œ3˜x›=Ñ(Ó	)€BáØ—	‘	Ñ5¨HÔ5Ó5ˆØ'¨ w¨nÐ=ˆØ
�
‰
�3˜ ¨¡˜}Ñ,Ô-Ø˜‘ˆØ‰à)¨#¯(©(°8Ó*<Ð)=¸ZÈÀtÈ1ÐMˆØ
�
‰
�3˜ÔØ—
‘
Ð7Ó8×AÑAÓCÀAÑFˆØˆà‡I�I„KØ‡H�H„JØ�3’<˜%ÐÐùò) 2s   ÂF+c                 óö  — |syt        j                  t        «      }|j                  d| f«       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«      f	«       |dz  }Œ¤ |j                  «        |j                  «        |S )Nr   z,DELETE FROM zc_contacts WHERE project_id = ?z‹INSERT INTO zc_contacts (project_id, company, contact_name, department, position, phone, remarks, address, role) VALUES (?,?,?,?,?,?,?,?,?)r~   rH   r   r€   r�   r‚   rƒ   r„   r…   rJ   )rå   ræ   rç   rè   rn   rë   r¸   )Úproject_pidr�   rì   Úsavedr¡   s        r;   Úsave_contactsrú   ­  sä   € ÙØÜ	�‰œÓ	!€Bà‡J�JÐ=À¸~ÔNØ€EØò ˆØ
�
‰
ð ZØ˜!Ÿ%™% 	¨2Ó.°·±°nÀbÓ0IØ�U‰U�< Ó$ a§e¡e¨J¸Ó&;¸Q¿U¹UÀ7ÈBÓ=OØ�U‰U�9˜bÓ! 1§5¡5¨°BÓ#7¸¿¹¸vÀrÓ9JðLô	
ð 	�‰
‰ðð ‡I�I„KØ‡H�H„JØ€Lr=   c                  óx  — t        t        j                  «      dkD  rt        j                  d   nd} t        d| › d�«       t	        «       }t        dt
        › dt        |«      › d�«       | dk(  r|d d	 }n|}|st        j                  t        «      }|j                  d
«      j                  «       d   }|j                  d«      j                  «       d   }|j                  «        t        d|› d|› �«       y dx}x}}t        |«      }	t        |d«      D ]à  \  }
}t        j                  j                  t         |«      }t        j                  j#                  |«      st%        ||«      s|dz  }Œ[	 t'        |«      \  }}|r^|j)                  d«      rMt+        |«      \  }}t-        ||«      }|dk(  r|dz  }n|dz  }|
dz  dk(  r2t        d|
› d|	› d|› d|› d|› �
«       n|dz  }t        d|d d › d�«       Œâ t        j                  t        «      }|j                  d
«      j                  «       d   }|j                  d«      j                  «       d   }|j                  «        t        d|› d|› d|› �«       t        d|› d|› d�«       y # t.        $ r$}|dz  }t        d|d d › d|› �«       Y d }~�ŒŸd }~ww xY w)NrJ   Údailyz=== ZC v2 parse [mode=z] ===zWebDAV z: z PDFsÚtesté   z SELECT COUNT(*) FROM zc_projectsr   z SELECT COUNT(*) FROM zc_contactszNothing to process. Projects: z, Contacts: r
   rä   é   z  [rI   z] +z Uz errz  SKIP é(   z: no project_namez  ERROR zDone: +zZC.db: z projects, z	 contacts)r‰   ÚsysÚargvr<   rh   rM   rå   ræ   rç   rè   ré   r¸   rˆ   rÁ   rÂ   rº   ÚLOCAL_CACHEÚexistsrt   rÝ   rn   rö   rú   Ú	Exception)Úmoderd   Ú
to_processrì   rÒ   ÚncÚinsÚupdÚerrÚtotalr“   rÛ   ÚlpÚrecr�   Úactrí   Úc_savedÚes                      r;   Úmainr  Å  sª  € ÜœcŸh™h›-¨!Ò+Œ3�8‰8�AŠ;°€DÜÐ
    eÐ,Ô-ô ‹=€DÜˆ'”*�˜R¤ D£	˜{¨%Ð0Ô1àˆv‚~Ø˜"˜1�X‰
àˆ
áÜ�_‰_œWÓ%ˆØ�J‰JÐ9Ó:×CÑCÓEÀaÑHˆØ�Z‰ZÐ:Ó;×DÑDÓFÀqÑIˆØ
�‰Œ
ÜÐ,¨Q¨C¨|¸B¸4Ð@ÔAØàÐ€CÐˆ#�Ü�
‹O€Eä 
¨AÓ.ò .‰
ˆˆUÜ�W‰W�\‰\œ+ uÓ-ˆÜ�w‰w�~‰~˜bÔ!¬/¸%ÀÔ*DØ�1‰HˆCØð	.Ü% b›M‰MˆC�Ù�s—w‘w˜~Ô.Ü)¨#Ó.‘��SÜ'¨¨XÓ6�Ø˜(’?Ø˜1‘H‘Cà˜1‘H�CØ˜‘8˜q’=Ü˜#˜c˜U ! E 7¨#¨c¨U°"°S°E¸¸c¸UÐCÕDà�q‘�Ü�g˜e C R˜j˜\Ð):Ð;Ô<øð'.ô0 
�‰œÓ	!€BØ
�
‰
Ð5Ó6×?Ñ?ÓAÀ!ÑD€AØ	�‰Ð6Ó	7×	@Ñ	@Ó	BÀ1Ñ	E€BØ‡H�H„JÜˆ'�#��b˜˜˜T # Ð'Ô(Üˆ'�!��K ˜t 9Ð-Õ.øô ò 	.Ø�1‰HˆCÜ�(˜5  "˜:˜, b¨¨Ð,×-Ò-ûð	.ús   Å1BJÊ	J9ÊJ4Ê4J9Ú__main__)*Ú__doc__r  rÆ   rÁ   r�   rå   Úurllib.parserZ   r   Úcollectionsr   rN   Úrequests.authr   Ú	xml.etreer   rR   r´   rL   rM   ÚWEBDAV_USERÚWEBDAV_PASSrP   r  rç   Úmakedirsrê   r¹   rÀ   rŒ   Úlistr¾   r†   r<   rh   rt   r£   rÝ   rö   rú   r  Ú__name__rx   r=   r;   ú<module>r     sõ   ðñ÷ 0× /× /Ý Ý #ã Ý 'Ý 'Û ð -€Ø%€
Ø(€Ø"€Ù˜k¨;Ó7€à"€Ø€à €‡�ˆK $Õ 'ò€	ñ$ ò ó €	òD€ð ¨À^Ø°È;Ø¨nñ€ñ ˜Ÿ™›Ó(Ð òEòò$òSòtHò^! òHò05/ðp ˆzÒÙ…Fð r=   