
    i                     h    d Z ddlZddlZddlZddlZddlZd Zd Zd Zd Z	d Z
edk(  r e
        yy)	uw   
通用视频片段生成工具
将字幕图片和音频合并成静态视频
用法: python generate_videos.py <adid>
    Nc                     t        j                  |      }|j                         }|j                  d| f       |j	                         }|j                          |r|d   S d|  S )u   从数据库获取adnamez7SELECT DISTINCT adname FROM srts WHERE adid = ? LIMIT 1r   adid_sqlite3connectcursorexecutefetchoneclose)adiddb_pathconnr   results        .c:\dev\xtrs\vdcb\srtsegjoin\generate_videos.py
get_adnamer      sZ    ??7#D[[]F
NNLtgV__FJJLay4&>    c                     t        j                  |      }|j                         }|j                  d| f       |j	                         d   }|j                          |S )u   获取字幕数量zHSELECT COUNT(*) FROM srts WHERE adid = ? AND cn IS NOT NULL AND cn != ''r   r   )r   r   r   r   counts        r   get_subtitle_countr      sM    ??7#D[[]F
NN]`d_fgOOa EJJLLr   c                 p    ddl }d}|j                  ||       }|r| |j                         d }n| }d|v ry|S )u   
    获取视频标题：
    1. 去掉日期前缀
    2. 如果标题太长，只取"鸡蛋最容易被污染的是沙门氏菌"
    r   Nz%^\d{2}-\d{2}-\d{2}_\d{2}_\d{2}_\d{2}-u*   鸡蛋最容易被污染的是沙门氏菌)rematchend)adnamer   patternr   titles        r   get_video_titler   *   sH     6GHHWf%Euyy{|$ 4u<;Lr   c                 (   d}t        | |      }t        d|        t        |      }t        d|        | d}| d}|  | d}t        j                  j                  |      st        d|        yt        j                  j                  |      st        d	|        yt        j                  j                  |      rt        j                  |       t        j                  |       t        | |      }t        d
|        t        |      D ]a  }t        j                  j                  |d|dd      }	t        j                  j                  |d|dd      }
t        j                  j                  |d|dd      }t        j                  j                  |	      st        d|	        t        j                  j                  |
      st        d|
        ddddd|	d|
dddddddd d!d"d#|g}t        j                  |d$%      }|j                  d&k7  r6t        d'|        t        |j                  j!                  d(d)*             A|d+z   d,z  d&k(  sNt        d-|d+z    d.|        d t        d/| d0       t        d1|        y$)2u   生成视频片段z\\ll\D\xtrssvjj\dpd.dbzadname: u   视频标题: _images	_combinedmp4u&   错误：字幕图片目录不存在: Fu    错误：音频目录不存在: u   字幕数量: vertical_subtitle_03dz.pngzcn+enz.mp3video_z.mp4u    警告：图片文件不存在: u    警告：音频文件不存在: ffmpegz-yz-loop1z-iz-c:vlibx264z-tune
stillimagez-c:aaacz-b:a192kz-pix_fmtyuv420pz	-shortestT)capture_outputr   u   错误：生成视频失败: zutf-8ignore)errors   
   u   生成视频片段 /u   完成！生成了 u    个视频片段u   输出目录: )r   printr   ospathexistsshutilrmtreemakedirsr   rangejoin
subprocessrun
returncodestderrdecode)r   r   r   video_title
images_dir	audio_dir
output_dirsubtitle_counti
image_file
audio_fileoutput_filecmdr   s                 r   generate_video_segmentsrJ   @   s    (G g&F	HVH
 "&)K	N;-
() 87#J()$I 6+c*J 77>>*%6zlCD77>>)$0<= 
ww~~j!j!KK
 (g6N	N>*
+, >"WW\\*0B1S'.NO
 WW\\)uQsG4-@A
 ggll:#wd/CD ww~~j)4ZLABww~~j)4ZLAB dS**I\EF	
 D9!1+?@&--&&wx&@A ER<1'!uAn-=>?Y #\ 
//?
@A	N:,
'(r   c                     t        t        j                        dk7  r+t        d       t        d       t        j                  d       	 t        t        j                  d         } t        d       t        d         t        |       }|rt        d       y
t        d	       t        j                  d       y
# t        $ r# t        d       t        j                  d       Y ~w xY w)u	   主函数   u(   用法: python generate_videos.py <adid>u&   示例: python generate_videos.py 8442r/   u   错误：adid必须是数字u    === 视频片段生成工具 ===zadid: u   
视频片段生成完成！u   
视频片段生成失败！N)lensysargvr2   exitint
ValueErrorrJ   )r   successs     r   mainrT      s    
388}8967388A;
 
,.	F4&/%d+G-.-.  ,-s   	B8 8)C$#C$__main__)__doc__r3   rN   r   r;   r6   r   r   r   rJ   rT   __name__ r   r   <module>rY      sJ    
 
   	,Wt2 zF r   