
    g)j#                         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)PathzF/data/video-pipeline/Youtube-Video-Maker/Project/01062026-004-Ba-Trieuz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:}g d;}d<d=d>d?d@                    |          dAdBd@                    |d dC                   dDdEd@                    g dF          dG}t          j        ||||d'         i dHt          t          dIz            dJt          t          dKz            dLt          t          dz            dMt          t          dNz            dOt          t          dPz            dQt          t,                    t          t.                    dRdSt          t          dTz            dUt          t          dVz            dWt          t          dXz            dYt          t          dZz            d[t          t          d z            d\t          t          d]z            d^t          t          d_z            dt          t          d`z            dat          t                     dbt          t4                    dct          t                    |	                    dd          p$t          t          t          dz  i                     |
                    de          pt          |
          |dft9          |          t;          t          dPz  dg          t9          |          dh|di	}t<                              t          j	        |dd          d           t>                              t          j	        t          j        d5|d'         t          t<                    t          t4                    t          t                     djdd          d           tA          tC          j"        dk          dlz   t          j	        |d'         |t          t<                    dmdn          z   dop           |st          dq          d S )rNz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#batrieu#trieuthitrinhu	   #nuinưa#cuuchan#dongngo#lucdan#khoinghia248#vietsukelai#lichsuvietnam#daiviet)r   r   r   #nuinuar   r   r   r   r   r   r   uV   Bà Triệu: Ngọn Lửa Núi Nưa Không Chịu Cúi Đầu | Việt Sử Kể LạiuK   Triệu Thị Trinh - Nữ Tướng Cưỡi Voi Trắng Chống Đông NgôuI   Khởi Nghĩa Bà Triệu Năm 248: Tiếng Voi Trận Giữa Cửu ChânuC  Cùng Vết Mực Thời Gian kể lại câu chuyện Bà Triệu - Triệu Thị Trinh, người con gái vùng Cửu Chân đã phất cờ khởi nghĩa chống Đông Ngô năm 248. Từ núi Nưa, hình ảnh nữ tướng áo giáp vàng, cưỡi voi trắng ra trận trở thành biểu tượng của ý chí không chịu cúi đầu trước ách đô hộ. Dù cuộc khởi nghĩa bị Lục Dận đàn áp, ngọn lửa Bà Triệu vẫn sống trong trí nhớ dân tộc như lời nhắc về tự do, khí phách và lòng phản kháng của người Việt. u;   Bà Triệu - ngọn lửa núi Nưa không bao giờ tắtu   Năm 248, giữa núi rừng Cửu Chân, Triệu Thị Trinh đứng lên chống Đông Ngô. Bà không chọn cúi đầu, mà chọn trở thành ngọn lửa để hậu thế nhớ mãi về khí phách người Việt.
   u3   Bà Triệu cưỡi voi trắng chống Đông Ngôu   Triệu Thị Trinh - người con gái núi Nưa phất cờ khởi nghĩa năm 248, để lại biểu tượng bất khuất trong lịch sử Việt Nam.)r   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 c  c  cG a  a  aGrge d	((7++V  D88GCRCL11L }  #C  #C  #C  D  D 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   - - - - - - - - - - - - - - - -      UVV'-,,99;;

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