
    3j|#                         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)PathzL/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuanz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        q/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/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?                    g 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
#phunghung#bocaidaivuong	#duonglam	#giaochau	#bacthuocz	#nhaduongz	#tongbinh#vietsukelai#lichsuvietnamz#daivietu^   Phùng Hưng: Bố Cái Đại Vương Và Ngọn Cờ Đường Lâm | Việt Sử Kể Lạiu^   Bố Cái Đại Vương Phùng Hưng - Ngọn Lửa Đường Lâm Giữa Đêm Bắc ThuộcuJ   Từ Đường Lâm Đến Thành Tống Bình: Khởi Nghĩa Phùng Hưngu  Cùng Vết Mực Thời Gian kể lại cuộc khởi nghĩa Phùng Hưng trong nửa sau thế kỷ VIII, khi Giao Châu còn nằm dưới ách đô hộ nhà Đường. Từ vùng đất Đường Lâm, uy tín của dòng họ Phùng, sự nổi dậy của nghĩa quân, đến hình ảnh Bố Cái Đại Vương trong ký ức dân gian, câu chuyện này là một ngọn đuốc giữa đêm dài Bắc thuộc - nhắc rằng tinh thần tự chủ của người Việt chưa bao giờ tắt. uD   Phùng Hưng - ngọn cờ Đường Lâm giữa đêm Bắc thuộcu5  Giữa thời Bắc thuộc, khi Giao Châu oằn mình dưới sưu thuế và quan đô hộ nhà Đường, Phùng Hưng từ Đường Lâm đã trở thành nơi dân chúng gửi gắm hy vọng. Câu chuyện Bố Cái Đại Vương là ký ức về một ngọn lửa tự chủ không chịu tắt.)r   r   r   r   r   r   r   r   u'   Phùng Hưng - Bố Cái Đại Vươngu   Từ Đường Lâm, Phùng Hưng dựng cờ chống ách đô hộ nhà Đường và trở thành Bố Cái Đại Vương trong ký ức dân gian.)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 e  e  eGzzf [((7++_  W88  %Z  %Z  %Z  [  [@ w"|"|"|}} 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   - - - - - - - - - - - - - - - -      [\\'-,,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&   