Ë
    ª+¿jÇ  ã                   óX  — d 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	 ddl
mZmZmZ  e ed¬«      «      ZdZej                   j#                  ed	«      Zd
ZddgZdZd„ Zd\  ZZd„ Zd„ Zedk(  r		  e«        yy# e$ r%Z ede«        ej<                  d«       Y dZ[ydZ[ww xY w)uÔ  pasang_car_generik.py â€” pasang carousel 10 slide ke FEED IG StudioSoft + story mirror.

Pakai:
  python3 pasang_car_generik.py --folder ss_ig_car10_manufaktur --prefix ss_car10_manufaktur       --caption /tmp/cap_manufaktur.txt --hari 1 --go

  --hari 0 = slot 08:30 WIB HARI INI, 1 = besok, dst.
Gate: JPEG q85 â†’ openclaw-img/, HTTP 200 di KEDUA ingress (abort kalau bukan 200),
idempoten (akun + slot sudah terisi â†’ SKIP), verifikasi baca balik album & story.
é    N)ÚdatetimeÚ	timedeltaÚtimezone)ÚImage)Ú
get_clientÚReplizErrorÚIMG_BASE_URLé   )Úhoursz//home/mantapman/.hermes/profiles/atun/workspacezopenclaw-imgÚ6a38ac33c5ff4ce3a3231232z103.84.155.153z103.84.155.217zmantapserver.tail3947bb.ts.netc                 óà   — dt         › d| › �}t        D ]Y  }t        j                  ddddddd	d
dt         › d|› �|gdd¬«      j                  j                  «       }|dk7  sŒMd| › d|› d|› �fc S  y)Nzhttps://ú/openclaw-img/Úcurlz-sz-oz	/dev/nullz-wz%{http_code}z
--max-timeÚ30z	--resolvez:443:T)Úcapture_outputÚtextÚ200Fz @õ    â†’ )TÚ )ÚHOSTÚINGRESSÚ
subprocessÚrunÚstdoutÚstrip)ÚnamaÚurlÚipÚcodes       úE/home/mantapman/.hermes/profiles/atun/workspace/pasang_car_generik.pyÚcek_ingressr!      s˜   € Ø”T�F˜.¨¨Ð
/€CÜò 5ˆÜ�~‰~˜v t¨T°;ÀÀnÐVbÐdhØ*¬t¨f°E¸"¸Ð,>ÀðEà-1¸ô>ç>D¹fÇUÁUÃWð 	ð �5‹=Ø˜T˜F " R D¨¨d¨VÐ4Ð4Ò4ð5ð ó    )é8  i€  c           	      ó&  — t         j                  j                  t        | «      }t         j                  j	                  |«      syd| › �}t         j                  j                  t        |«      }t         j                  j	                  |«      r#t         j                  j                  |«      dkD  �sat        j                  |«      j                  d«      }|j                  t        t        fk(  r| S |j                  d«      }t        |«      dk\  rd}t        t        |j                  z  t        |j                  z  «      }|j!                  t#        |j                  |z  «      t#        |j                  |z  «      ft        j$                  «      }t        j&                  dt        t        f|«      }|j)                  |t        |j                  z
  dz  t        |j                  z
  dz  f«       |j+                  |d	¬
«       t-        d| › d|› d|› d�«       |S )up  Slide 4:5 â†’ media story 1080x1920 sewarna latar slide (WAJIB).

    Pitfall 2 Okt 2026 (screenshot Bos: teks story mirror carousel properti kepotong kiri-kanan):
    jangan pernah pasang slide 4:5 mentah ke type=story â€” IG memaksa media memenuhi kanvas 9:16,
    jadi ~228 px terpotong per sisi. Slide ditaruh utuh di tengah kanvas sewarna piksel sudut (8,8).
    NÚss_story_canvas_iè  ÚRGB)é   r'   éë   )éÿ   r)   r)   é   éZ   )Úqualityz   kanvas story: r   z (bg ú))ÚosÚpathÚjoinÚIMG_DIRÚexistsÚgetsizer   ÚopenÚconvertÚsizeÚCWÚCHÚgetpixelÚminÚwidthÚheightÚresizeÚroundÚLANCZOSÚnewÚpasteÚsaveÚprint)	r   ÚsrcÚbaruÚdstÚimÚbgÚskalaÚkecilÚknvs	            r    Úkanvas_storyrL   ,   sƒ  € ô �'‰'�,‰,”w Ó
%€CÜ�7‰7�>‰>˜#ÔØØ˜d˜VÐ$€DÜ
�'‰'�,‰,”w Ó
%€CÜ�G‰G�N‰N˜3Ô¤B§G¡G§O¡O°CÓ$8¸4Ó$?Ü�Z‰Z˜‹_×$Ñ$ UÓ+ˆØ�7‰7”rœ2�hÒØˆKØ�[‰[˜Ó ˆÜˆr‹7�cŠ>Ø ˆBÜ”B˜Ÿ™‘M¤2¨¯	©	¡>Ó2ˆØ—	‘	œ5 §¡¨EÑ!1Ó2´E¸"¿)¹)ÀeÑ:KÓ4LÐMÌuÏ}É}Ó]ˆÜ�i‰i˜¤¤B˜x¨Ó,ˆØ�	‰	�%œ2 §¡Ñ+°Ñ1´B¸¿¹Ñ4EÈ!Ñ3KÐLÔMØ�‰�˜bˆÔ!ÜÐ! $  u¨T¨F°%¸°t¸1Ð=Ô>Ø€Kr"   c                  ó,  — t        j                  «       } | j                  dd¬«       | j                  dd¬«       | j                  dd¬«       | j                  dd¬«       | j                  d	d
¬«       | j                  dt        d¬«       | j                  dd¬«       | j	                  «       }t        |j                  d¬«      j                  «       j                  «       }t        |«      dkD  r-t        dt        |«      › d�«       t        j                  d«       |D �cg c]   }d|cxk  rdk  sn d|cxk  rdk  sŒn n|‘Œ" }}|r&t        d|d d › �«       t        j                  d«       t        j                  j                  t         |j"                  «      }t        d«       t%        dd«      D �]  }t        j                  j                  ||j&                  › d|d ›d!�«      }t        j                  j                  t(        |j&                  › d|d ›d"�«      }t+        j
                  |«      j-                  d#«      }	|	j.                  d$k(  sJ |› d%|	j.                  › �«       ‚|	j1                  |d&d'd¬(«       t        d)|j&                  › d|d ›d*t        j                  j3                  |«      d+z  › d,�«       �Œ
 t        d-«       t%        dd«      D ]E  }t5        |j&                  › d|d ›d"�«      \  }
}|
rŒ%t        d.|«       t        j                  d«       ŒG t        d/«       t7        j8                  t:        «      t=        |j>                  ¬0«      z   }|jA                  d1d2dd¬3«      }|jA                  d1d4dd¬3«      }|jC                  tD        jF                  «      jI                  d5«      }|jC                  tD        jF                  «      jI                  d5«      }tK        «       }t        d6«       g }d}	 |jM                  |d7¬8«      }|jO                  d9«      xs |jO                  d:«      xs g }|snž|D ]„  }|jO                  d;«      tP        k(  sŒ|jO                  d<«      xs djS                  |d d= «      sŒD|jU                  |jO                  d>«      |jO                  d?«      |jO                  d@«      f«       Œ† t        |«      d7k  rn|dz  }ŒÜt        dA|jI                  dB«      › dC�|r|ndD«       |rt        dE«       y tP        |jV                  xs dF|j&                  › �|jX                  dG|t%        dd«      D �cg c]#  }tZ        › dH|j&                  › d|d ›d"�dIdJ|› �dKœ‘Œ% c}|g dLdidMœ	}tP        dN|j&                  › �|jX                  dOdtZ        › dHt]        |j&                  › dP�«      › �dIdQdKœg|g dRœ}|j^                  s$t        dSt        |«      › dT�«       t        |«       y |dU   d   dV   ja                  dW«      dX   }t5        |«      \  }
}|
s!t        dY|«       t        j                  d«       t        dZ|› d[�«       t        d\«       |jc                  d]|«      }|jO                  d^«      xs$ |jO                  d>«      xs |jO                  d_«      }|jc                  d]|«      }|jO                  d^«      xs$ |jO                  d>«      xs |jO                  d_«      }t        d`|› da|jI                  dB«      › db|› da|jI                  dB«      › dc�	«       t        dd«       dG|fdO|ffD ]Ö  \  }}|jO                  de|› �«      }|jO                  d:«      xs |}t        d)|› df|jO                  d@«      › dg|jO                  d?«      › dh|jO                  d<«      › dit        |jO                  dU«      xs g «      › dj|jO                  dk«      xs i jO                  dl«      › dmt        |jO                  dn«      xs d«      › do�«       ŒØ y c c}w c c}w )pNz--folderT)Úrequiredz--prefixz	--captionz--judulr   )Údefaultz--topikz3Seri Properti & Manufaktur: SEO & Digital Marketingz--harir   )ÚtyperO   z--goÚ
store_true)Úactionzutf-8)ÚencodingiÜ  u   â›” caption u    char > 1500 â€” perpendek dulué   u   ã€€u   é¿¿u   ê°€u   íž¯u!   â›” caption memuat karakter CJK: é   z=== 1. JPEG q85 ===é   Ú_Ú02dz.pngz.jpgr&   )r#   iF  ú ÚJPEGéU   )r,   Úoptimizez   z.jpg i   z KBz=== 2. gate 200 dua ingress ===u      â›” ABORT:u'      10/10 media 200 di KEDUA ingress âœ…)Údaysr'   é   )ÚhourÚminuteÚsecondÚmicrosecondé(   z%Y-%m-%dT%H:%M:%S.000Zz=== 3. cek slot (idempoten) ===éd   )ÚpageÚlimitÚdocsÚdataÚ	accountIdÚ
scheduleAté   Ú_idrP   Ústatusz   slot z%d %b %H:%Mz WIB:u
   kosong âœ…z   SKIP: slot terisi.u   Carousel IG SS â€” Úalbumr   ÚimagezSlide )r   rP   ÚaltÚisShareToFeed)	ri   ÚtitleÚtopicrP   ÚdescriptionÚmediasrj   ÚrepliesÚadditionalInfozStory IG SS mirror Ústoryz_01.jpgzSlide 1)ri   rr   rs   rP   rt   ru   rj   rv   u   
(dry run â€” caption z char | pakai --go)ru   r   ú/éÿÿÿÿu      â›” ABORT (media story):z   media story u    200 di KEDUA ingress âœ…z=== 4. create album + story ===z/public/scheduleÚ
scheduleIdÚidz	   album=z @ z WIB | story=z WIBz === 5. verifikasi baca balik ===z/public/schedule/z	: status=z type=z at=z media=z akun=ÚaccountÚnamez	 caption=rt   z char)2ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsr4   ÚcaptionÚreadr   ÚlenrC   ÚsysÚexitr.   r/   r0   ÚWSÚfolderÚrangeÚprefixr1   r   r5   r6   rB   r3   r!   r   ÚnowÚWIBr   ÚhariÚreplaceÚ
astimezoner   ÚutcÚstrftimer   Úget_schedulesÚgetÚ	ACC_IG_SSÚ
startswithÚappendÚjudulÚtopikr	   rL   ÚgoÚsplitÚpost) ÚapÚar„   ÚchÚcjkÚsrc_dirÚirD   rF   rG   ÚokÚpesanÚsekarangÚtayangrx   Úat_utcÚ	story_utcÚcÚterpakaire   Úrrg   Údrn   ÚstoriÚ
nama_storyÚr1Úsid1Úr2Úsid2ÚlabelÚsid_s                                    r    Úmainr¶   I   s]  € Ü	×	 Ñ	 Ó	"€BØ‡O�O�J¨€OÔ.Ø‡O�O�J¨€OÔ.Ø‡O�O�K¨$€OÔ/Ø‡O�O�I r€OÔ*Ø‡O�O�IÐ'\€OÔ]Ø‡O�O�H¤3°€OÔ2Ø‡O�O�F <€OÔ0Ø
�‰‹€Aä�1—9‘9 wÔ/×4Ñ4Ó6×<Ñ<Ó>€GÜ
ˆ7ƒ|�dÒÜ�œS ›\˜NÐ*IÐJÔKÌSÏXÉXÐVWÌ[ØÖ
\�" 8¨rÔ#=°XÔ#=ÀÈRÔA[ÐS[ÖA[Š2Ð
\€CÐ
\Ù
ÜÐ1°#°b°q°'°Ð;Ô<¼c¿h¹hÀq¼kä�g‰g�l‰lœ2˜qŸx™xÓ(€GÜ	Ð
Ô Ü�1�b‹\ó LˆÜ�g‰g�l‰l˜7 q§x¡x j°°!°C°¸Ð$=Ó>ˆÜ�g‰g�l‰lœ7 q§x¡x j°°!°C°¸Ð$=Ó>ˆÜ�Z‰Z˜‹_×$Ñ$ UÓ+ˆØ�w‰w˜,Ò&Ð:¨3¨%¨q°·±°	Ð(:Ó:Ð&Ø
�‰��V R°$ˆÔ7Ü��A—H‘H�:˜Q˜q ˜g U¬2¯7©7¯?©?¸3Ó+?ÀÑ+EÐ*FÀcÐJÖKðLô 
Ð
+Ô,Ü�1�b‹\ò 7ˆÜ 1§8¡8 *¨A¨a°¨W°DÐ 9Ó:‰	ˆˆEÚÜ�/ 5Ô)¬3¯8©8°A­;ð7ô 
Ð
3Ô4ä�|‰|œCÓ ¤9°!·&±&Ô#9Ñ9€HØ×Ñ 1¨R¸ÀqÐÓI€FØ×Ñ !¨B°qÀaÐÓH€EØ×ÑœxŸ|™|Ó,×5Ñ5Ð6NÓO€FØ× Ñ ¤§¡Ó.×7Ñ7Ð8PÓQ€Iä‹€AÜ	Ð
+Ô,Ø€HØ€DØ
Ø�O‰O ¨SˆOÓ1ˆØ�u‰u�V‹}Ò3 §¡ f£Ò3°ˆÙØØò 	PˆAØ�u‰u�[Ó!¤YÓ.°A·E±E¸,Ó4GÒ4MÈ2×3YÑ3YÐZ`ÐadÐbdÐZeÕ3fØ—‘ §¡ u£¨q¯u©u°V«}¸a¿e¹eÀH»oÐ NÕOð	Pô ˆt‹9�sŠ?ØØ�‰	ˆð ô 
ˆH�V—_‘_ ]Ó3Ð4°EÐ
:É¹HÐVbÔcÙÜÐ%Ô&¨ô ¨¯©Ò)TÐ6IÈ!Ï(É(ÈÐ4TØ—‘ '¸'äCHÈÈBÃ<öQØ>?ô +˜^¨>¸!¿(¹(¸À1ÀQÀsÀGÈ4ÐPØ#¨f°Q°C¨Ló:ò Qà¨ÀÐQUÐ?Vñ€Eô Ð+>¸q¿x¹x¸jÐ)IØ—‘ '¸"Ü*˜^¨>¼,È!Ï(É(ÈÐSZÐG[Ó:\Ð9]Ð^Ø#¨Iñ7ð 8à¨Bñ€Eð �4Š4ÜÐ'¬¨G« ~Ð5HÐIÔJÜˆgŒØà�x‘ Ñ# EÑ*×0Ñ0°Ó5°bÑ9€JÜ˜JÓ'�I€BˆÙÜÐ+¨UÔ3´S·X±X¸a´[Ü	ˆO˜J˜<Ð'@Ð
AÔBä	Ð
+Ô,Ø	
�‰Ð" EÓ	*€BØ�6‰6�,ÓÒ@ 2§6¡6¨%£=Ò@°B·F±F¸4³L€DØ	
�‰Ð" EÓ	*€BØ�6‰6�,ÓÒ@ 2§6¡6¨%£=Ò@°B·F±F¸4³L€DÜ	ˆI�d�V˜3˜vŸ™¨}Ó=Ð>¸mÈDÈ6ÐQTÐUZ×UcÑUcÐdqÓUrÐTsÐswÐ
xÔyÜ	Ð
,Ô-Ø  $˜¨'°4¨Ð9ò A‰ˆˆtØ�E‰EÐ% d VÐ,Ó-ˆØ�E‰E�&‹MÒ˜QˆÜ��E�7˜) A§E¡E¨(£OÐ#4°F¸1¿5¹5À»=¸/ÈÈaÏeÉeÐT`ÓNaÐMbð cÜ˜1Ÿ5™5 ›?Ò0¨bÓ1Ð2°&¸!¿%¹%À	Ó:JÒ:PÈb×9UÑ9UÐV\Ó9]Ð8^ð _Ü˜QŸU™U =Ó1Ò7°RÓ8Ð9¸ð@õ 	AñAùò] ]ùòbQs   Ä!`Ä?`Õ(`Ú__main__zReplizError:rT   )Ú__doc__r   r.   r   r‡   r   r   r   ÚPILr   Úrepliz_clientr   r   r	   rŽ   r‰   r/   r0   r1   r–   r   r   r!   r7   r8   rL   r¶   Ú__name__ÚerC   rˆ   © r"   r    ú<module>r¾      sÄ   ðñ	ó Û 	Û Û 
ß 2Ñ 2å ß ?Ñ ?á‰y˜qÔ!Ó"€Ø6€Ø
�'‰'�,‰,�r˜>Ó
*€Ø&€	ØÐ-Ð
.€Ø'€òð 
�€€Bòò:aAðH ˆzÒð.Ù�ð øð ò .Ùˆn˜aÔ  ( #§(¡(¨1§+¡+ûð.ús   Á6A? Á?B)ÂB$Â$B)