
    G[j                         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 dZ ej        dej	                  Z
g dZddgZd Zd	 Zed
k    r e             dS dS )    N)Pathgacmai_20260718_091744u5   [0-9A-Za-zÀ-ỹĐđ]+(?:[-'][0-9A-Za-zÀ-ỹĐđ]+)*)u   \bphần\s+\d+\bu   \bchương\s+\d+\bz#+\sz\bbeat\bz\bscaffold\bz\bplaceholder\bu!   \blớp thứ (?:nhất|hai|ba)\buj   bãi bồi|thủy lợi|nguồn nước|kiến trúc|trùng tu|bệnh viện|y khoa|dầu khí|xăng dầuuG   radio|băng ghi âm|cassette|ca khúc|bài hát|siêu nhiên|livestreamc                 v    t          j        dd|                                                                           S )Nz\s+ )resubstriplower)ss    c/data/video-pipeline/GacMaiAudio/project/gacmai_20260718_091744/artifacts/scripts/validate_story.pynormr      s'    26&QWWYY__%6%6777    c                  
   t          t          j                  dk    rt          d          t	          t          j        d                   } |                                 }t          j        |          }t          j        d         }t          j        d         }g }|                    d          t          k    r|
                    d           |                    d          |k    r|
                    d           |                    d          |k    r|
                    d	           |                    d
g           }t          |          dk    r|
                    d           g }t          |d          D ]%\  }}	|	                    d          |k    r|
                    d|            |	                    dg           }
t          |
          dk    r|
                    d|            t          |
d          D ]\  }}|                    d          |dz
  dz  |z   k    r|
                    d| d|            |                    dd                                          }|s|
                    d| d|            |
                    |           't          |          dk    r|
                    d           t          d |D                       }d|cxk    rdk    sn |
                    d|            t          j        d |D                       }d |                                D             }|r%|
                    dt          |                      d                     |          }t$          D ]:}t'          j        ||t&          j                  r|
                    d!|z              ;t,          D ]:}t'          j        ||t&          j                  r|
                    d"|z              ;|                    d#g           }t          |          d$k    s t          t/          |                    d$k    r|
                    d#           |                    d%          |vr|
                    d%           d& t          |          D             }|sd'nd(t1          |           t3          j        |                                          |t          |          t          |          |t          |          ||d)
}t9          t          j        |d*d+                     |rt          d          d S ),N   z/usage: validate_story.py FILE OUTLINE_SHA TITLE         
project_idtitlesource_outline_sha256outline_shaparts   
part_countpartzpart_number:
paragraphszparagraph_count:ordinalzordinal:.text zempty:   total_paragraphsc              3   d   K   | ]+}t          t                              |                    V  ,d S N)lenWORD_REfindall.0xs     r   	<genexpr>zmain.<locals>.<genexpr>   s6      
2
2q3wq!!""
2
2
2
2
2
2r   i6  i:  zword_count:c              3   4   K   | ]}t          |          V  d S r$   )r   r(   s     r   r+   zmain.<locals>.<genexpr>   s(      ..1tAww......r   c                 (    g | ]\  }}||d k    |S )r    )r)   kvs      r   
<listcomp>zmain.<locals>.<listcomp>   s&    ***CAa*accacccr   zexact_duplicate_paragraphs:
zmeta:zforbidden_domain:cast   sole_povc                 ^    g | ]*\  }}t          j        d |t           j                  %|dz   +S )u   (^|[.!?]\s+)(tôi|ta)\sr   )r   searchI)r)   ir*   s      r   r1   zmain.<locals>.<listcomp>+   s9    ___sq")<VWXY[Y]2^2^_qs___r   passedfailed)
statussourcesource_sha256outline_sha256r   r   
word_countexact_duplicate_countfirst_person_review_ordinalserrorsF)ensure_asciiindent)r%   sysargv
SystemExitr   
read_bytesjsonloadsgetPROJECTappend	enumerater	   sumcollectionsCounteritemsjoinFORBIDDEN_METAr   r7   r8   FORBIDDEN_DOMAINsetstrhashlibsha256	hexdigestprintdumps)prawdoutliner   rC   r   paraspir   psqiqr   wordscduppatr3   first_personouts                        r   mainrm   	   s8   MM1:&WXXXS$*S//#(1+'TWT\]^T_egi`fEE,  |!<!<!<EE'NNE&--000EE
!""G++FMM-,H,H,HuuWRJJNN6==...	%""  WR	XXfr&--(;r(;(;<<<	XXl2"WWb[[6"667771oo  dbeeIAr	"$$V]]3Gb3G3G23G3G%H%H%H	fR  4
0v}}/b//2//000<<	
 JJOOFMM"4555

2
2E
2
2
222ueFMM*?*?*?@@@.......**17799***?>CHH>>???
ii 9 9SYs48fmmGCK888 E ESYs4Dfmm,?,CDDDeeF2IIqLLCD		NNA%%fmmF&;&;&;EE*T!!&--
";";";__i..___%3xx8SVVT[TbcfTgTgTqTqTsTs  FM  VY  Z_  V`  V`  nq  rw  nx  nx  FK  dg  hk  dl  dl  LX  bh  i  itz#5222333
Ar   __main__)rJ   r   rF   rY   rQ   pathlibr   rM   compileUNICODEr&   rU   rV   r   rm   __name__r.   r   r   <module>rs      s    & & & & & & & & & & & & & & & & & & & &       
KBJWW W  W  W  AK  L  7 7 7% % %L Zr   