
    ,!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dZdZdZdZdZd Zd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/01062026-003-Tran-Quoc-Toanz,http://192.168.1.104:8015/render-story-videozhttp://192.168.1.104:8002/probezparts/part_ranges.jsonz$audio/master_narration_timeline.jsonrender_partszrender_validation.jsonz&logs/step14_render_parts_manifest.jsoni  i8     g      ?g      ?c                 R    t          t          j        d          | z   d           d S )Nz%Y-%m-%d %H:%M:%S T)flush)printtimestrftime)msgs    #scripts_run_step_14_render_parts.pylogr      s+    	$-,
-
-
34@@@@@@       c                    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 )	NFensure_asciiutf-8zContent-Typezapplication/jsonPOST)dataheadersmethodtimeout)
urllibrequestRequestjsondumpsencodeurlopenloadsreaddecode)urlpayloadr   reqresps        r   	post_jsonr(      s    
.
 
 Ze444;;GDD!34	 !  C 
		W		5	5 7z$))++,,W55667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   .9B44B8;B8c                 z   t          t          dt          |           id          }|                    di           }|                    dg           }t	          |                    d          pd          t          d |D                       t          d	 |D                       |                    d
          dS )N
input_pathx   r   formatstreamsdurationr   c              3   H   K   | ]}|                     d           dk    V  dS )
codec_typeaudioNget.0ss     r   	<genexpr>zprobe.<locals>.<genexpr>,   3      IIA|,,7IIIIIIr   c              3   H   K   | ]}|                     d           dk    V  dS )r0   videoNr2   r4   s     r   r7   zprobe.<locals>.<genexpr>-   r8   r   format_name)r.   	has_audio	has_videor;   )r(   PROBE_ENDPOINTstrr3   floatany)pathdocfmtr-   s       r   proberE   &   s    
N\3t99$=s
K
K
KC
''(B

Cggi$$G#''*--233IIIIIIIIIIIIIIww}--	  r   c                      t          j        t                              d                    d         } d | D             | fS )Nr   encodingtimelinec                      i | ]}|d          |S scene_id r4   s     r   
<dictcomp>z&build_scene_lookup.<locals>.<dictcomp>4   s    ///AjM1///r   )r   r!   TIMELINE	read_text)rI   s    r   build_scene_lookuprQ   2   s@    z(,,g,>>??
KH//h///99r   c           	         t          | d                   fd|D             }g }t          |          D ]\  }}t          dz  |d          dz  }|                                st	          d|           t          | d         |d         |                    d	d
          z
            }t          | d         |d         |                    dd
          z             }t          d||z
            }	|                    t          |          t          |	d          d           t          d |D                       }
| d         t          t          dt          |          dz
            z  z   }||
z
  }|rIt          |          dk    r6t          t          d|d         d         |z             d          |d         d<   |S )N	scene_idsc                 (    g | ]}|d          v |S rK   rM   )r5   r6   idss     r   
<listcomp>z%build_part_scenes.<locals>.<listcomp>9   s'    AAA1AjMS,@,@Q,@,@,@r   zimages/scenesrL   z.pngzMissing scene image: 	start_secstart	pre_pause        end_secend
post_pauseg?   )
image_pathr.   c              3   &   K   | ]}|d          V  dS )r.   NrM   r4   s     r   r7   z$build_part_scenes.<locals>.<genexpr>E   s&      ..!*......r   duration_secr      gMbP?r.   )set	enumeratePROJECTexistsFileNotFoundErrormaxr3   minappendr?   roundsumTRANSITION_DURATIONlenabs)partrI   part_timelinescenesidxscener_   display_startdisplay_endr.   totaltarget_scene_sumdiffrU   s                @r   build_part_scenesr{   7   s   
d;
 
 CAAAAAAAMF.. 	W 	W
U.E*4E1K1K1KK
  "" 	J#$HJ$H$HIII D-uW~		+WZ@[@[/[\\$y/5<%))LRU:V:V+VWWsK-788S__%RSBTBTUUVVVV..v.....EN+.AC3v;;YZ?D[D[.[[e#D S#d))e##!&s3r
:0F0M'N'NPQ!R!Rr
:Mr   c                      t                               dd           t          j                            dd           t	          j        t                              d                    } t                      \  }}g }g }| d         D ]S}|d         }t          |d         z  }t          |d         z  }t           | d	z  }	|
                                st          d
|           |
                                st          d|           t          ||          }
i dt          j         d| d|
dt          |          dt          |          dt          |	          dt          dt           dt"          dddddddddddddt$          ddd dd|d!         d d dd"d"d#}t'          d$| d%t)          |
           d&|d!          d'|	            t+          t,          |          }|                    ||d(           t1          |	          }|d)         |d!         z
  }|                    |t          |	          |d!         |d)         t3          |d*          |d+         |d,         t)          |
          t          |          t          |          |	
                                o'|d+         o|d,         ot5          |          t6          k    d-           Ut9          d. |D                       rd/nd0}t          j        d1|t,          d2t6          ||d3}t:                              t	          j        |d"d45          d           t                              t	          j        t          j        d1|t,          t          t                     t          t:                    t)          |          d6d"d45          d           |d/k    rtA          |          t'          d7t	          j        |t)          |          d8d"9          z              d S ):NT)parentsexist_okr   rG   partspart_id
audio_pathsubtitle_pathz.mp4zMissing part audio: zMissing part subtitle: job_id_step14_rs   output_pathwidthheightfpscrf   presetveryfastburn_subtitles	ken_burnsmotion_presetstorybook_smooth
transition	crossfadetransition_durationfade_inrZ   fade_outra   F)timeline_start_sectimeline_end_secaudio_start_secaudio_end_secsubtitle_time_offset_secslice_audioslice_subtitleszRENDER z scenes=z
 duration=z output=)r   responser.   r^   r<   r=   )r   r   target_duration_secvideo_duration_secduration_diff_secr<   r=   scene_countr   r   validc              3   &   K   | ]}|d          V  dS )r   NrM   )r5   vs     r   r7   zmain.<locals>.<genexpr>   s&      @@q'
@@@@@@r   	completedfailed_validation   0exact_part_audio_and_exact_rebased_part_subtitle)
project_idstepstatusendpointrender_modeduration_tolerance_secr   	responses   )r   indent)r   r   r   r   
output_dir
validationparts_countzDONE )r   r   r   )!
OUTPUT_DIRmkdirMANIFESTparentr   r!   PART_RANGESrP   rQ   rf   rg   rh   r{   namer?   WIDTHHEIGHTFPSrn   r   ro   r(   ENDPOINTrk   rE   rl   rp   DURATION_TOLERANCEall
VALIDATION
write_textr   
SystemExit)
ranges_doc_rI   validationsr   rq   pidr   r   r   rs   r%   r   mediarz   r   validation_docs                    r   mainr   N   s   TD111O$666K1171CCDDJ$&&KAxKI7# 5 59otL11
$"77 c<<</  "" 	I#$G:$G$GHHH##%% 	O#$Mm$M$MNNN"422
44s44
f
 #j//
 S//	

 3{++
 U
 f
 3
 2
 j
 d
 
 /
 +
 "#6
  s!
" #
$ #& $^ 4#!(+ $1
 
 
4 	ecee3v;;ee$~:NeeXceefffXw//Sh??@@@k""Z 4#77{++#'#7"'
"3!&tQ{+{+v;; //j// '')){eK.@{U;EW{\_`d\e\ei{\{
 
 	 	 	 	  @@K@@@@@Y[[FYFlI"4	 	N $*^%PQRRR]deee
l*oo*oo;''$ $ !% % % 07  8 8 8    $*[9I9IJJY^____`````r   __main__)r   )r   
subprocessr	   urllib.requestr   pathlibr   rf   r   r>   r   rO   r   r   r   r   r   r   r   rn   r   r(   rE   rQ   r{   r   __name__rM   r   r   <module>r      s9                  
$]
^
^9200;;~%
22
==	  A A A7 7 7 7	 	 	: : :
  .Va Va Var zDFFFFF r   