Ë
    süéiÀ  ã                   ó$  — 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mZmZmZ ddl	m
Z
  eej                  d«      rej                  j                  d¬«        e
e«      j                  «       j                   Z e
d«      Zed	z  Zed
z  Zej*                  j-                  dd«      Zej*                  j-                  dd«      ZdZd„ Zd„ Zedk(  r		  e«        yy# e$ r3Z ede› �ej@                  ¬«        ejB                  d«       Y dZ[ydZ[ww xY w)u{  Daily Insta sync â€” runs on server PC at 19:00 KST.

1. Fetches new Discord forum threads (incremental â€” skips entries already in
   insta_meta.json by thread_id).
2. Downloads new photos/videos to C:\fearx-photos\insta\<thread_id>\.
3. Rebuilds insta_mapping.json (week/day/lunch/dinner buckets) with
   fearx-photos.sbxg.win URLs.
4. Pushes insta_mapping.json to EC2: /home/ubuntu/insta_bot/insta_mapping.json

Logs to stdout (run-sync.cmd appends to sync.log).

Env vars (set by run-sync.cmd):
- DISCORD_TOKEN
- EC2_SSH_KEY (path to private key, default C:\Users\User\.ssh\ec2_key)
- EC2_USER_HOST (default ubuntu@15.165.22.192)
é    N)ÚdatetimeÚtimezoneÚ	timedelta)ÚPathÚreconfigurezutf-8)ÚencodingzC:\fearx-photos\instazinsta_meta.jsonzinsta_mapping.jsonÚEC2_SSH_KEYzC:\Users\User\.ssh\ec2_keyÚEC2_USER_HOSTzubuntu@15.165.22.192z)/home/ubuntu/insta_bot/insta_mapping.jsonc                 ó�   — t        dt        | t        «      rdj                  | «      n| › �d¬«       t	        j
                  | fi |¤ŽS )Nz[run] Ú T©Úflush)ÚprintÚ
isinstanceÚlistÚjoinÚ
subprocessÚrun)ÚcmdÚkwargss     úC:\fearx-photos\sync\sync.pyr   r   &   s;   € Ü	ˆF¤J¨s´DÔ$9�3—8‘8˜C”=¸sÐCÐ
DÈDÕQÜ�>‰>˜#Ñ( Ñ(Ð(ó    c                  óæ  — t        j                  t        t        d¬«      «      «      j	                  «       } t        d| › d�d¬«       t        dz  }|j                  «       s3t        d|› �t        j                  ¬	«       t        j                  d
«       t        t        j                  t        |«      dg«      }|j                  dk7  r0t        dt        j                  ¬	«       t        j                  d«       t        dz  }|j                  «       ryt         j#                  dd¬«       t        dt        |«      t        t         «      dddddddg
«      }|j                  dkD  r(t        d|j                  › �t        j                  ¬	«       t        dz  }t        dz  }|j                  «       r|j                  «       s0t        dt        j                  ¬	«       t        j                  d«       t        t        j                  t        |«      gd¬«       t        t        j                  t        |«      gd¬«       t$        j                  «       s0t        d t        j                  ¬	«       t        j                  d!«       t'        t(        «      j                  «       s7t        d"t(        › �t        j                  ¬	«       t        j                  d#«       t        d$d%t(        d&d'd&d(t*        j,                  j/                  d)d*«      z   d+z   t        t$        «      t0        › d,t2        › �g	«      }|j                  dk7  r0t        d-t        j                  ¬	«       t        j                  d.«       t        d/d¬«       y )0Né	   )Úhoursz
=== fearx-insta-sync run @ z ===Tr   zextract_insta_from_discord.pyz	missing: ©Úfileé   z
--downloadr   zextract failedé   Úinsta_photos)ÚparentsÚexist_okÚrobocopyz/Ez/XOz/NFLz/NDLz/NJHz/NJSz/NPé   zrobocopy returned zbuild_insta_mapping.pyzmigrate_mapping_to_server.pyzmissing build/migrate scriptsé   )Úcheckzmapping missing, skipping pushé   zSSH key missing: é   Úscpz-iz-ozStrictHostKeyChecking=nozUserKnownHostsFile=ÚUSERPROFILEÚ z\.ssh\known_hostsÚ:z
scp failedé   z=== sync complete ===)r   Únowr   r   Ú	isoformatr   ÚHEREÚis_fileÚsysÚstderrÚexitr   Ú
executableÚstrÚ
returncodeÚis_dirÚPHOTOS_ROOTÚmkdirÚMAPPINGr   ÚEC2_KEYÚosÚenvironÚgetÚEC2_HOSTÚEC2_DEST)ÚtsÚextractÚrÚlocal_photosÚrcÚbuildÚmigrater)   s           r   ÚmainrI   +   st  € Ü	�‰”hœy¨qÔ1Ó2Ó	3×	=Ñ	=Ó	?€BÜ	Ð)¨"¨¨TÐ
2¸$Õ?ô Ð4Ñ4€GØ�?‰?ÔÜ�	˜'˜Ð#¬#¯*©*Õ5´s·x±xÀ´{ÜŒS�^‰^œS ›\¨<Ð8Ó9€AØ‡|�|�qÒÜÐ¤S§Z¡ZÕ0´#·(±(¸1´+ô ˜.Ñ(€LØ×ÑÔÜ×Ñ $°ÐÔ6ä�*œc ,Ó/´´[Ó1AØ˜˜v v¨v°v¸uðFó Gˆð �=‰=˜1ÒÜÐ& r§}¡} oÐ6¼S¿Z¹ZÕHô Ð+Ñ+€EÜÐ3Ñ3€GØ�=‰=Œ? '§/¡/Ô"3ÜÐ-´C·J±JÕ?ÄÇÁÈ!ÄÜŒ�‰œ˜U›Ð$¨DÕ1ÜŒ�‰œ˜W›Ð&¨dÕ3ô �?‰?ÔÜÐ.´S·Z±ZÕ@Ä#Ç(Á(È1Ä+Ü”‹=× Ñ Ô"ÜÐ!¤' Ð+´#·*±*Õ=¼s¿x¹xÈ¼{Ü
Øˆt”W˜dÐ$>ØÐ#¤b§j¡j§n¡n°]ÀBÓ&GÑGÐJ^Ñ^ÜŒG‹œ˜
 !¤H :Ð.ðó €Cð
 ‡~�~˜ÒÜˆl¤§¡Õ,¬c¯h©h°q¬kÜ	Ð
!¨Ö.r   Ú__main__zsync error: r   éc   )"Ú__doc__Újsonr=   r   r2   Útimer   r   r   Úpathlibr   ÚhasattrÚstdoutr   Ú__file__ÚresolveÚparentr0   r9   ÚMETAr;   r>   r?   r<   r@   rA   r   rI   Ú__name__Ú	ExceptionÚer   r3   r4   © r   r   Ú<module>rZ      s	  ðñó  Û 	Û Û 
Û ß 2Ñ 2Ý á
ˆ3�:‰:�}Ô%Ø‡J�J×Ñ GÐÔ,áˆHƒ~×ÑÓ×&Ñ&€ÙÐ+Ó,€ØÐÑ€Ø
Ð%Ñ
%€à
�*‰*�.‰.˜Ð(EÓ
F€Ø�:‰:�>‰>˜/Ð+AÓB€Ø6€ò)ò
+/ð\ ˆzÒðÙ�ð øð ò Ù�˜Q˜CÐ  s§z¡zÕ2Øˆ�‰��‰ûðús   ÃC ÃDÃ)D
Ä
D