
    3)jM#                         d dl Z d dlZd dlZd dlZd dlmZ  ed          ZdZdZ	edz  Z
edz  Zedz  Zed	z  Zed
z  Zedz  Zedz  Zedz  ZddZddZd Zd Zd Zd Zd Zd Zedk    r e             dS dS )    N)PathzH/data/video-pipeline/Youtube-Video-Maker/Project/01062026-002-Chu-Van-Anzhttp://192.168.1.104:8018/probez%http://192.168.1.104:8018/blackdetectzoutput/final/final_video.mp4z#output/final/final_video_probe.jsonz&output/final/final_package_report.jsonz!output/final/final_qa_report.jsonzoutput/info.jsonz&output/thumbnails/thumb_16x9_final.pngz&output/thumbnails/thumb_9x16_final.pngz'logs/step19_final_qa_info_manifest.json`T  c                 ~   t           j                            | t          j        |d                                          ddid          }t           j                            ||          5 }t          j        |                                	                                          cd d d            S # 1 swxY w Y   d S )NFensure_asciizContent-Typezapplication/jsonPOST)dataheadersmethod)timeout)
urllibrequestRequestjsondumpsencodeurlopenloadsreaddecode)urlpayloadr   reqrs        $scripts_run_step_19_final_qa_info.pypostr      s    s
7(N(N(N(U(U(W(Wao  qC  aD  LR  	S  	SC			G		4	4_$*QVVXX__M^M^B_B___________________s   -8B22B69B6c                 ~    |                                  r(t          j        |                     d                    n|S )Nutf-8encoding)existsr   r   	read_text)pdefaults     r   loadr%      s2    89

O4:akk7k33444O    c                 r    t          |                     di                               d          pd          S )Nformatdurationr   )floatget)prs    r   durr-      s0    E"&&"--11*==BCCCr&   c                 b    t          fd|                     dg           D                       S )Nc              3   J   K   | ]}|                     d           k    V  dS )
codec_typeN)r+   ).0sts     r   	<genexpr>zhas.<locals>.<genexpr>   s4      OOQ!%%--q0OOOOOOr&   streams)anyr+   )r,   r3   s    `r   hasr7      s3    cOOOO"&&2:N:NOOOOOOr&   c                     t          |                                           r<t          t          t          |                               |                              ndS )Nr   )r   r!   lenlistglob)pathr;   s     r   count_filesr=      sF    T

HYHYH[H[$bCT$ZZ__T-B-B(C(C$D$D$Dabbr&   c                 P   t           dz  }|                    dd           g }| D ]\  }}|| d|ddz  }ddd	d
dddddddd|ddt           d| dg}t          j        |dd           |                    ||t          |          |                                d           |S )Nzoutput/final/final_qa_framesT)parentsexist_ok_z.1fz.jpgsshpassz-p11210119sshz-ozStrictHostKeyChecking=noz!PreferredAuthentications=passwordzPubkeyAuthentication=nozroot@192.168.1.104z+ffmpeg -y -hide_banner -loglevel error -ss z.3fz -i 'z' -frames:v 1 -q:v 2 ''x   )checkr   )labeltime_secr<   r!   )PROJECTmkdirFINAL
subprocessrunappendstrr!   )timesoutdirframesrH   secoutcmds          r   extract_framesrW      s    11F6<<VZ<3[3[3[F \ \	ce++c+++++tJuT2LTRuvz  |U  Vjl3lllllfilllnsc2222u3s88SZZ\\ZZ[[[[Mr&   c                     t           dz                      d          } d}d}|                                 D ]}|                                }|                    d          r.|                    dd          d                                         }|                    d	          s|                    d
          r@|                    dd          d                                                                         }||fS )Nscript/source_story.txtr   r   u   Việt Sử Kể LạiuB   NGƯỜI CON GÁI HÁI DÂU BƯỚC VÀO LONG MẠCH ĐẠI VIỆTzseries::   u   tiêu đề truyện:ztieu de truyen:)rJ   r"   
splitlineslower
startswithsplitstriptitle)txtseriesra   linelows        r   
parse_metarf   %   s   	*	*55w5GGC#F+oU   D DJJLL>>)$$ITZZA->->q-A-G-G-I-If>>122  	DcnnEV6W6W  	D_c_i_ijmno_p_pqr_s_y_y_{_{  `B  `B  `D  `DY^%<r&   c                     t                                           st          d          t          t          dt          t                     id          } t                              t          j	        | dd          d           t          t          i           }t          t          t          t                     t          t          d	z            d
d          }t          |           }t          |                    di                               di                     pd}t          |                    di                               di                     pd}t!          d|dz
            }dt!          d|dz
            fd|dz   fd||dz  z   fd|t!          d|dz
            z   fd|dz   fg}t#          |          }t          t          dz  i           }	t          t          dz  i           }
t          t          dz  i                               dg           }t          t          d z  i                               d!g           }t%                      \  }}t                                           o!t                                           j        d"k    t+          | d#          t+          | d$          t,                                          t.                                          |                    d%d          |                    d%d          dk    t1          d& |D                       |                    d'          d(v |                    d)i                               d*          d+d,}t1          |d-         |d.         |d/         |d0         |d1         |d2         |d3         |d4         g          }t          j        d5||rd6nd7t          t                     |||||d8gd9}t4                              t          j	        |dd          d           g d:}d;d<d=d>d?                    |          d@dAd?                    |d dB                   dCdDd?                    g dE          dF}t          j        ||||d'         i dGt          t          dHz            dIt          t          dJz            dKt          t          dz            dLt          t          dMz            dNt          t          dOz            dPt          t,                    t          t.                    dQdRt          t          dSz            dTt          t          dUz            dVt          t          dWz            dXt          t          dYz            dZt          t          d z            d[t          t          d\z            d]t          t          d^z            dt          t          d_z            d`t          t                     dat          t4                    dbt          t                    |	                    dc          p$t          t          t          dz  i                     |
                    dd          pt          |
          |det9          |          t;          t          dOz  df          t9          |          dg|dh	}t<                              t          j	        |dd          d           t>                              t          j	        t          j        d5|d'         t          t<                    t          t4                    t          t                     didd          d           tA          tC          j"        dj          dkz   t          j	        |d'         |t          t<                    dldm          z   dno           |st          dp          d S )qNzmissing final
input_pathrF   F   )r   indentr   r   z%output/final/final_qa_blackdetect.log)rh   log_pathr   input_probesintrog3333330@maing~jtͅ@r      intro_transitionr[   
early_main   mid_main	late_main-   outro   zaudio/master_audio_probe.jsonzoutput/main_story_probe.jsonzscript/scenes.jsonsceneszparts/part_ranges.jsonpartsi  audiovideoevent_countc              3   &   K   | ]}|d          V  dS )r!   N )r1   fs     r   r4   zmain.<locals>.<genexpr>D   s&      !>!>!!H+!>!>!>!>!>!>r&   status)	completedneeds_review
validation
bgm_volumezbapproved_output_candidate_after_automated_qa; human spot-check recommended for subjective BGM/sync)final_exists	has_audio	has_videothumbnail_16x9_existsthumbnail_9x16_existsblack_event_countblackdetect_clearqa_frames_extractedpackage_completedr   decisionr   r   r   r   r   r   r   r      passedfailedzAutomated QA checks streams, duration, black frames, frames at intro/early/mid/late/outro. User should still listen/spot-check BGM and sync before publishing.)
project_idstepr   r   final_video_pathfinal_duration_sec	qa_points	qa_framesblackdetectr   notes)
#vetmucthoigian	#chuvanan#thattramso#quoctugiam#nhatranz#trandutongz#phuonghoangz#vietsukelai#lichsuvietnamz#daivietui   Chu Văn An: Người Thầy Dám Dâng Thất Trảm Sớ Giữa Triều Trần | Việt Sử Kể LạiuS   Chu Văn An - Bậc Vạn Thế Sư Biểu Và Bản Sớ Chém Bảy Nịnh ThầnuL   Từ Quốc Tử Giám Đến Núi Phượng Hoàng: Khí Tiết Chu Văn Anu  Cùng Vết Mực Thời Gian kể lại cuộc đời Chu Văn An - bậc thầy lớn của Đại Việt cuối thời Trần. Từ làng Văn Thôn bên sông Tô, trường học Huỳnh Cung, chức Tư nghiệp Quốc Tử Giám, đến bản Thất trảm sớ dâng vua Trần Dụ Tông và những năm tháng ẩn cư ở núi Phượng Hoàng, câu chuyện này không phải về chiến công gươm giáo mà về nhân cách, khí tiết và trách nhiệm của người thầy trước vận nước. uQ   Chu Văn An - người thầy dám đứng thẳng giữa buổi triều nghiêngum  Chu Văn An không đi vào lịch sử bằng chiến trận, mà bằng nhân cách của một người thầy. Từ Quốc Tử Giám đến Thất trảm sớ, từ kinh thành Thăng Long đến núi Phượng Hoàng, ông để lại một câu hỏi còn vang mãi: khi đạo lý bị xem nhẹ, người có học phải im lặng hay phải lên tiếng?	   u"   Chu Văn An và Thất trảm sớu   Một người thầy của Đại Việt dám dâng sớ xin chém bảy nịnh thần, rồi rời quan trường để giữ trọn khí tiết.)r   r   r   r   r   r   )title_youtube_1title_youtube_2title_youtube_3description_youtubehashtag_youtubetitle_facebookdescription_facebookhashtag_facebooktitle_tiktokdescription_tiktokhashtag_tiktoksource_scriptrY   cleaned_storyzscript/cleaned_story.txt
dense_plancharacter_biblezscript/character_bible.jsonscene_images_dirzimages/scenes
thumbnails)16x99x16voice_segments_dirzaudio/voice_segmentsscene_tts_dirzaudio/scenesmaster_narrationzaudio/master_narration.wav	subtitlesz&subtitles/master_subtitles_clamped.srtpart_rangesrendered_parts_dirrender_parts
main_storyzoutput/main_story.mp4zoutput/intro/intro.mp4final_outputfinal_qa_reportfinal_package_reportmaster_duration_secmain_duration_sec)master_audio_secmain_story_sec	final_seczscene_*.png)rx   scene_imagesry   )	r   rc   ra   approved_outputqa_final_statuspaths	durationscountssocial_metadata)r   r   r   	info_pathqa_report_pathr   z%Y-%m-%d %H:%M:%S zDONE )r   final_durationinfor   T)flushfailed_validation)#rL   r!   
SystemExitr   PROBErP   FINAL_PROBE
write_textr   r   r%   
PKG_REPORTBLACKrJ   r-   r+   maxrW   rf   statst_sizer7   THUMB16THUMB9allname	QA_REPORTjoinr9   r=   INFOMANIFESTprinttimestrftime)r,   pkgblacktotal	intro_durmain_duroutro_startrQ   rS   master_probe
main_proberx   ry   rc   ra   r   r   qayt_tagsr   r   s                        r   rn   rn   .   s	   <<>><O!<!<<E<E

+C00B4:be1EEEwWWWZC
u3u::WEl=l9m9mnnot
u
uE
b''E#''.,,00<<==EI++//r::;;FwHAeBhKs1Yq[112L23NPZ[demnoeo[oOpr}  H  IL  MN  OW  XZ  OZ  I[  I[  [  r\  ^e  fq  rs  fs  ]t  uE%  Fg==bAALG::2>>J,,R0044XbAAF
w//
3
3
7
7
C
CELF5||~~C%**,,*>t*C7OOBw ' 0 0!IImA66599UbcdKeKeghKh!!>!>v!>!>!>>>GGH--1MMWW\"--11,??w	 	J 
>*:k+B:kCZ[ef}[~  @J  Kb  @c  dn  oB  dC  DN  Od  De  fp  qD  fE  F  G  GF\VQWEeXX]ey|  ~C  zD  zD  Z_  lq  ~D  SX  fp  zZ  y[  \  \BBECCCWUUU [  [  [G Foh i((7++l  O88GBQBK00; s"y"y"yzz O \6%RXkmnvkw
C(A ABB
CRSVW^_yWySzSz
 |H  IL  MT  Ui  Mi  Ij  Ij
 k|  }@  AH  If  Af  }g  }g
s7?#:;;
<HQTU\Q]Q]ehioepepIqIq
 sG  HK  LS  Tj  Lj  Hk  Hk
 l{  |  @G  HV  @V  |W  |W
 Xj  kn  ov  wS  oS  kT  kT
 G$LLMM
 O\\_`g  iA  aA  ]B  ]B
 CW  X[  \c  dr  \r  Xs  Xs
 t@  AD  EL  Md  Ed  Ae  Ae
 C 8899	
 ;IU	
 Uffijsftft	
 vL  MP  Q[  M\  M\	
 )5(8(89N(O(O  )ISVW[\c  eD  ]D  EG  XH  XH  TI  TI  [e  [i  [i  j}  [~  [~  [Q  BE  FP  BQ  BQ  ^c  d  dv;;k'/BYZg6h6hqtuzq{q{||)
 
D 	OODJta@@@'ORRR
RQST\Q]jmnrjsjs  FI  JS  FT  FT  dg  hm  dn  dn  $o  $o  }B  JK  L  L  L  V]  ^  ^  ^	$-,
-
-g
5dj2h<invyz~vv  BA  BA  OT  7U  7U  7U  U  \`  a  a  a  a8$788888r&   __main__)r   )N)r   r   urllib.requestr   rM   pathlibr   rJ   r   r   rL   r   r   r   r   r   r   r   r   r%   r-   r7   r=   rW   rf   rn   __name__r~   r&   r   <module>r      sS   - - - - - - - - - - - - - - - -      WXX'-,,99;;

5
5	8877	:	:` ` ` `P P P P C C C O O O b b b	 	 	  ;9 ;9 ;9x Zr&   