
    WS+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  ed          ZdZ	dZ
dZdZdZ e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dZdZdZd Zd"dZd Zd ZefdZd Zd Zd Zd Z d Z!d Z"d Z#d  Z$e%d!k    r e$             dS dS )#    N)PathzT/data/video-pipeline/Channel-Loi-Co-Nhan/project/11062026-001-Biet-Du-Thi-Khong-Nhucz,http://192.168.1.104:8019/render-story-videozhttp://192.168.1.104:8002/probez,http://192.168.1.104:8018/package-audio-safezhttp://192.168.1.104:8018/probez%http://192.168.1.104:8018/blackdetectzX/data/video-pipeline/Channel-Loi-Co-Nhan/data/bgm/paulyudin-sentimental-story-182512.mp3zoutput/intro/intro.mp4zoutput/intro/intro_audio.wavz&output/thumbnails/thumb_9x16_final.pngzoutput/main_story.mp4zoutput/final/final_video.mp4z!logs/worker_step10_18_rebuild.log   g)\(?g       @c                 2   t          j        d          | z   }t          |d           t          j                            dd           t                              dd          5 }|                    |dz              d d d            d S # 1 swxY w Y   d S )	Nz%F %T T)flushparentsexist_okautf-8encoding
)timestrftimeprintLOGparentmkdiropenwrite)msglinefs      |/data/video-pipeline/Channel-Loi-Co-Nhan/project/11062026-001-Biet-Du-Thi-Khong-Nhuc/scripts_run_worker_step10_18_rebuild.pylogr      s    =""S(D	$dJTD111	#	(	( A	t                 s   &BBB   c                 F   t           j                            | t          j        |d                              d          ddid          }	 t           j                            ||          5 }t          j        |                                	                    d                    cd d d            S # 1 swxY w Y   d S # t           j
        j        $ rJ}|                                	                    dd	          }t          |  d
|j         d|           |d }~ww xY w)NF)ensure_asciir   zContent-Typezapplication/jsonPOST)dataheadersmethodtimeoutignorez HTTP z: )urllibrequestRequestjsondumpsencodeurlopenloadsreaddecodeerror	HTTPErrorRuntimeErrorcode)urlpayloadr$   reqrespebodys          r   	post_jsonr:   $   s]   
.
 
 Ze444;;GDD!34	 !  CB^##C#99 	;T:diikk0099::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;<! B B Bvvxxw11c9999499::ABs=   !C /9B5(C 5B99C <B9=C D ADD c                     t          t          t          d|           dz                      }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dd|dd|dd|dS )	N        i  i6 i`  02:,03)introundmax)secmshmss        r   tsrI   3   s    	U3sC==4'((	)	)B
gA'MB
eA%KB
d
A$JB***Q***A***2****    c                     d                     |                     dd                                                                                    S )N r   )joinreplacesplit)texts    r   clean_wordsrQ   >   s:    88DLLs++113344::<<<rJ   c                     g }d}|t          |           k     r_t          |           |z
  }||k    r|n|}||dz   k    rd}|                    | |||z                       ||z  }|t          |           k     _|S )Nr         )lenappend)wordsnoutiremaintakes         r   chunksr]   B   s    
C	A
c%jj..UaQJJqqFQU??D

51t8$%%%	T	 c%jj.. JrJ   c                  L   t          j        t          dz                      d                    } g }|                     dg           D ]Z}|                    dg           D ]A}|                    d          *|                    d          |                    |           B[|S )Nz#asr/master_narration_asr_words.jsonr   r   segmentsrW   startend)r)   r-   PROJECT	read_textgetrV   )asrrW   segws       r   	asr_wordsrh   O   s    
*g EEPPZaPbb
c
cCEwwz2&&    "%% 	  	 AuuW~~)aeeEll.FQ	  LrJ   c                     t          j        t          dz                      d                    d         } t	                      }t          dz  }t          dz  }|j                            dd           g }g }d	}d
}| D ]h}t          |d                   }	t          |	          D ]?}
|}t          |t          |
          z   d
z
  t          |          d
z
            }|t          |          k    r nt          ||         d                   }t          ||         d                   }d                    |
          }|                    | dt          |           dt          |           d| d           |                    ||d         |||||                             d          ||                             d          d           |d
z  }|t          |
          z  }Aj|                    d                    |          d           |                    t          j        |dd          d           ||fS )Nzscript/scenes.jsonr   r   scenesz/subtitles/master_subtitles_worker_asr_split.srtz.subtitles/subtitle_debug_worker_asr_split.jsonTr   r   rS   	narrationr`   ra   rL   r   z --> scene_idword)idxrl   r`   ra   rP   asr_start_wordasr_end_wordF   r   indent)r)   r-   rb   rc   rh   r   r   rQ   r]   minrU   floatrM   rV   rI   rd   
write_textr*   )rj   awsub_path
debug_pathblocksdebugcursorrn   scenerW   chstart_iend_ir`   ra   rP   s                   r   build_asr_timed_subtitlesr   Y   s   Z#77BBGBTTUUV^_F	BJJHKKJO$666FEF
C  E+.//-- 	 	BGR(1,c"ggk::E#b''!!"W+g.//E5	%())C88B<<DMMSGGBuIIGGBsGGGGtGGGHHHLL%
2Ce\_im  BD  EL  BM  BQ  BQ  RX  BY  BY  km  ns  kt  kx  kx  y  k@  k@  A  A  B  B  B1HCc"ggFF		&))G<<<$*UqIIIT[\\\ZrJ   c                 r    t          |                     di                               d          pd          S )Nformatdurationr   )ru   rd   )probes    r   duration_from_prober   v   s1    8R((,,Z88=A>>>rJ   c                 b    t          fd|                     dg           D                       S )Nc              3   J   K   | ]}|                     d           k    V  dS )
codec_typeN)rd   ).0rH   typs     r   	<genexpr>zhas_stream.<locals>.<genexpr>{   s4      LLaquu\""c)LLLLLLrJ   streams)anyrd   )r   r   s    `r   
has_streamr   z   s4    LLLL599Y3K3KLLLLLLrJ   c           	         t          j        t          dz                      d                    d         }t	          t
          dt          t          dz            id          }t          |          }g }t          |          D ]\  }}|	                    d	          p"t          t          d
z  |d          dz            }t          |	                    dd                    }|dz   t          |          k     r,t          ||dz            	                    d|                    n|}	t          t          |	                    dd                    |	|z
            }
|dz   t          |          k     r|
dz  }
|                    |t          |
d          d           i dt          j         dd|dt          t          dz            dt          |           dt          t                     ddddddd d!d"d#d$d%d&d%d'd(d)d*d+dd,dd-ddd d d dd.d.d/}t#          d0           t	          t$          |d1          }t	          t
          dt          t                     id          }t$          |||d2}t          d3z                      t          j        |d.d45          d           t          d6z                      t          j        |d.d45          d           |S )7Nz$audio/master_narration_timeline.jsonr   r   items
input_pathzaudio/master_narration.wavx   r#   
image_pathzimages/scenesrl   z.pngr`   r<   rS   r   g      ?rT   )r   r   job_id_step14_worker_onepassrj   
audio_pathsubtitle_pathoutput_pathwidthi  heighti 
  fps   crf   presetveryfastburn_subtitlesT	ken_burnsmotion_presetstorybook_smooth
transitioncuttransition_durationfade_infade_outF)timeline_start_sectimeline_end_secaudio_start_secaudio_end_secsubtitle_time_offset_secslice_audioslice_subtitlesz#STEP14 worker render main_story.mp4r   )endpointr5   responser   z(logs/step14_worker_onepass_manifest.jsonrq   rr   output/main_story_probe.json)r)   r-   rb   rc   r:   PROBE_ENDPOINTstrr   	enumeraterd   ru   rU   rC   rV   rB   nameMAINr   RENDER_ENDPOINTrv   r*   )rx   timelinemaster_probemaster_durationrj   rZ   itemr   r`   
next_startholdr5   r   r   reports                  r   render_main_workerr   ~   sx   z7%KKVV`gVhhiijqrH^lCJf@f<g<g-hruvvvL),77OFX&& N N4XXl++is7_3LRVWaRbOhOhOh3h/i/i
dhhw,,--MNQRUUXYaUbUbMbMbU8AE?..wHHIIIhw
 5*c2233Z%5GHH q53x==  CKDZU4^^LLMMMMW\999& 	c'$@@AA 	X	
 	s4yy 	 	$ 	r 	r 	* 	$ 	T 	+ 	e 	s  	3!" 	C#$ " $' 1  G4 -...'4@@@Hn|SYY&?MMME)g8^cddF99EEdjQWfktuFvFvFv  BIE  J  J  J--99$*UY^gh:i:i:it{9|||LrJ   c                  T   t                                           st          dt                      t                                          st          dt                     t                               d          } dt
           d}dd l}g ddd	d
dddt          t                    dt          t                    d|dddddt          t          t          t          dt          t                    id                    t
          z             dddddddddddd d!d"d#d$t          |           }|                    |d%&           |                     t                      t          t          dt          t                     id          S )'Nzintro_missing: zintro_audio_missing: zintro_with_2s_tail_tmp.mp4z[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,setsar=1,fps=30,format=yuv420p[v];[1:a]aresample=44100,aformat=sample_rates=44100:channel_layouts=stereo,apad=pad_dur=z[a]r   ffmpegz-yz-vr0   z-loop1z-iz-filter_complexz-mapz[v]z-tr   r   r#   z-c:vlibx264z-presetr   z-crf20z-pix_fmtyuv420pz-c:aaacz-b:a192kz-ar44100z-ac2T)check)INTROexists
SystemExitINTRO_AUDIO	with_nameINTRO_TAIL_SILENCE_SEC
subprocessr   THUMBr   r:   PACKAGE_PROBE_ENDPOINTrunrN   )tmppayload_filterr   cmds       r   extend_intro_tail_silencer      s   <<>> 42522333 @>>>???
//6
7
7C	4 /	4 	4 	4  %'.0359;>u::GKMPQ\M]M])+138:@BGIMORSfgp  rH  KW  Y\  ]h  Yi  Yi  Jj  tw  hx  hx  hx  Ty  Ty  |R  TR  PS  PS 	  % '1 39 ;? AK MV 		 	 	  &	 (-	 /6	 8=	 ?B	 DGs88	C NN3dN###KK+lCJJ-GQTUUUUrJ   c                    t           j                            dd           t                      }t	          t
          dt          t                    id          }t          |d          rt          |d          st          d          t          t                    t          t                    t          t                    t          t                     dd	d
dt          ddd}t          d           t	          t          |d          }|                    d          p*t	          t
          dt          t                     id          }t	          t           t          t                     t          t           j        dz            dd          }t#          |          t#          |          z   }t$          j        ddt          ddgdt          t                    t          t          t                     |t#          |          t#          |          |z
  |||d}t           j        dz                      t+          j        |dd	          d           t           j        dz                      t+          j        |dd	          d           t$          dz                      t+          j        |dd	          d           |S ) NTr   r   r   r#   audiointro_or_main_missing_audioiD  rq   i8  i  r   r   )intro_video_pathmain_video_pathbgm_audio_pathoutput_video_pathsample_ratechannelsr   r   
bgm_volumer   r   z2STEP18 worker package intro + main + BGM, no outror   r   zfinal_blackdetect.log)r   log_path   	completedintro
main_story)
project_idstepstatusr   orderno_outrobgm_pathr   r   expected_duration_secfinal_duration_secduration_diff_secr   blackdetectpackage_responsezfinal_video_probe.jsonFrr   r   r   zfinal_package_report.jsonz'logs/step18_final_package_manifest.json)FINALr   r   r   r:   r   r   r   r   r   r   BGM
BGM_VOLUMEr   PACKAGE_ENDPOINTrd   BLACKDETECT_ENDPOINTr   rb   r   rv   r)   r*   )	
main_probeintro_probemain_probe2r5   r   r   blackexpectedr   s	            r   package_final_workerr      s   	Ltd333+--K2\3t994MWZ[[[Kk7++ 8:k73S3S 86777JJt99c(( ZZ  G <===)7DAAAHLL!!oY/EVYZ_V`V`Gakn%o%o%oE*3u::SVW\Wcf}W}S~S~,,  JN  O  O  OE";//2Ek2R2RRHl$<(HH  ZZ!)1%88077(B$ F" \,,88EX]fg9h9h9hsz8{{{
\//;;DJv\ajk<l<l<lw~;88DDTZPVejstEuEuEu  AHD  I  I  IMrJ   c                  2   t                               dd           t                      \  } }t          d|             t          dz  }t
                                          rL|                                r8t          j        |	                    d                    }t          d           nt          |           }t          dt          |          dd	t          |d
           dt          |d                      t          |          }t          d|d         ddt                      t          dz  }|                                r(t          j        |	                    d                    ni }|                    dt!          t
                    t!          t"                    t!          |           dt$          t&          t          t(          d	           |                    t          j        |dd          d           t          d           d S )N r   r   zASR subtitle written r   z)SKIP STEP14 using existing main_story.mp4zMAIN duration=z.3fz audio=r   z video=videozFINAL duration=r   z bgm_volume=zoutput/info.jsonworker_rebuilt_needs_final_qaasr_word_timestamps_worker)	r   r   final_video	subtitlessubtitle_sourcerender_endpointpackage_endpointr   intro_tail_silence_secFrq   rr   zCOMPLETE worker rebuild)r   rv   r   r   rb   r   r   r)   r-   rc   r   r   r   r   r   updater   r   r   r   r   r*   )rx   ry   main_probe_pathr   r   	info_pathinfos          r   mainr     s   NN2N(((466Hj***+++ >>O{{}} -//11 -
?44g4FFGG78888"8,,,U33
5RY@Z@Zcmnsu|c}c}  A  A  A!%((FT&!56TTT
TTUUU,,I@I@P@P@R@RZ4:i))7);;<<<XZDKK1$ii5zz]]7*, "8
 
 
 
 
 DuQGGGRYZZZ!"""""rJ   __main__)r   )&r)   rer   urllib.errorr&   urllib.requestpathlibr   rb   r   r   r   r   r   r   r   r   r   r   r   r   SUB_WORDS_PER_CUEr   r   r   r:   rI   rQ   r]   rh   r   r   r   r   r   r   r  __name__ rJ   r   <module>r     s    				               
$e
f
f@2A : > 
deff**66::((0033 
   B B B B+ + += = = & 
 
 
 
       :? ? ?M M M1 1 1hV V V0, , ,^# # #< zDFFFFF rJ   