
    J_jr$                        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              ej        edz                                            Ze                    di                               d          dk    r ed          e                    di                               dg           D ]=Ze                    di                               e          dk    r edez             > ej        edz                                            Zej                            ed                             dd                    Ze                    d          dk    sZe                    d          ek    sAe                    d          dk    s(eej                             ej!        j"                  k    r ed          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- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7 ej        ed5z                                            Z8 ej        ed6z                                            Z9 ej        ed7z                                            Z:e8d         dk    r e8d8         d9u re9d:         d;k    r
e9d8         d9u sJ  e#e          e8d<         k    r e#e          e:d<         k    sJ d=  e1 ed>                    D             Z; e<e;          e,k    r e=d? e,D                       sJ e;e*                             d@          dAk    r4e;e+                             d@          dBk    r e=dC e,D                       sJ edDz  Z>e>?                                r ej        e>                                          Z@e@dE         ejA        k    re@d         ek    sJ  e3e@dF                   ZB eCdGdH          D ]AZD e6eB          ZE e7e@eE          r eFd            ejG         eHdIeDdJz                       B edK           e5            \  ZIZBZJe                                K                                L                    dL          \  ZMZNZOeNr-dM ePeM          cxk    rdNk    rn neOK                                sJ e8dO         ZQe8dP         ZRdeBS                                                    dd          dQg dRe*ieOK                                eQgdSgdTdAidUdRe+ieOK                                eQgdSgdBeMdVdWeRg dXdUgdYZT ejU        eTdQd9Z          ZV ejW        ejA        ez   ez   eBS                                z   eQdR         z   eRdR         z    e#e          z   X                                          Y                                ZZdGejA        ed[dQeZeeIS                                eTd\          ejW        eVX                                          Y                                eQdR         eRdR         eJ e             d]Z@ e$e>e@            e0d^eT          \  Z[Z\ e$ed_z  e[e\ e             d`           e@]                    e[da e             db            e$e>e@            eCdGdH          D ]AZD e6eB          ZE e7e@eE          r eFd            ejG         eHdIeDdJz                       Be@]                    dcdQ e             dd            e$e>e@            ede          )f    )Path)ZoneInfoNzH/data/video-pipeline/HaTramAudio/project/019-Buc-Tuong-Giua-Hai-Ban-Congzrun-20260721T065616Z-a7dbad2fz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    /data/video-pipeline/HaTramAudio/project/019-Buc-Tuong-Giua-Hai-Ban-Cong/work/schedule/run-20260721T065616Z-a7dbad2f/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    stepsschedulependingzschedule gate is not pendingdependencies	completedz schedule dependency incomplete: z script/gate-leases/schedule.json
expires_atZ+00:00statusactiver	   r
   r   zactive schedule lease requiredc                      t           j                             t           j        j                                                                      dd          S )Nr   r   )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   shar9      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(   )r6   r   ts      r   atomicrI      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)dictrG   environCFGr   
splitlinesstrip
startswithsplit
setdefaultr   r   )r   rawskvs        r   load_envr`      s    
MMOO&&(( E ESIIKK! Eq||C   ESAXXwws1~~31Qall17799QWWYY__U-C-CDDD Q > >Q	
q=%<====	r   rN   /rO   rP   rQ   rR   c           
          g | ]I}t          t          t          |                                                    d                               JS ):)tuplemapintrX   rZ   .0xs     r   
<listcomp>rj   %   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   rS   ,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r?   rm   )rn   zContent-Typero   POST)datarp   methodx   rr   )rt   ru   rv   rw   r   rF   encoderx   ry   r    rz   )r{   payloadr|   r}   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integrationsr   )
isinstancelistrT   r   )r_   r^   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   rT   )r6   ri   s     r   iidr   2   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)r_   ri   s     r   dtr   4   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?)rt   parse	urlencoder   r#   r%   r&   r'   r(   r   r   )startendr|   s      r   calendarr   8   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daterM   >   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ignoredr6   ir   r\   localnowndayr7   mlocalus                   r   choose_slotr   ;   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foundr6   r   r\   s        r   matchesr   H   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)   rg   s     r   rj   zfinalize.<locals>.<listcomp>P   s&    111qQwZ00000r   c                      i | ]}|d          |S )r   r)   rg   s     r   
<dictcomp>zfinalize.<locals>.<dictcomp>P   s!    5\5\5\PQa8H6I!5\5\5\r   r>   Fupload.jsonpublish-ready.jsonschema_versionrM   r   gater   r    r   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)   rh   r   bys     r   rj   zfinalize.<locals>.<listcomp>R   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>R   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   r   )r   r   r   r   r   LOGr   r   r   r   CANONr   VIDEOr   r   r$   rI   r4   printrF   )intentr   queuesuploadreadyreceiptr   s         @r   finalizer   O   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   T	readinessr   r   c                 :    i | ]}|                     d           |S )r   )r   rg   s     r   r   r   U   s$    999aeeDkk!999r   z/integrationsc              #   Z   K   | ]&}t           |                             d           duV  'dS )disabledTNintsr   rh   r   s     r   	<genexpr>r  U   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  U   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   rM            z@existing schedule intent not reconciled; refusing duplicate POSTz

r>   d   r   r   Fr   )contentimage__type)r   valuesettingspublicno)r  titletypeselfDeclaredMadeForKids	thumbnailtags)r  r   	shortLinkr  r   )r?   	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)^pathlibr   zoneinfor   r#   r0   r   rG   r   urllib.parsert   urllib.requestr   r   r   r   r   r   WORKhomerV   INFOr   r   manifestr   r   depleaser   r(   expiresr$   r%   r&   r9   rI   r`   Erstriprw   rx   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r   metar  r   allintent_pathexistsr   r   r   r   attemptr   
SystemExitsleepminr   scanrX   	partitionr  sepdescriptionr   videothumbr'   r   rF   
serializedr1   r   r5   idemcoder#  r4   r)   r   r   <module>rG     s               @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	T
TUU[zWZ  CM  CG  CM  OS  Tr  Or  N}  N}  N  N  C@  C@  AO  CP  }BJT03000idikkBd6d#ko  qB  lBfj  JN  Oh  Jh  DIE E E 	T88CCEE	F	F<<
++Y66llKi>j>j8j<<r**..z"== o oCLL  %%{22,,GijmGm:n:n4n2dj$99DDFFGG''l(;(C(CC(Q(QRR99X  EIIh$7$7$<$<		'@R@RTZ@Z@Z^egogxg|g|  ~F  ~O  ~S  hT  hT  _T  _T  \h  \h  iI  \J  \J  VJ ` ` `  
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   