
    \j              
         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mZ  ee	          
                                j        d         Zedz  Zdd
ZddZddZddZedk    rw	  ej         e                       dS # e$ rTZ e ej        dd ee          j         de dd          ej                    ej        d           Y dZ[dS dZ[ww xY wdS )     )annotationsN)Path   zscript/project-manifest.jsonpathr   returnstrc                   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)handles   script/build-metadata.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)r   digestchunkr   s      @r   r   r      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'manifestdictkeyc                   |                      d          pi                      |          }t          |t                    r|st          d| d          t	          |          }|                                s
t          |z  }	 |                                                    t                                                     n%# t          $ r}t          d|           |d }~ww xY w|S )Nactive_pathszactive_paths.z is missingzactive path escapes project: )
get
isinstancer   RuntimeErrorr   is_absoluteROOTresolverelative_to
ValueError)r   r   valuer   excs        r   resolve_activer(      s    \\.))/R44S99EeS!! = =;3;;;<<<;;D d{K""4<<>>2222 K K K@3@@AAsJKKs   >C 
C$CC$databytesNonec                   | j                             dd           t          j        d| j         d| j                   \  }}	 t          j        |d          5 }|                    |           |                                 t          j	        |
                                           d d d            n# 1 swxY w Y   t          j        ||            t
          j                            |          rt          j        |           d S d S # t
          j                            |          rt          j        |           w w xY w)NT)parentsexist_ok.)prefixdirwb)parentmkdirtempfilemkstempnameosfdopenwriteflushfsyncfilenoreplacer   existsunlink)r   r)   fdr7   r   s        r   atomic_writerB   %   sX   KdT222'749'7'7'7T[IIIHBYr4   	&FLLLLNNNHV]]__%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	
47>>$ 	IdOOOOO	 	27>>$ 	IdOOOO	s1   D AB6*D 6B::D =B:>D 6Eintc                 R   t          j        t                              d                    } t	          | d          }t	          | d          }t	          | d          }t	          | d          }|                                s|                                rt          d          t          j        |                    d                    }t          j        |                    d                    }|                     d          }|                    d	          d
k    s|                    d          durt          d          |                    d          |k    s|                    d          |k    rt          d          dt          |          	                                 d}dt          |          cxk    rdk    s!n t          dt          |                     d}	| d| d|	 d| d}
|
                    d          }t          ||           d
d|d         t          |          t          |          dt          |          t          |          t          |          t          |          t          |          |t          |          |dg dd}t          |t          j        |dd          d z                       d                     t          t          j        d
dt          |          |d!         t          |          d"d#                     d$S )%Nzutf-8)encodingpromotion_receiptstory_briefmetadatametadata_receiptzImetadata production output already exists and requires audit/invalidationstory_titlestatus	completedverifiedTz#promotion is absent or not verifiedcanonical_titlezcanonical title drift detectedu   Truyện Audio | u    (Full) | Gác Mái Audio   d   zYouTube title length invalid: u  Tống Vãn Ninh là chuyên gia phục chế vải cổ tại thành phố Lâm Giang. Khi một chiếc áo cưới lụa ngà vô danh được gửi đến bảo tàng giữa mùa mưa, cô phát hiện dưới lớp lót có những mũi chỉ gợi lại người mẹ đã mất. Để bảo vệ hiện vật và xưởng may Túc Vũ, cô buộc phải hợp tác với kiến trúc sư Cố Trạch Xuyên - người luôn làm đúng nhưng hiếm khi giải thích. Giữa hạn triển lãm, áp lực truyền thông và những ký ức chưa từng được gọi tên, liệu họ có thể học cách nói ra điều cần giữ và trao cho nhau quyền lựa chọn?u   

Bạn đang lắng nghe u.    tại Gác Mái Audio.

Tóm tắt truyện:
u   

🎧 Tên truyện: uE  
🎙 Giọng đọc: Gác Mái Audio
📚 Thể loại: Ngôn tình đô thị, bí ẩn gia đình, chữa lành, drama nhẹ
Tình trạng: Trọn bộ

Nếu yêu thích câu chuyện, hãy đăng ký kênh và để lại cảm nhận của bạn dưới phần bình luận.

Gác Mái Audio – Lắng nghe một thế giới khác.

Nội dung được phát hành độc quyền tại Gác Mái Audio. Vui lòng không sao chép và đăng tải lại dưới bất kỳ hình thức nào.

#GacMaiAudio #TruyenAudio #NgheTruyen #TruyenHay #TruyenDemKhuya #TruyenNgonTinh
canon_sha256)r   r   )z#GacMaiAudioz#TruyenAudioz#NgheTruyenz
#TruyenHayz#TruyenDemKhuyaz#TruyenNgonTinh)rK   rM   source_canon_sha256rF   
input_pathinput_sha256output_pathartifact_sha256r*   youtube_titleyoutube_title_lengthrN   spoiler_safehashtagsF)ensure_asciiindent
rV   )rK   rM   outputr   receiptr[   r   )jsonloadsPROJECT_MANIFEST	read_textr(   r?   r    r   r   upperlenencoderB   r   dumpsprint)projectpromotion_path
brief_pathr^   receipt_path	promotionbrieftitlerW   summarycontentr)   r_   s                r   mainrs   3   sd   j)33W3EEFFG#G-@AAN77JGZ00F!'+=>>L}} h,--// hfggg
>33W3EEFFIJz++W+==>>EKK&&E}}X+--z1J1JRV1V1V@AAA}}&''500EII>O4P4PTY4Y4Y;<<<UE

(8(8(:(:UUUMM""))))c))))PC<N<NPPQQQ	N  !   
 	    G( >>'""D4(8&).&9&9VNE[E[\\*oovj7I7I6{{vf~~PSTXPYPY&M@R@R $www	 	G 
7q Q Q QTX X``ahiijjj	$*V`ghy`z  HK  LX  HY  HY  Z  Z  in  o  o  o  p  p  p1r   __main__failedFz: )rK   rM   errorr`   )file)r   r   r   r   )r   r   r   r   r   r   )r   r   r)   r*   r   r+   )r   rC   )
__future__r   r   ra   r8   sysr5   pathlibr   __file__r#   r-   r"   rc   r   r(   rB   rs   __name__exit	Exceptionr'   ri   rh   typestderr r   r   <module>r      s   " " " " " "   				 



       tH~~'*88          = = = =@ z   jdjH%TTRUYYM_JhJhcfJhJhiix}~~~  FI  FP  	Q  	Q  	Q  	Q s   %A? ?CA	CC