
    4^j!                     x   d dl mZ d dlm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Z
 ed          ZdZ ej        edz                                            d         Zedz  Zed	e z  Z ej                    d
z  Zedz  Zedz  Zd Z e             d Zd Zd Zd Z e            Zed                             d          Zed         Zed         Z ed         Z!e e!hZ" eed                   Z#d ed         $                    d          D             Z%d Z&d Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z. ej        ed$z                                            Z/ ej        ed%z                                            Z0 ej        ed&z                                            Z1e/d'         d(k    r e/d)         d*u re0d+         d,k    r
e0d)         d*u sJ  ee          e/d-         k    r ee          e1d-         k    sJ d.  e( e&d/                    D             Z2 e3e2          e"k    r e4d0 e"D                       sJ e2e          &                    d1          d2k    r4e2e!         &                    d1          d3k    r e4d4 e"D                       sJ ed5z  Z5e56                                r ej        e5                                          Z7e7d6         ej8        k    re7d7         ek    sJ  e*e7d8                   Z9 e:d9d:          D ]AZ; e-e9          Z< e.e7e<          r e=d            ej>         e?d;e;d<z                       B e@d=           e,            \  ZAZ9ZBe                                C                                D                    d>          \  ZEZFZGeFr-d? eHeE          cxk    rd@k    rn neGC                                sJ e/dA         ZIe/dB         ZJdCe9K                                L                    dDdE          dFg dGe ieGC                                eIgdHgdId2idJdGe!ieGC                                eIgdHgd3eEdKdLeJg dMdJgdNZM ejN        eMdFd*O          ZO ejP        ej8        ez   ez   e9K                                z   eIdG         z   eJdG         z    ee          z   Q                                          R                                ZSd9ej8        edPdFeSeeAK                                eMdQ          ejP        eOQ                                          R                                eIdG         eJdG         eB e            dRZ7 ee5e7            e'dSeM          \  ZTZU eedTz  eTeU e            dU           e7V                    eTdV e            dW            ee5e7            e:d9d:          D ]AZ; e-e9          Z< e.e7e<          r e=d            ej>         e?d;e;d<z                       Be7V                    dXdF e            dY            ee5e7            e@dZ          )[    )Path)ZoneInfoNzF/data/video-pipeline/HaTramAudio/project/017-Tam-Ve-Khong-Ghi-Diem-Denzrun-20260721T030911Z-51bf7fe4zscript/project-manifest.jsoncanon_sha256logzwork/schedule/z .config/ha-tram-audio/postiz.envzoutput/info.txtzoutput/final-upload.mp4c                  4   t          j        t          dz                                            } |                     d          t          j        k    s7|                     d          t          k    s|                     d          dk    rt          d          d S )Nz.ownership-lock.json
project_idrun_idownerLevyzownership guard mismatch)jsonloadsROOT	read_textgetnameRUNRuntimeError)ds    >work/schedule/run-20260721T030911Z-51bf7fe4/schedule_postiz.pyguardr      s    :t**557788EE,""aeeHoos&:&:aeeGnnf>T>T\h  jD  ]E  ]E  WE>T>T    c                      t           j                             t           j        j                                                                      dd          S )N+00:00Z)datetimenowtimezoneutc	isoformatreplace r   r   r   r      s<    (#''(9(=>>HHJJRRS[\_```r   c                    t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )read)fs   r   <lambda>zsha.<locals>.<lambda>   s    qvvk** r   r   )hashlibsha256openiterupdate	hexdigest)phbr&   s      @r   shar1      s    
>ffTll <a****3//;;a;< < < < < < < < < < < < < < <	s   ,A##A'*A'c                    t                       | j                            dd           |                     d| j        z   dz             }|                    t          j        |dd          dz              t          j	        ||            d S )	NT)parentsexist_ok.z.tmpF   )ensure_asciiindent
)
r   parentmkdir	with_namer   
write_textr   dumpsosr    )r.   r   ts      r   atomicrA      s    d+++akk#af*V:K.L.LAQ\\Z^Zdefty  BC  [D  [D  [D  EI  [I  NJ  NJ  NJ  KM  KU  VW  XY  KZ  KZ  KZ  KZ  KZr   c                     t          t          j                  } t                                                                          D ]}|                                }|r|                    d          sjd|v rf|                    dd          \  }}| 	                    |                                |                                                    d                     dD ]&}| 
                    |          st          d          '| S )N#=   z"')POSTIZ_BASE_URLPOSTIZ_API_KEYPOSTIZ_FACEBOOK_INTEGRATION_IDPOSTIZ_YOUTUBE_INTEGRATION_IDPOSTIZ_TIMEZONEPOSTIZ_SLOTSzmissing Postiz config)dictr?   environCFGr   
splitlinesstrip
startswithsplit
setdefaultr   r   )r   rawskvs        r   load_envrX      s    
MMOO&&(( E ESIIKK! Eq||C   ESAXXwws1~~31Qall17799QWWYY__U-C-CDDD Q > >Q	
q=%<====	r   rF   /rG   rH   rI   rJ   c           
          g | ]I}t          t          t          |                                                    d                               JS ):)tuplemapintrP   rR   .0xs     r   
<listcomp>rb      s      P\  P\  P\  z{  QV  WZ  [^  _`  _f  _f  _h  _h  _n  _n  or  _s  _s  Wt  Wt  Qu  Qu  P\  P\  P\r   rK   ,c                    t           j                            t          | z   t          dd          }t           j                            |d          5 }t          j        |          cd d d            S # 1 swxY w Y   d S )Napplication/json)AuthorizationAccept)headers<   timeout)urllibrequestRequestBASEKEYurlopenr   load)pathqrs      r   r   r      s    	>$t)SJ\,],]^^nQr**Caty||CCCCCCCCCCCCCCCCCCs   A44A8;A8c                 b   t           j                            t          | z   t	          j        |d                                          t          dddd          }t           j                            |d          5 }|j	        t	          j
        |          fcd d d            S # 1 swxY w Y   d S )	NFr7   re   )rf   zContent-Typerg   POST)datarh   methodx   rj   )rl   rm   rn   ro   r   r>   encoderp   rq   statusrr   )rs   payloadrt   ru   s       r   postr   "   s    	>$t)G)O)O)O)V)V)X)Xru  FX  bt  bu  bu  }C  D  DnQs++Mq18MMMMMMMMMMMMMMMMMMMs   <B$$B(+B(c                     t          | t                    r| S t          | t                    r7dD ]4}t          |                     |          t                    r
| |         c S 5g S )N)postsintegrationsry   )
isinstancelistrL   r   )rW   rV   s     r   itemsr   %   se    qaxq ,* , ,aq$+qt+
r   c                     |                      d          }t          |t                    r|                     d          n|                      d          S )NintegrationidintegrationId)r   r   rL   )r.   ra   s     r   iidr   +   sA    55j4.@.@\quuT{{{aeeOF\F\\r   c                 0   t           j                             |                     dd                    }|j        %|                    t           j        j                  }|                    t           j        j                                      d          S )Nr   r   )tzinfor   microsecond)r   fromisoformatr    r   r   r   
astimezone)rW   ra   s     r   dtr   -   so    ""199S#:#:;;Hqyy(9(=y>>Q	X&*++333BBBr   c                    t           j                            |                     t          j        j                                                                      dd          |                    t          j        j                                                                      dd          d          }t          t          d|z                       S )Nr   r   )	startDateendDatez/posts?)rl   parse	urlencoder   r   r   r   r   r    r   r   )startendrt   s      r   calendarr   1   s    	<u'7'78I8M'N'N'X'X'Z'Z'b'bcklo'p'p{~  |J  |J  KS  K\  K`  |a  |a  |k  |k  |m  |m  |u  |u  v~  B  |C  |C  D  D  E  Ec)A+r   c            	      4   t           j                             t           j        j                  } | t          j        d          z   }t          | t          j        d          z
  |          }t          t                      t          t                      i}d}|D ]}t          |          }t          |                    dd                                                    }|                    d          p|                    d	          }|t          vr|d
z  }|dv r*|r(||                             t          |                     |                     t"                    }	t%          d          D ]}
|	                                t          j        |
          z   }t)          t*                    D ]\  }}t           j                             |t          j        ||          t"                    }|                    t           j        j                                      d          }||	k    r[||t                   vrL||t                   vr=||t3          |t                             t3          |t                             |dfc c S ؐt5          d          )N   )days   minutesr   state publishDatedaterE   >   QUEUE	PUBLISHED    r   )facebook_occupied_countyoutube_occupied_countother_posts_ignoredzno common slot)r   r   r   r   	timedeltar   FBsetYTr   strr   upperTARGETaddr   r   TZranger   sortedSLOTScombinetimer    lenr   )utcnowr   r   occignoredr.   ir   rT   localnowndayr/   mlocalus                   r   choose_slotr   4   s   h/344@RXZ@[@[@[9[Sbjkqrz  sE  NO  sP  sP  sP  lP  QT  cU  cU\a  []  ^a  ^c  ^c  df  gj  gl  gl  Zm  VY  vw  nu
 @ @QFF!QUU72&&''--//5AEE-4H4H4YAEERXMMf__WaZW
####CFJJr#ww,?,?,?


B


)) { {Qmmooh(a0000#E]] { {ca			"	"3x}Qq'9'9"	=	=5@P@PQYQbQf@g@g@o@o|}@o@~@~aHnn#b'))as2w.>.>eAilmpqsmtiuiu  PS  TW  XZ  T[  P\  P\  sz  O{  O{  G{  @{  @{  @{  @{  @{{ $%%%r   c                     g }t          | t          j        d          z
  | t          j        d          z             D ]}t          |          }|                    d          p|                    d          }|t
          v r|rt          |          | k    ru|                    |                    d          p|                    d          |t          |                    dd                    	                                |d	           |S )
N
   r   r   r   r   postIdr   r   )post_idintegration_idr   r   )
r   r   r   r   r   r   r   appendr   r   )slotfoundr.   r   rT   s        r   matchesr   A   s   	
4*26666tH<NWY<Z<Z<Z7Z
[
[ H HQFF!quu]##4quuV}}3&[[S[RWWd]]<<155;;9!%%//1UXYZY^Y^_fgiYjYjUkUkUqUqUsUs  CF  G  G  H  H  Hr   c           	      *   d |D             }d |D             t                    t          k    st          |          dk    rdS t          j        t
          dz                                            }t          j        t
          dz                                            }i ddd	t          j        d
ddddddt          dddddt          d|d         d|d         d| d         d| d         dt          t                    d|d         d|d         d|d         fdt          t          fD             t                   t                   g| d         t                      d}t!          t
          dz  |           |                     d dfd!t          t          fD             t                      d"           t!          t
          d#z  |            t%          t          j        dd|d         |d$         d%d&                     dS )'Nc                 *    g | ]}|d          dk    |S )r   r   r!   r_   s     r   rb   zfinalize.<locals>.<listcomp>I   s&    111qQwZ00000r   c                      i | ]}|d          |S )r   r!   r_   s     r   
<dictcomp>zfinalize.<locals>.<dictcomp>I   s!    5\5\5\PQa8H6I!5\5\5\r   r6   Fupload.jsonpublish-ready.jsonschema_versionrE   r   gatescheduler}   	completedverifiedTr	   	scheduled	publishedsource_canon_sha256source_poster_sha256source_layout_sha256
slot_localslot_utcartifact_pathartifact_sha256video_mediathumbnail_mediac                 2    g | ]}|         d          |dS )r   )r   r   r!   r`   r   bys     r   rb   zfinalize.<locals>.<listcomp>K   sl      x	v
  x	v
  x	v
  i
j
  C
E
  F
G
  C
H
  I
R
  C
S
  b
c
  y	d
  y	d
  x	v
  x	v
  x	v
r   idempotency_key)accepted_postscalendar_verificationr   completed_atzschedule.jsonscheduled_verifiedc                 .    i | ]}||         d          S )r   r!   r   s     r   r   zfinalize.<locals>.<dictcomp>K   s^      Mr  Mr  Mr  ef  NO  PR  ST  PU  V_  P`  Mr  Mr  Mrr   )r}   r   post_idsterminal_atschedule-intent.jsonr   )r}   r   r   r   rw   )r   r   r   r   r   LOGr   r   r   r   CANONr   VIDEOr   r   r   rA   r,   printr>   )intentr   queuesuploadreadyreceiptr   s         @r   finalizer   H   s   11E1115\5\U[5\5\5\"GGVOOs6{{A~~UU
C%002233$*cJ^F^EiEiEkEk:l:lE  v`  wG  HI  v`  JV  W[  W`  v`  ag  hr  v`  s{  |G  v`  HR  SW  v`  X`  ad  v`  ep  qu  v`  vA  BG  v`  H]  ^c  v`  dz  {A  BX  {Y  v`  Zp  qw  xN  qO  v`  P\  ]c  dp  ]q  v`  r|  }C  DN  }O  v`  P_  `c  di  `j  `j  v`  k|  }C  DU  }V  v`  Wd  ek  ly  ez  v`  {L	  M	S	  T	e	  M	f	  v`  x	v
  x	v
  x	v
  x	v
  o
q
  r
t
  n
u
  x	v
  x	v
  x	v
  PR  SU  PV  WY  Z\  W]  O^  qw  xI  qJ  Z]  Z_  Z_  v`  v`  v`mt  ag  hk  l{  h{  |C  aD  aD  aD  EK  ER  ER  ]q  }A  Mr  Mr  Mr  Mr  km  np  jq  Mr  Mr  Mr  AD  AF  AF  SG  SG  EH  EH  EH  IO  PS  Tj  Pj  kq  Ir  Ir  Ir  sx  y}  yC  NY  ei  w~  K  wL  U\  ]t  Uu  Dv  Dv  DI  yJ  yJ  yJ  sK  sK  sK  SW  SWr   r   r   zmetadata.jsonr}   r   r   T	readinessr   r   c                 :    i | ]}|                     d           |S )r   )r   r_   s     r   r   r   N   s$    999aeeDkk!999r   z/integrationsc              #   Z   K   | ]&}t           |                             d           duV  'dS )disabledTNintsr   r`   r   s     r   	<genexpr>r   N   sc        [P  [P  DE[_`a[b[f[fgq[r[rz~[~  [P  [P  [P  [P  [P  [Pr   
identifierfacebookyoutubec              #   ^   K   | ](}t           |                             d           dk    V  )dS )r   u   Hạ Trâm AudioNr   r   s     r   r   r   N   s        pi  pi  ]^  qu  vw  qx  q|  q|  }C  qD  qD  FX  qX  pi  pi  pi  pi  pi  pir   r   r   r	   r   rE            z@existing schedule intent not reconciled; refusing duplicate POSTz

r6   d   r   r   r   r   r   Fr   )contentimage__type)r   valuesettingspublicno)r  titletypeselfDeclaredMadeForKids	thumbnailtags)r  r   	shortLinkr  r   )r7   	sort_keyscreatingr   )r   r   r	   r}   r   r   r   r   r   payload_sha256video_media_idthumbnail_media_idcalendar_precheck
created_atz/postszposts-response.json)http_statusresponsereceived_ataccepted)r  r}   accepted_at	ambiguous)r}   r   
updated_atzCcalendar did not verify both QUEUE records; refusing duplicate POST)Wpathlibr   zoneinfor   r   r(   r   r?   r   urllib.parserl   urllib.requestr   r   r   r   r   r   WORKhomerN   INFOr   r   r   r1   rA   rX   Erstripro   rp   r   r   r   r   rR   r   r   r   r   r   r   r   r   r   r   r   r   metar   r   allintent_pathexistsr   r   r   r   attemptr   
SystemExitsleepminr   r   scanrP   	partitionr  sepdescriptionr   videothumbr   r    r~   r>   
serializedr)   r|   r-   idemcoder  r,   r!   r   r   <module>r>     s               @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	T
RSSYxUX  AK  AE  AK  MQ  Rp  Mp  L{  L{  L}  L}  A~  A~  M  ANzJT03000idikkBd6d#ko  qB  lBfj  JN  Oh  Jh  DIE E E  ` ` `  
Z Z Z
 
 
 (**!%&--c22Tq9I7J3aPpNq2uv  xW  vXrt  ac  df  `g  Y_  ks  ks  tu  vG  tH  kI  kI  hj  P\  P\  @  AO  P  V  V  WZ  [  [  P\  P\  P\  JOD D DN N N  ] ] ]C C C     & & &  W W W
 tz3}$//1122SI]E]DhDhDjDj9k9k5q{quq{  ~A  BQ  ~Q  }\  }\  }^  }^  r_  r_lp  gm  nv  gw  yD  gD  gD  IO  PZ  I[  _c  Ic  Ic  hm  ny  hz  |C  hC  hC  HM  NX  HY  ]a  Ha  Ha  Ha  Ha  il  il  mr  is  is  u{  |M  uN  iN  iN  SV  SV  W[  S\  S\  ^b  ct  ^u  Su  Su  Su  Su99UU33#7#788999TFARARWZWZ  [P  [P  IO  [P  [P  [P  XP  XPARARAR  X\  ]_  X`  Xd  Xd  eq  Xr  Xr  t~  X~  X~  CG  HJ  CK  CO  CO  P\  C]  C]  _h  Ch  Ch  mp  mp  pi  pi  bh  pi  pi  pi  mi  mi  Ch  Ch  Ch&& X
;((**++6,3G3R3RW]^fWgilWlWlWlWlb
	a    W%XfU/**Q--/$*SSGAI|VWWWd4DNN4D4D4J4J4L4L4V4VW]4^4^3eCfi  `Ynoqtqtuzq{q{  oA  oA  oA  oA  ~A  oA  oA  oA  oA  oA  FQ  FW  FW  FY  FY  oA  oA  oA  `f  gt  `u  Z_  |B  CT  |U  v{  fp  x|  xF  xF  xH  xH  xP  xP  QY  Z]  x^  x^  kp  xz  TX  Y[  S\  q|  qB  qB  qD  qD  NS  MT  fU  fU  eV  ck  lv  bw  Dx  Dx  IM  NP  HQ  fq  fw  fw  fy  fy  CH  BI  [J  [J  ZK  aj  sx  @	H	  c	g	  t	y	  A
C
  WD
  WD
  yE
  yE
  CF
  ^G
  ^G
  V]  S
]
  S
W
  S
]
  ^
e
  s
x
  CG  S
H  S
H  S
H  H
R
  N\  NU  N\  ^b  ^g  hk  ^k  lq  ^q  rv  r@  r@  rB  rB  ^B  CH  IM  CN  ^N  OT  UY  OZ  ^Z  [^  [^  _d  [e  [e  ^e  ]m  ]m  ]o  ]o  Np  Np  Nz  Nz  N|  N|  IM  VW  ei  en  x{  EO  [`  sw  NS  af  ap  ap  ar  ar  ~E  FL  ~M  _m  _f  _m  nx  n  n  nA  nA  _B  _B  _L  _L  _N  _N  `e  fj  `k  AF  GK  AL  ae  sv  sv  sx  sx  Dy  Dy  }C  z@  z@  AL  MS  zT  zT  zT  cg  cg  hp  qx  cy  cy  Ub  UY  Zb  z@  z@  AE  F[  A[  ko  {C  RU  RU  RW  RW  \X  \X  zY  zY  zY  Z`  Zg  Zg  w{  EO  ^a  ^a  ^c  ^c  hd  hd  Ze  Ze  Ze  fl  fl  mx  y  f@  f@  f@uQr{{  Gwt}}HVE.A.CC719 u##%%HH I I I&&Q\]cJdJdJdkwkw  y~  l  l  fr   