
    _jb                         d dl mZ d dlZd dlZd dlZd dlZ ed          Zej        ZdZ	dZ
d Zd Zd Zd	 Zd
 Zd Zedk    r e             dS dS )    )PathNzD/data/video-pipeline/HaTramAudio/project/025-Nguoi-Giu-Cho-Cuoi-Cungzrun-20260721T232244Z-a0837ee4Levyc                      t           j                             t           j        j                                                                      dd          S )Nz+00:00Z)datetimenowtimezoneutc	isoformatreplace     work/build_metadata.pyr   r      s<    "&&x'8'<==GGIIQQRZ[^__
_r   c                 r    t          j        |                                                                           S )N)hashlibsha256
read_bytes	hexdigest)ps    r   shar      s%    '.00::<<<r   c                     t          j        t          dz                                            } t          t
          t          d                                D ]0\  }}|                     |          |k    rt          d|z             1d S )Nz.ownership-lock.json)
project_idrun_idownerzownership mismatch )
jsonloadsROOT	read_textPIDRUNOWNERitemsgetRuntimeError)dkvs      r   guardr(      s~    :t**557788s599??AA = =SQqUU1XXq[[|$9!$;<<<[= =r   c                     t                       | j                            dd           |                     d| j        z   dz             }|                    |           t          j        ||            d S )NT)parentsexist_ok.z.tmp)r(   parentmkdir	with_namename
write_textosr   )r   sts      r   atomic_textr5      sm    d	3	3	3akk#af*VBS6T6TAUVUaUabcUdUdUdegeopqrsetetetetetr   c                 V    t          | t          j        |dd          dz              d S )NF   )ensure_asciiindent
)r5   r   dumps)r   r%   s     r   atomic_jsonr<      s-    [4:aU!#L#L#LT#QRRRRRr   c            	         t                       t          j        t          dz                                            } |                     d          }|                     di                               di           }|                     di                               d          dk    s0|                    d          dus|                    d          |k    rt          d	          t          j        t          d
z                                            }t          dz  }t          j        |                                          }|                    d          r4|                    d          |k    st          t          dz            |k    rt          d          |                    d          t          k    s|                    d          t          k    rt          d          |d         }|d         }d}d| d}	dt          |	          cxk    rdk    sn t          d          |	 d| dd                    |          z   dz   }
t          dz  }t          ||
           i ddd t          dt          dt          d!dddd"|d#t          |          d|d$|	d%t          |	          d&|d'|d(|d)g d*|d+d,|t          |          d-d.d/}t          d0z  }t          ||           i |t          |          t          |          t          |          t          |          t                      d1}t          t          d2z  |           t!          t          j        dd|	|d3         d4d.5                     d S )6Nzscript/project-manifest.jsoncanon_sha256gate_eventsstorysteps	completedverifiedTz#Story Gate is not committed/currentzscript/promotion-report.jsonzscript/story-brief.jsonzstory/story-canon.txtzcanon promotion invalidr   r   zstory brief identity mismatchcanonical_titlegenreu  Giang Vãn Đường phát hiện một tiệm giặt chỉ mở mười ba phút lúc bốn giờ mười bảy sáng, nơi mỗi lần sửa quá khứ đều lấy đi một ký ức chung. Khi biết mình đã ba lần xóa tình yêu với Tạ Hoài Chu để trốn hậu quả lựa chọn, cô phải quyết định có đánh đổi ký ức cuối cùng hay tự xây lại quan hệ từ hiện tại.u   Truyện Audio | u    (Full) | Hạ Trâm Audior7   d   zyoutube title length invalidz

u   

Thể loại: z, ut   

Truyện được phát độc quyền tại Hạ Trâm Audio, nghiêm cấm sao chép dưới mọi hình thức
zoutput/info.txtschema_version   source_project_idstatussource_canon_sha256source_story_brief_sha256youtube_titletitle_lengthdescriptionsummarygenrestagsthumbnail_textcopyright_lineuq   Truyện được phát độc quyền tại Hạ Trâm Audio, nghiêm cấm sao chép dưới mọi hình thức)story_canonstory_briefF)authority_sha256contains_spoiler_revealzscript/metadata.json)artifact_pathartifact_sha256metadata_json_pathmetadata_json_sha256completed_atzlog/metadata.jsonrZ   )rJ   rC   rM   rZ   )r8   )r(   r   r   r   r   r#   r$   r   r   r    lenjoinr5   r<   strr   printr;   )mcanonr@   promobrief
brief_datatitlerQ   rP   ytinfoipmetadatampreceipts                  r   mainrn      s   4:t::EEGGHHquuUcOdOduu]2""72..EE'"'""K//599Z3H3HPT3T3TX]XaXabpXqXqsxXxXx  @L  Mr  @s  @s  zsz466AACCDD4PiKiUuyu  AF  AP  AP  AR  AR  vS  vSjt		*  \>!:!:E!A!ASNeIeEfEfhmEmEm  uA  B[  u\  u\  o\NN<  #%%)A)A3)F)F\ZyMzMzGz#$Jw,?V 
k9999	3r77Cl+IJJJ	,,,,,TYYv->->>  @y  y	;r$/// A  1#  l3  xPS  T\]h  istx    zO  PU    Vq  ru  v{  r|  r|    }N  OT    Ud  eg    hv  wz  {}  w~  w~    L  MT    U^  _f    go  pv    w}  ~@    AQ  RW    Xh  i\    D  SV  W\  S]  S]  p^  p^  y~      	Bx 8 8 8  BQH  BQ]`ac]d]dwz{}w~w~  UX  Y[  U\  U\  tw  xz  t{  t{  KN  KP  KP  BQ  BQ  BQ  R]  ^b  cv  ^v  w~  R  R  R  @E  FJ  FP  [f  rv  GI  \c  du  \v  Qw  Qw  EJ  FK  FK  FK  @L  @L  @L  @L  @Lr   __main__)pathlibr   r   r   r   r2   r   r0   r   r    r!   r   r   r(   r5   r<   rn   __name__r   r   r   <module>rr      s                         	T
PQQVZV_RU  eD`c  KQ  EJ _ _ _ < < <= = =u u u R R RL L L Zr   