§
    ª+¿jÇ  ã                   ór  — 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                             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¦   «          dS # e$ r'Z ede¦  «          ej        d¦  «         Y dZ[dS dZ[ww xY wdS )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                             ¦   «         }|dk    rd| › d|› d|› �fc S ŒZdS )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Ð
/Ð
/¨Ð
/Ð
/€CÝð 5ð 5ˆÝŒ~˜v t¨T°;ÀÀnÐVbÐdhØ*­tÐ,>Ð,>¸"Ð,>Ð,>ÀðEà-1¸ð>ñ >ô >ä>DÇUÂUÁWÄWð 	ð �5Š=ˆ=Ø˜TÐ4Ð4 RÐ4Ð4¨dÐ4Ð4Ð4Ð4Ð4Ð4ð àˆ8ó    )é8  i€  c           	      ó@  — t           j                             t          | ¦  «        }t           j                             |¦  «        sdS d| › �}t           j                             t          |¦  «        }t           j                             |¦  «        r$t           j                             |¦  «        dk    �sjt          j        |¦  «                             d¦  «        }|j	        t          t          fk    r| S |                     d¦  «        }t          |¦  «        dk    rd}t          t          |j        z  t          |j        z  ¦  «        }|                     t#          |j        |z  ¦  «        t#          |j        |z  ¦  «        ft          j        ¦  «        }t          j        dt          t          f|¦  «        }|                     |t          |j        z
  dz  t          |j        z
  dz  f¦  «         |                     |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�>Š>˜#ÑÔð ØˆtØ$˜dÐ$Ð$€DÝ
Œ'�,Š,•w Ñ
%Ô
%€CÝŒG�NŠN˜3ÑÔð ?¥B¤G§O¢O°CÑ$8Ô$8¸4Ò$?Ñ$?ÝŒZ˜‰_Œ_×$Ò$ UÑ+Ô+ˆØŒ7•r�2�hÒÐØˆKØ�[Š[˜Ñ Ô ˆÝˆr‰7Œ7�cŠ>ˆ>Ø ˆBÝ•B˜œ‘M¥2¨¬	¡>Ñ2Ô2ˆØ—	’	�5 ¤¨EÑ!1Ñ2Ô2µE¸"¼)ÀeÑ:KÑ4LÔ4LÐMÍuÌ}Ñ]Ô]ˆÝŒi˜¥¥B˜x¨Ñ,Ô,ˆØ�	Š	�%�2 ¤Ñ+°Ñ1µB¸¼Ñ4EÈ!Ñ3KÐLÑMÔMÐMØ�Š�˜bˆÑ!Ô!Ð!ÝÐ= $Ð=Ð=¨TÐ=Ð=¸Ð=Ð=Ð=Ñ>Ô>Ð>Ø€Kr"   c                  ót  ‡— t          j        ¦   «         } |                      dd¬¦  «         |                      dd¬¦  «         |                      dd¬¦  «         |                      dd¬¦  «         |                      d	d
¬¦  «         |                      dt          d¬¦  «         |                      dd¬¦  «         |                      ¦   «         Št          ‰j        d¬¦  «                             ¦   «                              ¦   «         }t          |¦  «        dk    r4t          dt          |¦  «        › d�¦  «         t          j        d¦  «         d„ |D ¦   «         }|r.t          d|d d…         › �¦  «         t          j        d¦  «         t          j                             t           ‰j        ¦  «        }t          d¦  «         t%          dd¦  «        D ]ý}t          j                             |‰j        › d|d›d�¦  «        }t          j                             t(          ‰j        › d|d›d�¦  «        }t+          j        |¦  «                             d ¦  «        }|j        d!k    sJ |› d"|j        › �¦   «         ‚|                     |d#d$d¬%¦  «         t          d&‰j        › d|d›d't          j                             |¦  «        d(z  › d)�¦  «         Œþt          d*¦  «         t%          dd¦  «        D ]F}t5          ‰j        › d|d›d�¦  «        \  }}	|s$t          d+|	¦  «         t          j        d¦  «         ŒGt          d,¦  «         t7          j        t:          ¦  «        t=          ‰j        ¬-¦  «        z   }
|
                      d.d/dd¬0¦  «        }|
                      d.d1dd¬0¦  «        }| !                    tD          j#        ¦  «         $                    d2¦  «        }| !                    tD          j#        ¦  «         $                    d2¦  «        }tK          ¦   «         }t          d3¦  «         g }d}	 | &                    |d4¬5¦  «        }| '                    d6¦  «        p| '                    d7¦  «        pg }|snÁ|D ]£}| '                    d8¦  «        tP          k    rƒ| '                    d9¦  «        pd )                    |d d:…         ¦  «        rQ| *                    | '                    d;¦  «        | '                    d<¦  «        | '                    d=¦  «        f¦  «         Œ¤t          |¦  «        d4k     rn|dz  }�Œt          d>| $                    d?¦  «        › d@�|r|ndA¦  «         |rt          dB¦  «         d S tP          ‰j+        p	dC‰j        › �‰j,        dD|ˆfdE„t%          dd¦  «        D ¦   «         |g dFdidGœ	}tP          dH‰j        › �‰j,        dIdtZ          › dJt]          ‰j        › dK�¦  «        › �dLdMdNœg|g dOœ}‰j/        s1t          dPt          |¦  «        › dQ�¦  «         t          |¦  «         d S |dR         d         dS          0                    dT¦  «        dU         }t5          |¦  «        \  }}	|s$t          dV|	¦  «         t          j        d¦  «         t          dW|› dX�¦  «         t          dY¦  «         | 1                    dZ|¦  «        }| '                    d[¦  «        p)| '                    d;¦  «        p| '                    d\¦  «        }| 1                    dZ|¦  «        }| '                    d[¦  «        p)| '                    d;¦  «        p| '                    d\¦  «        }t          d]|› d^| $                    d?¦  «        › d_|› d^| $                    d?¦  «        › d`�	¦  «         t          da¦  «         dD|fdI|ffD ]þ\  }}| '                    db|› �¦  «        }| '                    d7¦  «        p|}t          d&|› dc| '                    d=¦  «        › dd| '                    d<¦  «        › de| '                    d9¦  «        › dft          | '                    dR¦  «        pg ¦  «        › dg| '                    dh¦  «        pi  '                    di¦  «        › djt          | '                    dk¦  «        pd¦  «        › dl�¦  «         Œÿd S )mNz--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é   c                 óP   — g | ]#}d |cxk    rdk    sn d|cxk    rdk    ¯n n|‘Œ$S )u   ã€€u   é¿¿u   ê°€u   íž¯© )Ú.0Úchs     r    ú
<listcomp>zmain.<locals>.<listcomp>W   sX   € Ð
\Ð
\Ð
\�" 8¨rÐ#=Ð#=Ò#=Ð#=°XÒ#=Ð#=Ð#=Ð#=ÀÈRÐA[ÐA[ÒA[ÐA[ÐS[ÒA[ÐA[ÐA[ÐA[ÐA[ˆ2ÐA[ÐA[ÐA[r"   u!   â›” caption memuat karakter CJK: é   z=== 1. JPEG q85 ===é   Ú_Ú02dz.pngú.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 â€” Úalbumc                 óJ   •— g | ]}t           › d ‰j        › d|d›d�dd|› �dœ‘Œ S )r   r\   r]   r^   ÚimagezSlide ©r   rP   Úalt)r	   Úprefix)rW   ÚiÚas     €r    rY   zmain.<locals>.<listcomp>ˆ   sb   ø€ ð Qð Qð QØ>?õ +ÐPÐP¸!¼(ÐPÐPÀQÐPÐPÐPÐPØ#¨L°Q¨L¨Lð:ð :ð Qð Qð Qr"   ÚisShareToFeed)	ro   ÚtitleÚtopicrP   ÚdescriptionÚmediasrp   ÚrepliesÚadditionalInfozStory IG SS mirror Ústoryr   z_01.jpgrv   zSlide 1rw   )ro   r}   r~   rP   r   r€   rp   r�   u   
(dry run â€” caption z char | pakai --go)r€   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=r   z char)2ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsr4   ÚcaptionÚreadr   ÚlenrC   ÚsysÚexitr.   r/   r0   ÚWSÚfolderÚrangery   r1   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)Úapr�   ÚcjkÚsrc_dirrz   rD   rF   rG   ÚokÚpesanÚsekarangÚtayangrƒ   Úat_utcÚ	story_utcÚcÚterpakairk   Úrrm   Údrt   ÚstoriÚ
nama_storyÚr1Úsid1Úr2Úsid2ÚlabelÚsid_r{   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Ô2Ð2Ø‡O‚O�F <€OÑ0Ô0Ð0Ø
�Š‰Œ€Aå�1”9 wÐ/Ñ/Ô/×4Ò4Ñ6Ô6×<Ò<Ñ>Ô>€GÝ
ˆ7�|„|�dÒÐÝÐJ�S ™\œ\ÐJÐJÐJÑKÔKÐKÍSÌXÐVWÉ[Ì[È[Ø
\Ð
\˜Ð
\Ñ
\Ô
\€CØ
ð JÝÐ;°#°b°q°b´'Ð;Ð;Ñ<Ô<Ð<½c¼hÀq¹k¼k¸kåŒg�lŠl�2˜qœxÑ(Ô(€GÝ	Ð
Ñ Ô Ð Ý�1�b‰\Œ\ð Lð LˆÝŒg�lŠl˜7 q¤xÐ$=Ð$=°!Ð$=Ð$=Ð$=Ð$=Ñ>Ô>ˆÝŒg�lŠl�7 q¤xÐ$=Ð$=°!Ð$=Ð$=Ð$=Ð$=Ñ>Ô>ˆÝŒZ˜‰_Œ_×$Ò$ UÑ+Ô+ˆØŒw˜,Ò&Ð&Ð&¨3Ð(:Ð(:°´Ð(:Ð(:Ñ&Ô&Ð&Ø
�Š��V R°$ˆÑ7Ô7Ð7ÝÐJ�A”HÐJÐJ˜qÐJÐJÐJ­2¬7¯?ª?¸3Ñ+?Ô+?ÀÑ+EÐJÐJÐJÑKÔKÐKÐKå	Ð
+Ñ,Ô,Ð,Ý�1�b‰\Œ\ð 7ð 7ˆÝ 1¤8Ð 9Ð 9¨aÐ 9Ð 9Ð 9Ð 9Ñ:Ô:‰	ˆˆEØð 	7Ý�/ 5Ñ)Ô)Ð)­3¬8°A©;¬;¨;øÝ	Ð
3Ñ4Ô4Ð4åŒ|�CÑ Ô ¥9°!´&Ð#9Ñ#9Ô#9Ñ9€HØ×Ò 1¨R¸ÀqÐÑIÔI€FØ×Ò !¨B°qÀaÐÑHÔH€EØ×Ò�xœ|Ñ,Ô,×5Ò5Ð6NÑOÔO€FØ× Ò ¥¤Ñ.Ô.×7Ò7Ð8PÑQÔQ€Iå‰Œ€AÝ	Ð
+Ñ,Ô,Ð,Ø€HØ€Dð
Ø�OŠO ¨SˆOÑ1Ô1ˆØ�uŠu�V‰}Œ}Ð3 §¢ f¡¤Ð3°ˆØð 	ØØð 	Pð 	PˆAØ�uŠu�[Ñ!Ô!¥YÒ.Ð.°A·E²E¸,Ñ4GÔ4GÐ4MÈ2×3YÒ3YÐZ`ÐadÐbdÐadÔZeÑ3fÔ3fÐ.Ø—’ §¢ u¡¤¨q¯uªu°V©}¬}¸a¿eºeÀH¹o¼oÐ NÑOÔOÐOøÝˆt‰9Œ9�sŠ?ˆ?ØØ�‰	ˆñ
õ 
Ð
:�V—_’_ ]Ñ3Ô3Ð
:Ð
:Ð
:ÈÐ<b¸H¸HÐVbÑcÔcÐcØð /ÝÐ%Ñ&Ô&Ð&¨¨õ ¨¬Ð)TÐ4TÈ!Ì(Ð4TÐ4TØ” '¸'ðQð Qð Qð QÝCHÈÈBÁ<Ä<ðQñ Qô Qà¨ÀÐQUÐ?Vðð €Eõ Ð)I¸q¼xÐ)IÐ)IØ” '¸"Ý*Ð^Ð^½,È!Ì(ÐG[ÐG[ÐG[Ñ:\Ô:\Ð^Ð^Ø#¨Ið7ð 7ð 8à¨Bðð €Eð Œ4ð ÝÐI­¨G©¬ÐIÐIÐIÑJÔJÐJÝˆg‰ŒˆØˆà�x” Ô# EÔ*×0Ò0°Ñ5Ô5°bÔ9€JÝ˜JÑ'Ô'�I€BˆØð AÝÐ+¨UÑ3Ô3Ð3µS´X¸a±[´[°[Ý	Ð
A˜JÐ
AÐ
AÐ
AÑBÔBÐBå	Ð
+Ñ,Ô,Ð,Ø	
�ŠÐ" EÑ	*Ô	*€BØ�6Š6�,ÑÔÐ@ 2§6¢6¨%¡=¤=Ð@°B·F²F¸4±L´L€DØ	
�ŠÐ" EÑ	*Ô	*€BØ�6Š6�,ÑÔÐ@ 2§6¢6¨%¡=¤=Ð@°B·F²F¸4±L´L€DÝ	Ð
x�dÐ
xÐ
x˜vŸš¨}Ñ=Ô=Ð
xÐ
xÈDÐ
xÐ
xÐUZ×UcÒUcÐdqÑUrÔUrÐ
xÐ
xÐ
xÑyÔyÐyÝ	Ð
,Ñ-Ô-Ð-Ø  $˜¨'°4¨Ð9ð Að A‰ˆˆtØ�EŠEÐ, dÐ,Ð,Ñ-Ô-ˆØ�EŠE�&‰MŒMÐ˜QˆÝð @�Eð @ð @ A§E¢E¨(¡O¤Oð @ð @¸1¿5º5À¹=¼=ð @ð @ÈaÏeÊeÐT`ÑNaÔNað @ð @Ý˜1Ÿ5š5 ™?œ?Ð0¨bÑ1Ô1ð@ð @Ø:;¿%º%À	Ñ:JÔ:JÐ:PÈb×9UÒ9UÐV\Ñ9]Ô9]ð@ð @å˜QŸUšU =Ñ1Ô1Ð7°RÑ8Ô8ð@ð @ð @ñ 	Aô 	Að 	Að 	AðAð Ar"   Ú__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“   rV   r"   r    ú<module>rÄ      s„  ðð	ð 	ð €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à€hˆyˆy˜qÐ!Ñ!Ô!Ñ"Ô"€Ø6€Ø
Œ'�,Š,�r˜>Ñ
*Ô
*€Ø&€	ØÐ-Ð
.€Ø'€ðð ð ð 
�€€Bðð ð ð:aAð aAð aAðH ˆzÒÐð.Øˆ‰ŒˆˆˆøØð .ð .ð .Øˆˆn˜aÑ Ô Ð  ( #¤(¨1¡+¤+ + + + + + + +øøøøð.øøøð Ðs   Á<
B ÂB4ÂB/Â/B4