
    `j                         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 )    )PathNzO/data/video-pipeline/HaTramAudio/project/029-Chiec-O-De-Lai-O-Tram-Xe-Buyt-Cuoizrun-20260722T162951Z-87a939ad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            	      0   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         g}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/d0d1}t          d2z  }t          ||           i |t          |          t          |          t          |          t          |          t                      d3}t          t          d4z  |           t!          t          j        dd|
|d5         d6d07                     d S )8Nz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story_familyprimary	secondaryu  Tống Vãn Nghi, sinh viên năm cuối từng bảo lưu để chăm mẹ, phát hiện danh sách lễ tốt nghiệp loại những người học chậm, chuyển ngành hoặc quay lại sau gián đoạn. Cùng Lục Minh Triết, trưởng ban tổ chức luôn tin rằng đúng giờ là công bằng, cô phải tìm cách để mỗi người được gọi đúng tên mà không biến hành trình của họ thành câu chuyện thương hạ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.jsonr\   )rL   rC   rO   r\   )r8   )r(   r   r   r   r   r#   r$   r   r   r    lenjoinr5   r<   strr   printr;   )mcanonr@   promobrief
brief_datatitlefamilyrS   rR   ytinfoipmetadatampreceipts                   r   mainrq      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#$>"6)+<VK=P*Q6 
X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<   rq   __name__r   r   r   <module>ru      s                         	T
[\\aeaj]`  pOkn  V\  PU _ _ _ < < <= = =u u u R R RL L L  Zr   