Ë
    œCj�  ã                   óP  — d Z ddlZddlZddlZddlmZ ddlmZ  ee«      j                  j                  «       Zedz  Zedz  ZdZdZd	d
ddddddœZh d£Zh d£ZdZdZdZdZdZdZdededefd„Zdededefd„Zdededefd„Zd„ Zd „ Zed!k(  r e«         e«         e d"«       yy)#uŠ   åœ¨æœ¬åœ°åŽ‹ç¼©å›¾ç‰‡/è§†é¢‘ï¼Œå¹¶éƒ¨ç½²åˆ° nginx-server çš„ /usr/local/nginx/html/rental-260630/ã€‚

ç”¨æ³•ï¼š
    python3 deploy_vps.py
é    N)ÚPath)ÚImageu   ç§Ÿæˆ¿260630Úvps_stagingznginx-server@81.70.105.160z#/usr/local/nginx/html/rental-260630zwanquanzhuangbei-2-711zwanquanzhuangbei-4-310zxiaonanzhuang-24-762zlixinhong-5-1-6zsanyimiao-1cengzcaizhihuiguan-Gzcaizhihuiguan-3)u   ä¸‡åŒ—2-711u   ä¸‡åŒ—4-310u   å°�å�—åº„24u   çº¢5æ¥¼u	   ä¸‰ä¹‰åº™u   è´¢æ™ºå…¬é¦†Gu   è´¢æ™ºå…¬é¦†3>   ú.gifú.pngú.jpegú.webpú.jpg>   ú.mkvú.movú.webmú.mp4i@  éP   ià  éK   i   é   ÚsrcÚdstÚreturnc                 ó¦  — 	 |j                   j                  dd¬«       t        j                  | «      5 }|j                  dv r|j                  d«      }|j                  t        t        ft        j                  «       |j                  |dt        d¬«       ddd«       y# 1 sw Y   yxY w# t        $ r}t        d| › d	|› �«       Y d}~y
d}~ww xY w)u2   åŽ‹ç¼©å›¾ç‰‡ï¼Œé™�åˆ¶æœ€é•¿è¾¹å¹¶ä¿�å­˜ä¸º JPEGã€‚T©ÚparentsÚexist_ok©ÚRGBAÚPÚRGBÚJPEG©ÚqualityÚoptimizeNu     [å›¾ç‰‡åŽ‹ç¼©å¤±è´¥] ú: F)ÚparentÚmkdirr   ÚopenÚmodeÚconvertÚ	thumbnailÚFULL_MAX_SIZEÚLANCZOSÚsaveÚFULL_QUALITYÚ	ExceptionÚprint©r   r   ÚimÚes       ú./html_logs/deploy_vps.pyÚcompress_imager2   *   s­   € ðØ�
‰
×Ñ °ÐÔ5Ü�Z‰Z˜Œ_ Ø�w‰w˜-Ñ'Ø—Z‘Z Ó&�à�L‰Lœ-¬Ð7¼¿¹ÔGØ�G‰G�C˜¬ÀˆGÔE÷ ð ÷ ð ûÜò ÜÐ'¨ u¨B¨q¨cÐ2Ô3Üûðúó5   ‚2B, ´A#B ÂB, Â B)Â%B, Â)B, Â,	CÂ5CÃCc                 ó¦  — 	 |j                   j                  dd¬«       t        j                  | «      5 }|j                  dv r|j                  d«      }|j                  t        t        ft        j                  «       |j                  |dt        d¬«       ddd«       y# 1 sw Y   yxY w# t        $ r}t        d| › d	|› �«       Y d}~y
d}~ww xY w)u   ç”Ÿæˆ�ç¼©ç•¥å›¾ã€‚Tr   r   r   r   r   Nu     [ç¼©ç•¥å›¾å¤±è´¥] r!   F)r"   r#   r   r$   r%   r&   r'   ÚTHUMB_MAX_SIZEr)   r*   ÚTHUMB_QUALITYr,   r-   r.   s       r1   Úmake_thumbnailr7   :   s­   € ð
Ø�
‰
×Ñ °ÐÔ5Ü�Z‰Z˜Œ_ Ø�w‰w˜-Ñ'Ø—Z‘Z Ó&�Ø�L‰Lœ.¬.Ð9¼5¿=¹=ÔIØ�G‰G�C˜¬ÀˆGÔF÷	 ð
 ÷ ð
 ûÜò ÜÐ$ S E¨¨A¨3Ð/Ô0Üûðúr3   c                 ó„  — |j                   j                  dd¬«       dddt        | «      dddt        t        «      d	d
ddt        › d�ddddddt        |«      g}	 t        j                  |dt
        j                  t
        j                  ¬«       y# t
        j                  $ r}t        d| › d|› �«       Y d}~yd}~ww xY w)u   ç”¨ ffmpeg åŽ‹ç¼©è§†é¢‘ã€‚Tr   Úffmpegz-yz-iz-c:vÚlibx264z-crfz-presetÚmediumz-vfzscale='min(z,iw)':-2,format=yuv420pz-c:aÚaacz-b:aÚ128kz	-movflagsz
+faststart)ÚcheckÚstdoutÚstderru     [è§†é¢‘åŽ‹ç¼©å¤±è´¥] r!   NF)
r"   r#   ÚstrÚ	VIDEO_CRFÚVIDEO_MAX_WIDTHÚ
subprocessÚrunÚDEVNULLÚCalledProcessErrorr-   )r   r   Úcmdr0   s       r1   Úcompress_videorI   I   s»   € à‡J�J×Ñ˜T¨DÐÔ1à�$˜œc #›hØ�	Ø””I“Ø�8Ø�œ_Ð-Ð-DÐEØ�Ø�Ø�\ÜˆC‹ð
€CðÜ�‰�s $¬z×/AÑ/AÌ*×J\ÑJ\Õ]ØøÜ×(Ñ(ò ÜÐ'¨ u¨B¨q¨cÐ2Ô3Üûðús   Á5B ÂB?Â$B:Â:B?c                  ó\  — t        dt        › �«       t        j                  «       rt        j                  t        «       t        j                  d¬«       t        j                  «       D ]"  } t        dz  | z  dz  j                  dd¬«       Œ$ t        j                  «       D � ci c]	  } | g g g dœ“Œ }} t        j                  «       D �]‚  \  }} t        |z  }|j                  «       st        d|› �«       Œ/t        d	|› d
| › �«       t        |j                  «       «      D �]&  }|j                  «       sŒ|j                  j                  dk(  rŒ/|j                  j!                  «       }|t"        v r„|j$                  dz   }t        dz  | z  |z  }t        dz  | z  dz  |z  }t'        ||«      r||    d   j)                  d| › d|› �«       t+        ||«      sŒ·||    d   j)                  d| › d|› �«       ŒÕ|t,        v sŒÞ|j$                  dz   }t        dz  | z  |z  }	t/        ||	«      s�Œ
||    d   j)                  d| › d|› �«       �Œ) �Œ… t1        t        dz  dd¬«      5 }
t3        j4                  ||
dd¬«       ddd«       t        dt        dz  › �«       t        j6                  t8        dz  t        dz  «       t        d«       t;        d„ |j                  «       D «       «      }t;        d„ |j                  «       D «       «      }t        d |› d!|› d"�«       yc c} w # 1 sw Y   Œ¥xY w)#u3   åœ¨æœ¬åœ°ç”Ÿæˆ�åŽ‹ç¼©å�Žçš„ç½‘é¡µå’Œåª’ä½“æ–‡ä»¶ã€‚u   å‡†å¤‡æœ¬åœ° staging ç›®å½•: T)r   ÚmediaÚthumbsr   )ÚimagesÚ
thumbnailsÚvideosu   è­¦å‘Šï¼šæº�ç›®å½•ä¸�å­˜åœ¨ u   å¤„ç�† z -> r
   rM   zmedia/Ú/rN   z/thumbs/r   rO   z
media.jsonÚwzutf-8)ÚencodingFé   )Úensure_asciiÚindentNu
   å·²ç”Ÿæˆ� z
comps.htmlu   å·²å¤�åˆ¶ comps.htmlc              3   ó8   K  — | ]  }t        |d    «      –— Œ y­w)rM   N©Úlen©Ú.0Úvs     r1   Ú	<genexpr>zstage.<locals>.<genexpr>•   ó   è ø€ Ð<©m¨”C˜˜(™×$©mùó   ‚c              3   ó8   K  — | ]  }t        |d    «      –— Œ y­w)rO   NrW   rY   s     r1   r\   zstage.<locals>.<genexpr>–   r]   r^   u   åª’ä½“ç»Ÿè®¡: u	    å¼ å›¾, u
    ä¸ªè§†é¢‘)r-   ÚSTAGING_DIRÚexistsÚshutilÚrmtreer#   ÚDIR_TO_SLUGÚvaluesÚitemsÚSRC_DIRÚsortedÚiterdirÚis_filer"   ÚnameÚsuffixÚlowerÚ
IMAGE_EXTSÚstemr2   Úappendr7   Ú
VIDEO_EXTSrI   r$   ÚjsonÚdumpÚcopyÚBASE_DIRÚsum)ÚslugÚdataÚsrc_nameÚsrc_dirÚfÚextÚout_nameÚ	full_pathÚ
thumb_pathÚout_pathÚfpÚ	total_imgÚ	total_vids                r1   Ústager„   _   së  € ä	Ð)¬+¨Ð
7Ô8Ü×ÑÔÜ�‰”kÔ"Ü×Ñ˜dÐÔ#ô ×"Ñ"Ö$ˆÜ	�wÑ	 Ñ	%¨Ñ	0×7Ñ7ÀÈtÐ7ÕTð %ô NY×M_ÑM_ÔMaÓbÑMaÀTˆD˜R¨r¸RÑ@Ñ@ÐMa€DÐbä%×+Ñ+×-‰ˆ�$Ü˜HÑ$ˆØ�~‰~ÔÜÐ0°°	Ð:Ô;Øä�˜�z  d VÐ,Ô-Ü˜Ÿ™Ó)×*ˆAØ—9‘9”;Øà�x‰x�}‰} Ò(Øà—(‘(—.‘.Ó"ˆCØ”jÑ ØŸ6™6 F™?�Ü'¨'Ñ1°DÑ8¸8ÑC�	Ü(¨7Ñ2°TÑ9¸HÑDÀxÑO�
ä! ! YÔ/Ø˜‘J˜xÑ(×/Ñ/°&¸¸¸aÀ¸zÐ0JÔKÜ! ! ZÕ0Ø˜‘J˜|Ñ,×3Ñ3°f¸T¸FÀ(È8È*Ð4UÕVàœ
Ò"ØŸ6™6 F™?�Ü&¨Ñ0°4Ñ7¸(ÑB�Ü! ! XÖ.Ø˜‘J˜xÑ(×/Ñ/°&¸¸¸aÀ¸zÐ0JÖKò- +ð .ô@ 
Œk˜LÑ(¨#¸Õ	@ÀBÜ�	‰	�$˜¨°qÕ9÷ 
Aä	ˆJ”{ \Ñ1Ð2Ð
3Ô4ô ‡K�K”˜<Ñ'¬°|Ñ)CÔDÜ	Ð Ô"ô Ñ<¨d¯k©k¬mÓ<Ó<€IÜÑ<¨d¯k©k¬mÓ<Ó<€IÜ	ˆN˜9˜+ Y¨y¨k¸Ð
DÕEùò[ c÷D 
AÐ	@ús   Â%LÉ$L"Ì"L+c                  óÄ   — t        dt        › dt        › �«       dddt        t        «      dz   t        › dt        › d�g} t        j                  | d¬«       t        d	«       y
)u   ç”¨ rsync ä¸Šä¼ åˆ° VPSã€‚u   
ä¸Šä¼ åˆ° Ú:Úrsyncz-avzz--deleterP   T)r>   u   ä¸Šä¼ å®Œæˆ�N)r-   ÚVPS_HOSTÚVPS_REMOTE_DIRrA   r`   rD   rE   )rH   s    r1   ÚuploadrŠ   š   s\   € ä	ˆLœ˜
 !¤NÐ#3Ð
4Ô5à�˜ÜŒKÓ˜3ÑÜˆ*�A”nÐ% QÐ'ð€Cô
 ‡N�N�3˜dÕ#Ü	ˆ.Õó    Ú__main__uC   
é¡µé�¢åœ°å�€: https://www.drail-2023.asia/rental-260630/comps.html)!Ú__doc__rr   rb   rD   Úpathlibr   ÚPILr   Ú__file__r"   Úresolveru   rg   r`   rˆ   r‰   rd   rn   rq   r(   r+   r5   r6   rC   rB   Úboolr2   r7   rI   r„   rŠ   Ú__name__r-   © r‹   r1   Ú<module>r•      s  ðñó
 Û Û Ý å á�‹>× Ñ ×(Ñ(Ó*€Ø
�^Ñ
#€Ø˜Ñ&€Ø'€Ø6€ð ,Ø+Ø)Ø Ø"Ø&Ø&ñ€ò 8€
Ú.€
ð €Ø€Ø€Ø€Ø€Ø€	ð˜ð  4ð ¨Dó ð ˜ð  4ð ¨Dó ð˜ð  4ð ¨Dó ò,8Fòv	ð ˆzÒÙ	„GÙ
„HÙ	ÐPÕRð r‹   