
    i                     V
   d Z ddlZddlZddlZddlmZ ddlZddlmZ ddl	Z	ddl
Z
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mZmZmZ ddlZddlmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZdZ dZ d Z! ee"      Z#de#jH                  d<   de#j                  _%         ejL                         Z'g dZ(d Z)e#jU                  d      d        Z+e#jU                  d      d        Z,e#jU                  d      d        Z-e#jU                  d      e#jU                  d      d               Z.e#jU                  d       d!        Z/e#jU                  d"      d#        Z0e#jU                  d$      d%        Z1d& Z2d' Z3dd(Z4d) Z5 ed*+      Z6 ed*+      Z7 ed,+      Z8d- Z9d. Z9d/ Z:dd1Z;e#jU                  d2      d3        Z<e#jU                  d4      d5        Z=e#jU                  d6      d7        Z>d0a?d8a@d0aAd8aBe#jU                  d9      e#jU                  d:      d;               ZCe#jU                  d<      d=        ZDe#jU                  d>      d?        ZEe#jU                  d@      dA        ZFe#jU                  dB      dC        ZGe#jU                  dD      dE        ZHe#jU                  dF      dG        ZIe#jU                  dH      dI        ZJe#jU                  dJ      dK        ZKe#jU                  dL      dM        ZLdaMg aNdN ZOdO ZPdP ZQdQ ZRdR ZSdS ZTdT ZUdU ZVdV ZTdW ZWdXZXdY ZYdZ ZZd[ Z[d\ Z\d] Z]d^ Z^d_ Z_e#jU                  d`dagb      dc        Z`dd Zade Zbdf Zcdg Zddh Zedi Zfdj Zgdk Zhdl Zie#jU                  dm      dn        Zje#jU                  do      dp        Zke#jU                  dq      dr        Zle#jU                  ds      dt        Zme#jU                  du      dv        Zne#jU                  dwdagb      e#jU                  dxdagb      ddy              Zodz Zpd{ Zqe"d|k(  rde#_r         ej                  d}      Ztd~et_u         ej                  eX      Zwewj                         ZydZzdZ{g Z|	 dZ}ej                  ew_        eyj                  e}ezf      Zej                         Z|eyj                          ewj                          d Z ee|e{        ed        ee	j                  j                               dd Z e9eze|e{       yy# e$ rZ ede       Y dZ[ydZ[ww xY w# eyj                          ewj                          w xY w)i      N)AudioSegment)quote)Flaskjsonify	send_filerequest)dequec                     	 d}d}d| dd}t        j                  ||      }|j                         }|d   S # t        $ r}t	        d|       Y d }~y d }~ww xY w)	Nz#http://localhost:8022/api/translatezhttp://localhost/api/translatezhen)source_langtexttarget_lang)jsonresultz
xxx at trs)requestspostr   	Exceptionprint)cnstrurldatarespretdataexs         1join-src-audio-segments-and-tts-audio-segments.pytrsstcr      s`    1, dC]]3D)		x   l2s   58 	AAAc                     	 t        |dd      5 }t        j                  | |d       d d d        y # 1 sw Y   y xY w# t        $ r}t	        |       Y d }~y d }~ww xY w)Nwutf-8encodingFensure_ascii)openr   dumpr   r   )srtdatasrtffr   s       r   writesrt_oldr*      sI    $sG,qIIgaU3 -,, b		s)   > 2> ;> > 	AAAc                     	 t        |       }|||   d<   t        | dd      5 }t        j                  ||d       d d d        y # 1 sw Y   y xY w# t        $ r}t        |       Y d }~y d }~ww xY w)Ntrserr   r    r!   Fr#   readsrtdatar%   r   r&   r   r   )r(   stcidxr,   r   r)   r   s         r   
writetrserr0   #   sa    #VW$sG,qIId1%0 -,, b		s3   !A AA A
A A 	A/A**A/c                     	 t        | d      5 }t        j                  |      }t        |      D ]  \  }}	 |d   } 	 d d d        y
#  Y nxY w	 |d   }t	        d|       |t        j                         k7  rt	        d       Tn3#  t        j                         |d<   t        ||        Y  d d d        yxY w|d   }t        |d         }t	        |d	z   t        |      ||       ||d<   |d= t        ||         d d d        y	# 1 sw Y   nxY wd   }|t        j                         k(  S # t        $ r}	t	        d       Y d }	~	yd }	~	wt        $ r }	t	        |	       t	        d       Y d }	~	yd }	~	wt        $ r}	t	        d|	       Y d }	~	y d }	~	ww xY w)Nr    r!   r   r,   trser:znot mer      	   maker   尚无字幕T   已译Fxxx)r%   r   load	enumerater   uuidgetnodewritesrtr   lenFileNotFoundError	TypeErrorr   )
r(   r)   r'   r/   stcenstrr,   r   r6   r   s
             r   readsrtrD   +   sy   %$(1IIaLG'0
sd)E 1. 3 )(	g,E(5)dlln,X -!%CLWT*# )($ &kS[)fQhs7|E%8D	L&1 )((4 gdlln$$ n b	h eBs   D+ 'DADD+ A
D3BD%B5*D,D+ 5AD:D+ D"D+ +	F4EFE++F7FFc                     	 t        | d      5 }t        j                  |      }|r|cd d d        S 	 d d d        g S # 1 sw Y   g S xY w# t        $ r}t	        d|       Y d }~g S d }~ww xY w)Nr    r!   zxxx readsrtdata:)r%   r   r:   r   r   )r(   r)   r'   r   s       r   r.   r.   R   sn    %$(1IIaLG )( ) I ) I  % $$I%s6   A
 =	A
 A
 AA
 A
 
	A*A%%A*c                    	 t        |      }|dk(  rd}|||   d<   | ||   d<   t        |dd      5 }t        j                  ||d	       d d d        y # 1 sw Y   y xY w# t        $ r}t        |       Y d }~y d }~ww xY w)
N  r   r,   r   r    r!   Fr#   r-   )r,   r(   idxinsrtflerC   idxr   r)   r   s           r   r>   r>   [   s}    	"9E %[$#(['"$sG,qIId1%0 -,, b		s4   0A  AA  AA  A   	A>)A99A>c                    	 d}	 t        |       }|t        |      dz
  kD  ry||   }	 |d   }|dz  }/#  Y nxY w	 |d   }n7# t        $ r+}t        j                         }t        | ||       Y d }~yd }~ww xY w|d	   }t        |dz   t        |      |       t        d
|       |t        j                         k7  r2t        dt        t        j                               z   dz          |dz  }t        |d	         }t        |       t        | ||       y# t        $ r}t        d       Y d }~yd }~wt        $ r }t        |       t        d       Y d }~yd }~wt        $ r}t        d|       Y d }~y d }~ww xY w)Nr   T   r5   r   r4   r,   r3   r   r2   zhas trser,but not me()r7   r8   Fr9   )r.   r?   r   r<   r=   savetrserrtr   strr   r>   r%   r   r:   r;   r@   rA   )r(   r/   r   rB   rC   r,   r   r   r)   r'   r6   s              r   rD   rD   f   sb   BT"Dc$ik!VC$i	'l llnD. f+E&(3t9U+(5!dlln$-c$,,..AA#EF	V%E%LT&':  n b	h eBsp   D D 
3 D 7D A  D 	A5
!A0+D 0A55BD 	E4D++E47EE4E//E4c                     t        j                  |       D cg c]B  }|j                         j                  |      s#t         j                  j                  | |      D c}S c c}w N)oslistdirlowerendswithpathjoin)rV   extr)   s      r   get_files_by_typerY      sH    +-::d+;W+;aqwwy?Q?QRU?VBGGLLq!+;WWWs
   $A""A"c                     t        t        d      } t        | d d      } | D ]  }|d d dz   }t        j                  j                  |      t        j                  j                         t        j                  d      z
  j                         k  rt        d	|        y t        |       	 t        |      }|d
k(  r|dk7  r y )N.m4ac                     t         j                  j                  t         j                  j                  t        |             S rQ   rR   rV   getmtimerW   dirxs    r   <lambda>zloop.<locals>.<lambda>   "    bgg&6&6rww||C7K&L    Tkeyreversesrt   daystoo old,skip:r4   r3   )rY   r_   sortedrR   rV   r^   datetimenow	timedelta	timestampr   rD   )filesr)   r(   rets       r   loopru      s    
C
'E
LVZ
[EsVE\77D!8#4#4#8#8#:8;M;MST;U#U"`"`"bb/$'dCAvBw  rd   \\ll\c\wxvddatazc:\wxvddatac                 J   t        t              D ]p  \  }}	 t        |d         dkD  r	 |d   }|d d dz   }|d   }|d   }|d   }|d	k(  rt	        d
|| |       | |d<   ||||fc S || k(  s\t	        d| ||       ||||fc S  y# t        $ r}t	        |       Y d }~sd }~ww xY w)Nr   r   r(   rh   ri   rJ   cnr,   rG   znew stc:zmy last working stc:)rG   r3   rG   r3   )r;   srtsr?   r   r   )r,   rJ   ri   r   r(   idxinsrtfiler   
savedtrsers           r   
getstc2trsr|      s    T?C	3t9~a   [#2Yu_Z$iw<
r>*Ss+CLU3..u(s37U3..# #$   	#JJ	s   B	B"BB"FJSON_AS_ASCII))xbl   t<=ZP)nl   &#3  )del   OOf c            
      "   t        t        d      } t        | d d      } d}|t        t        dz         z  }|dz  }|t
        dd	 z  }|d
z  }|t        t        dz         z  }|dz  }|t        t        t                    z  }|dz  }|t        z  }|d
z  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dt        t
        d       dt         dt        t        d       dt         d	z  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|d
z  }| D ]  }|d d dz   }|dd  }	 t        j                  j                  |      t        j                  j                         t        j                   d      z
  j#                         k  rt%        d|        |S |dd dz   }|d| dz  }|dz  }|dz  }|dz  }|d | dz  }|d!z  }|dz  }|dz  }|d#| dz  }||z  }|dz  }|d
z  } |S #  |d"z  }Y *xY w)$Nr[   c                     t         j                  j                  t         j                  j                  t        |             S rQ   r]   r`   s    r   rb   zrt_.<locals>.<lambda>   rc   rd   Tre   rG   r4   rH      <br>/<a href=/play>	   播放mp3</a><a href=/reqstc/121212>tst req srt<a href=/savesrt/121212/safe>tst save srt<a href=/resetsrt>reest top ad<a href=/lssrts>	list srtsrh   ri   rj   rk   rm   mp3<a href=/mp3/<a href=/cnstr/u   中文u   (字幕生成中...)<a href=/srt/)rY   r_   rn   rO   tstidxinsrtfiletstsrtftstidxr?   ry   tstcnstrr   rR   rV   r^   ro   rp   rq   rr   r   )rs   htmr)   r(   fnr   s         r   rt_r      s   
C
'E
LVZ
[E
C_Q	CHCBCKCVAXCHCSYCHCMCKC	CCKCHC	""CCKCHC#E'r$:#;1_<MQuU]ceOfNgghiohppq	rrCCKCHCCCKCHCCCKCKCsVE\9	(ww%x'8'8'<'<'>x?Q?QWX?Y'Y&d&d&ffod+  J RE!CM#a((CCKCHCOB4q))CMCKC 	SbT##RVV+ , J	(''Cs   ?A/H13HHr   c            
         t               } d}|t        t        dz         z  }|dz  }|t        dd z  }|dz  }|t        t        dz         z  }|dz  }|t        t        t                    z  }|dz  }|t        z  }|dz  }|dz  }|d	z  }|d
z  }|dz  }|dz  }|dz  }|d
z  }|dz  }|dt        t        d       dt         dt        t        d       dt         d	z  }|dz  }|d
z  }|dz  }|dz  }|dz  }|d
z  }|dz  }|dz  }|dz  }|d
z  }|dz  }|dz  }|dz  }|dz  }	 |dt        t        d   d         z   dz   t        t        d   d         z   dz   t        t        d   d         z   dz   t        d   d   z   z  }|dz  }|dz  }|dz  }|dz  }	 |dt        t        d   d         z   dz   t        t        d   d         z   dz   t        t        d   d         z   dz   t        d   d   z   z  }|dz  }|d z  }|dz  }	 |dt        t        d   d         z   dz   t        t        d   d         z   dz   t        t        d   d         z   dz   t        d   d   z   z  }|dz  }| D ]  }|d   d!d" }||z  }|dz  }|d   }|d   }|d#z   }|dd  }|d   }	|	dk  r|d$z  }ny|d%z   }
|d&|
 dz  }|d	z  }|d
z  }|dz  }|d'| dz  }|d(z  }|d
z  }|dz  }|d)| dz  }|d*z  }|d
z  }|dz  }|	dkD  r"|d+| dz  }|d,z  }|dz  }|d-| dz  }|d.z  }n|d/z  }|dz  }|d0| dz  }|d1z  }|dz  }|d+| dz  }|d,z  }|dz  }|d-| dz  }|d.z  }|dz  }|d2| dz  }|d3z  }|dz  }||z  }|dz  } |S # t        $ r}|dz  }Y d }~d }~ww xY w# t        $ r}|dz  }Y d }~d }~ww xY w# t        $ r}|dz  }Y d }~fd }~ww xY w)4NrG   r4   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z<a href=/trshis>trs history</a>u   trs中: rJ   r3   r    cnt:/tot:rL      z<a href=/ttshis>tts history</a>   tts中: z(<a href=/joinclipshis>join clips his</a>   rh   z.srtu	   无中字.mp3r   r   u   字幕r   u   中字z<a href=/en/u
   英字</a>z<a href=/reseten/u   重做英字</a>u	   无英字z<a href=/resetcn/u   重做中字</a>z<a href=/resettts/u   重合音频</a>)readadsrO   r   r   r   r?   ry   r   r   	histrsadsr   	histtsads)rsr   r   rcreatedtadidr)   r(   r   bilir   s              r   rtr     s   yB
C_Q	CHCBCKCVAXCHCSYCHCMCKC	CCKCHC	""CCKCHC#E'r$:#;1_<MQuU]ceOfNgghiohppq	rrCCKCHCCCKCHCCCKCKC	**CHCOCU3y}Q'((0Yr]15E1FFwNsS\]_S`abScOddehhirsuivwxiyyy KC	**CHCOCU3y}Q'((0Yr]15E1FFwNsS\]_S`abScOddehhirsuivwxiyyy KC	33CHCU3y}Q'((0Yr]15E1FFwNsS\]_S`abScOddehhirsuivwxiyyy KC1aXSqT
A$vX9rU6C&CM#a((CCKCHCM$q))CMCKCHCOD6++CMCKCHCAvTF!,,\!S)$q11''[ S!$q))STF!$$\S!$q))S"4&**SQV_ ` JE  R  R  RsK   'AM= AN AN5 =	NNN	N2"N--N25	O>O		Oz	/resetsrtc                      t                yNrG   )resetsrt rd   r   resetrtr   {  s
    Jrd   z/lssrtsc                      d} t         D ]U  }| |d   z  } | dz  } | t        |d         z  } | dz  } | t        |d         z  } | dz  } | |d   z  } | dz  } | |d   z  } | dz  } W | S )	NrG   r(   rH   rJ   r,   rx   r   r   )ry   rO   )r   ri   s     r   lssrtrtr     s    
CS[SSU_SSWSSYSSYV  Jrd   z/playz/pc                     d} d}t               }d}|dz  }|dz  }	 |dt        t        d   d         z   d	z   t        t        d   d
         z   dz   t        t        d   d         z   dz   t        d   d   z   z  }|dz  }|D ]2  }|d
   }|dz   }|dz  }|d| dz  }|d| dz  }||z  }|dz  }|dz  }4 |S # t        $ r}|dz  }Y d }~Qd }~ww xY w)Nrv   z\\ll\c\wxvddata\mp3rG   zY
<head>
    <meta name="viewport" content="width=device-width, initial-scale=2">
</head>
r   rJ   r3   r   r   r4   r   rL   rH   r   r   r   zg
        <audio controls playbackRate=0.75  style="width:100%;height: 60px">
        <source src="/mp3/uY   " type="audio/mpeg">
        您的浏览器不支持此音频格式。
        </audio>
r   r   r   )readbili3adsrO   r   r   )m4adirmp3dirrs   r   r   r)   adnamemp3fs           r   	mp3listrtr     sB    F!F
.E
C 
 C
 OCU3y}Q'((0Yr]15E1FFwNsS\]_S`abScOddehhirsuivwxiyyy KCtF]S & ! 	 	dV1%%VVV  J#  Rs   AB7 7	C C

Cz/ttshisc                      d} t        t              D ]c  }|d   }|d   }|d   }| |z  } | dz  } | dz  } | |d    z  } | dz  } | dz  } | |d	    z  } | d
z  } | |d    z  } | d| dz  } | dz  } | | z  } | dz  } e | S )NrG   r   rj   r   rH   idx:r   zcnt/tot:r4   r   rL    <font color="red"></font>r   )reversedr   )r   r)   r   dtttsers        r   ttshisrtr     s    
Ci tQ4dRSV1SZ1S1#E7'22SV! !" Jrd   z/trshisc                     d} t        t              D ]r  }|d   }|d   }|d   }|d   }| |dz   z  } | dz  } | |d    z  } | dz  } | d	|d
    z  } | dz  } | d|d    z  } | dz  } | d| z  } | d| dz  } | dz  } | | z  } | dz  } t | S )NrG   r   rj   r      rH   zadid:r   zsrtid:r4   r   rL   znottrs:r   r   r   )r   r   )r   r)   nottrsrC   r   r   s         r   trshisrtr     s    
Ci tddQ4RVW1SqtfSQqTF^Sx  #E7'22SV% !& Jrd   z/joinclipshisc                  H    d} t        t              D ]  }| | z  } | dz  }  | S )NrG   r   )r   hisjoinsrtclips)r   r)   s     r   joinclipshisrtr     s1    
Co&V ' Jrd   c           	         t        j                  t              }|j                         }	 d}d}|j	                  ||||f      }	|j                         }	d}|j	                  || f      }	|	j                         }
t        d|d|
d          t        t        j                  j                               dd }t        j                  | |||
d   |||f       |
d   dk(  rGt        d	       d
|  }|j	                  |      }	d|  }|j	                  |      }	|j                         }	|j                          |j                          y # t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          |j                          w xY w)NzIupdate srts set en=?,trser=?,dt=datetime('now','localtime') where rowid=?zOupdate srts set en=?,trser=?,trsenddt=datetime('now','localtime') where rowid=?z0select count(*) from srts where adid=? and en=""zrrr end trs end,idx:u
   未译数:r   r   z
ad trs endzlupdate srts set bili=2,bilidt=datetime('now','localtime'),adtrsenddt=datetime('now','localtime') where adid=zjupdate ads set bili=2,bilidt=datetime('now','localtime'),trsenddt=datetime('now','localtime') where rowid=r9   )sqlite3connectdbfilecursorexecutecommitfetchoner   rO   ro   rp   r   appendr   close)r   srtidrJ   rC   r,   	trsernameconncursqlstrrer   rp   r   s                r   save4trsendr     s|   ??6"D
++-C_e;;vuU512;;=F;;vtg&
++-$Sad;!!%%'(2.$uS1eIcBCQ47, G  HL  GM  PF{{6"B E  FJ  EK  NF {{6"B{{}B 			

	  eB 			

s*   C7E 	E"EE% E""E% %"Fc                     | dz   }	 t        j                  |      }t        dt        t	        |      dz               t	        |      dkD  S # t
        $ r}t        d|       Y d }~y d }~ww xY w)Nr   zmp3 len(s):  r   zdetecting mp3 file:)r   	from_filer   intr?   r   )r   r   totorgadr   s       r   combinedmp3okr     sd    	D(''-mCHd 2348}Q (#B''(s   AA 	A*A%%A*c                     d}t         j                  j                  |t         j                  j                  |            }ddd| dd| |g}t	        j
                  |d       y )	Nz	/xtrs/pubffmpeg-y-iz	-filter:azatempo=T)check)rR   rV   rW   basename
subprocessrun)orgr   speed
target_dirdstcmds         r   	createpubr     sY    J	j"''"2"24"8	9C$cwug&C
 NN3d#rd   c           	         t        t        j                  j                               dd }t        j	                  | d|  d|        |dz   }|dz   }	 t        j                  |      }t        j                  d      }t        j                         }	d	}
d	}d	}d}t        |      D ]  \  }}t        j                        }|d
   }|d
   |z
  |dz  k  r|dz  }|	||z   |z   z  }	|t        |      dz
  k(  r||
d  }n||dz      d
   }||
| }d| z  d|z  z   dz   }	 |	||z   |z   |z   z  }	|dz  }|d   }
|d   } t        t        j                  j                               dd }t        j	                  | d|  d| d|        d}t        j                  j                  |t        j                  j!                  |            }t#        j$                  ddd      5 }|j&                  }	 |	j)                  |d       t+        j,                  ||       	 d d d        t/        ||       d	}t        |      D ].  \  }}d| z  d|z  z   dz   }	 t        j0                  |       |dz  }0 t        t        j                  j                               dd }t        j	                  | d|  d| d|        y # t        $ rT}t        d|       	 t        j                  |      }n&# t        $ r}t        d|       Y d }~Y d }~y d }~ww xY wY d }~d }~ww xY w# t        $ r}t        d|       |	||z   z  }	Y d }~d }~ww xY w# w xY w# 1 sw Y   /xY w# t        $ r}t        d|       Y d }~4d }~ww xY w)Nr   r   rH   r   r[   r9   i  )durationr   r5   rL   r4   %09d-%04dzwarn:
   z
 clip cnt:z\\ll\d\wxvddatawbF)suffixmodedeleter   )formatz del clip cnt:)rO   ro   rp   r   r   r   r   r   r   silentemptyr;   r?   rR   rV   rW   r   tempfileNamedTemporaryFilenameexportshutilcopy2r   remove)r   r'   r   rp   r   orgadfr   r   slcdstadstarttsclipcntlastendintervalrJ   rB   clipadevrcliptstart	cut_audioendtsr   target_filetmp	temp_path
delclipcnts                             r   jnadsegsr    s   H!!#$Qr*CcU!D66(34	D&=F''/ 	S)C



EGGGHW%C
 ''/!fq6'>(1*$3JE8C<((EGQ *I#a%.#E /ItGCK'.	#9s?8+C//EQJG BB5 &6 	H!!#$Qr*CcU!D66(*WIFG#J'',,z277+;+;D+ABK		$	$Fe	LPSHH		LL5L1LL;/ 
M" k$JW%CtGCK'.	IIfMJ	 & 	H!!#$Qr*CcU!D66(.	JKO  eR	!++D1H 	%F	 F  	#'"9s?"E	#   
M	L0  	%OO	s   J. LL>')L9M.	L7LKL	K=#K8/L8K==LL	L6L11L69L;;L>>M	M+M&&M+r   )maxleni  c                    t        | ||       	 t        j                  t              }|j	                         }d|  }|j                  |      }	d| d|  }|j                  |      }	|j                         }	j                          j                          y # t        $ r}
t        d|
       Y d }
~
;d }
~
ww xY w# j                          j                          w xY wNzEupdate srts set bili=3,bilidt=datetime('now','localtime') where adid=zFupdate ads set bili=3,bilidt=datetime('now','localtime'),tts=1,ttscnt=z where rowid=r9   )
r  r   r   r   r   r   r   r   r   r   )r   srtsdatar   r   r   totsrtsr   r   r   r   r   s              r   jnadsegsandupdatedbr  f  s    T(6"v&kkm \\`[ad;;v\]d\eerswrx{;;v;;= 			

	  eB 			

s*   A(B 	B7!B2-B: 2B77B: :"Cc                    t        | ||       	 t        j                  t              }|j	                         }d|  }|j                  |      }t        |      }d| d|  }|j                  |      }|j                         }j                          j                          y # t        $ r}t        d|       Y d }~;d }~ww xY w# j                          j                          w xY wr  )r  r   r   r   r   r   r?   r   r   r   r   )	r   r  r   r   r   r   r   r  r   s	            r   r  r  w  s    T(6"v&kkm \\`[ad;;vH\]d\eerswrx{;;v;;= 			

	  eB 			

s*   A3B# #	C,B=8C =CC "C'c           	      f    t        j                  t        | |||||f      }|j                          y )N)targetargs)	threadingThreadr  r  )r   r  r   r   r   r  threads          r   
jnadsegthdr$    s0    "8F5w7F LLNrd   rG   c           	      6   t        j                  t              }|j                         }	g }
	 d}|	j	                  ||f      }|j                         }|d   dz   }t        t        j                  j                               dd }t        j                  ||||||df       d}|	j	                  |||f      }t        d||||       d	}|	j	                  |||| f      }|j                         }||k  r"	 |	j                          |j                          y d
}t         j                  |_        |	j	                  ||f      }|j!                         }
	 |	j                          |j                          t        d       t        t        j                  j                               dd }t%        ||
||| |       y # t"        $ r6}t        d|       Y d }~|	j                          |j                          y d }~ww xY w# |	j                          |j                          w xY w)Nz6select count(*) from srts where adid=? and ttsenddt>""r   r4   r   r   r   z%update ads set ttscnt=? where rowid=?z#ttt end tts end, srtidx/ttscnt/tot:zYupdate srts set tts=1,ttser=?,ttsenddt=datetime('now','localtime'),ttsdur=? where rowid=?2select rowid,* from srts where adid=? order by idxr9   	all ttsed)r   r   r   r   r   r   rO   ro   rp   r   r   r   r   r   Rowrow_factoryfetchallr   r$  joinadsrtclip)r   r   r   r   r  srtidx	ttsernamedurr   r   r  r   r   r   ttscntrp   r   s                    r   updatettsinfor0    s   ??6"D
++-C HL;;vtg&
++-tAv!!%%'(2.&s9QGH;;;vvdn-3F6'&Qo;;vuS/0;;='> 			

 I";;;;vtg&
 			

	+H!!#$Qr*C
 tHVE%8
  eB		

 			

s0   CF4 :F4 4	G3=G.	G6 .G33G6 6"Hz/readsrt/<srtf>/<int:trser>c                 f    t         5  t        |       }t        |      cd d d        S # 1 sw Y   y xY wrQ   )lockr.   r   )r(   r,   r   s      r   	readsrtrtr3    s     	t} 
s   '0z/reqstc/<int:trser>c                     t         5  t        |       \  }}}a|a|a|at        |||t              cd d d        S # 1 sw Y   y xY wrQ   )r2  r|   r   r   r   r   r   )r,   r(   rz   r   s       r   reqstcrtr5    sA     
'1%'8&\%$tLv6 
s	   (9Az*/savetrser/<srtf>/<int:stcidx>/<int:trser>c                 V    t         5  t        | ||       	 d d d        y# 1 sw Y   y xY wNv)r2  r0   )r(   r/   r,   s      r   rN   rN     s    	4u% 
s   (r3   zL/savesrt/<int:trser>/<int:adid>/<int:srtid>/<int:idx>/<path:enstr>/trsernamezR/savesrt4trs/<int:trser>/<int:adid>/<int:srtid>/<int:idx>/<path:enstr>/<trsername>c                 $    t        ||||| |       yr7  )r   )r,   r   r   rC   rJ   r   s         r   savertr:    s     U3uU95rd   z/resetcn/<int:adid>c                     t        |        yr7  )resetcnr   s    r   	resetcnrtr>        DMrd   z/reseten/<int:adid>c                     t        |        yr7  )resetenr=  s    r   	resetenrtrB    r?  rd   z/resettts/<int:adid>c                     t        |        yr7  )resetttsr=  s    r   
resetttsrtrE    s    TNrd   z/mp3/<srtf>c                     t        | d      S )N
audio/mpegmimetype)r   )r(   s    r   mp3rtrJ    s     TL11rd   z/srt/<srtf>c                 >   d}t         dz   | z   } t        |        t        |       }t        |      D ]\  \  }}|t	        |dz         z  }|dz  }|t	        t        |            z  }|dz  }	 |t	        |d         z  }|dz  }	 ||d   z  }|dz  }^ |S #  Y xY w#  Y xY w)	NrG   \r4   r   rH   r,   r   r   )r_   r   r.   r;   rO   r?   )r(   r   r   rJ   rB   s        r   ensrtrtrM    s    
C	T$D	$K	T	DT?CSQZSST^S	S\""C 	S	TNC 	V # J		s   )B BBBz/cnstr/<int:adid>c                 V   d}t        |       }t        |      D ]w  \  }}|t        |dz         z  }|dz  }|t        t        |            z  }|dz  }	 |t        |d   dz        z  }|dz  }|t        |d   dz        z  }|dz  }||d	   z  }|d
z  }y |S # t        $ r
}Y d }~d }~ww xY w)NrG   r4   r   rH   r       @@-endrx   r   readsrtsr;   rO   r?   r   r   r   r   rJ   rB   r   s         r   cnsrtrtrU    s    
C	$DT?CSQZSST^S	S\&())CHCSZ&''CHCTNC 	V # J  		s   :B	B(#B(z/srt/<int:adid>c                 z   d}t        |       }t        |      D ]  \  }}|t        |dz         z  }|dz  }|t        t        |            z  }|dz  }	 |t        |d   dz        z  }|dz  }|t        |d   dz        z  }|dz  }||d	   z  }|d
z  }||d   z  }|dz  }|dz  } |S # t        $ r
}Y d }~d }~ww xY w)NrG   r4   r   rH   r  rO  rP  rQ  rx   z<font color=blue>r   r   r   rR  rT  s         r   srtrtrW  !  s    
C	$DT?CSQZSST^S
	S\&())CHCSZ&''CHCTNC$$CTNCNC 	V! #" J  		s   AB''	B:5B:z/en/<int:adid>c                 p   d}t        |       }t        |      D ]  \  }}|t        |dz         z  }|dz  }|t        t        |            z  }|dz  }	 ||d   z  }|dz  }|t        |d   dz        z  }|dz  }|t        |d	   dz        z  }|dz  }||d
   z  }|dz  } |S # t        $ r
}Y d }~d }~ww xY w)NrG   r4   r   rH   r,   r  rO  rP  rQ  r   r   rR  rT  s         r   enrtrY  7  s    
C	$DT?CSQZSST^S		WCHCS\&())CHCSZ&''CHCTNC 	V #  J  		s   AB""	B50B5z/dldsrts/<int:adid>c                 h    t        |       }|D cg c]  }t        |       }}t        |      S c c}w rQ   )rS  dictr   )r   r   rowr   s       r   	dldsrtsrtr]  L  s2    ~B!#$#DID$4= %s   /c                 &   | }| d d dz   }t         j                  j                  |      ry | d d dz   }t        |      }t	        |t
              sy t        |      dk  ry t        |      D ]&  \  }}d|vs|||d   ddd}|j                  |       ( y )	Nrh   r   ri   r4   r   r   rG   r(   rJ   rx   r   r,   )	rR   rV   existsr.   
isinstancelistr?   r;   r   )r)   ry   r(   r   r   rJ   rB   newsrts           r   ccsrtsrd  S  s    	
D	
3BD	ww~~d	
3BD	T	DdD"
4y{T?Cs?cs6{2NFKK #rd   c                  \    t         j                   j                         j                         ay rQ   )ro   rp   rr   mlstnfiletimer   rd   r   setmlstnrg  b  s    ##'')335Mrd   c                     t                t        t        d      } t        | d d      } | D ]  }|}|d d dz   }t        j
                  j                  |      r.t        j                  j                  t        j
                  j                  |            }|j                  d      }t        j
                  j                  |      }	 t        j
                  j                  |      t        j                  j                         t        j                  d	      z
  j                         k  rt        d
|        y 	 t        j                  j                  t        j
                  j                  |            }|j                  d      }|d d dz   }t        |      }t!        |t"              st%        |      dk  rd}t'        |      D ]*  \  }	}
d|
vs||	|
d   ddd}t(        j+                  |       ,  y #  Y xY w)Nr[   c                     t         j                  j                  t         j                  j                  t        |             S rQ   r]   r`   s    r   rb   zfreshfileinit.<locals>.<lambda>i  "    "''*:*:277<<Q;O*Prd   Tre   rh   r   %Y-%m-%d %H:%M:%S   rk   rm   ri   r4   r   r   rG   r_  )rg  rY   r_   rn   rR   rV   r`  ro   fromtimestampr^   strftimerp   rq   rr   r   r.   ra  rb  r?   r;   ry   r   )myfilesr)   r(   r   	date_timeformatted_date_time	lastfiletr   enstrsokrJ   rB   ri   s               r   freshfileinitrt  e  s   Jc&)G7 PZ^_GsVE\77>>$%%33BGG4D4DT4JK	'001DE''""1%		ww"H$5$5$9$9$;H<N<NTU<V$V#a#a#ccoa( d
 %%33BGG4D4DT4JK	'001DEsVE\$&t9Q; GC3 sFBOC  '5 	s   A/G99G>c                  n   d} t         }t                t        t        d      }t	        |d d      }|D ]  }|}	 t
        j                  j                  |      }t
        j                  j                  |       t        j                  j                  t
        j                  j                  |            }|j                  d      }t        d|        t
        j                  j                  |      } | |k  r y 	 |d d	 d
z   }t        |t                y # t        $ r}	t        d|	       Y d }	~	d }	~	ww xY w)Nr   r[   c                     t         j                  j                  t         j                  j                  t        |             S rQ   r]   r`   s    r   rb   zfreshfileloop.<locals>.<lambda>  rj  rd   Tre   rk  u   最后修改时间: r9   rh   ri   )rf  rg  rY   r_   rn   rR   rV   r^   ro   rm  rn  r   r   rd  ry   )
rr  lastmlstnfiletimero  r)   r(   filetimerp  rq  rs   r   s
             r   freshfileloopry    s   I#Jc&)G7 PZ^_G	WW%%d+HGGT" ))778H8H8NOI"+"4"45H"I()<(=>?gg&&q)I++ , sVE\tD3 *  	%O	s   B=D	D4D//D4c                      d} t         D ]  }	 t        |d         dk(  r y  | r+t         D ]!  }	 t        |d         dkD  rt        d|       ~# y y #  Y KxY w#  Y 1xY w)NTr   r   zexpire:)ry   r?   r   )idleri   s     r   expsrtsr|    sx    	D	3t9~q  !  Cs4y>!#)C(	  	s   AAAAc                      t                t        t              dkD  r	 	 t                t	                t        j                  d       *)Nr   <   )rt  r?   ry   r|  ry  timesleepr   rd   r   readsrtfilertnr    s2    O
4y{
	

2 rd   c                 ~   t        j                  t              }|j                         }	 d}|j	                  || d   | d   f      }|j                         }|j                          |j                          y # t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          |j                          w xY w)Nz-insert into ads (name,createtime) values(?,?)r4   r   r9   	r   r   r   r   r   r   r   r   r   )newadr   r   r   r   r   s         r   appendnewadr    s    ??6"D
++-CC;;vuQxa12;;= 			

	  eB 			

s)   ,A8 8	BBB BB "B<c                     d|  }t        j                  |      }t        | d      5 }|j                  |j                         d d d        y # 1 sw Y   y xY w)Nzhttp://devv.cc:8888/play/r   )r   getr%   writecontent)fnamer   rt   codes       r   	dldadfiler    sD    $UG,CSC	eD	T

3;; 
		s   AAc                      t                t               } t        | d          | d   }	 t        |      }t        |       |r'|g k7  r"t	        |d   dz          t        |       |d   }@t        j                  d       U)Nr   r4   r[   r   )input	readtopadr   reqnewadr  r  r  r  )refadrefdtr  s      r   r  r    sr    	G
+E	%(O
(E
uoeUBYeAhvo&(E

2 rd   c                  &   t        t        d      } t        | d d      } | D ]  }|d d dz   }	 t        j                  |       	 |d d dz   }g }t        |dd	
      5 }t        j                  |      }t        |      D ]  \  }}t        ||       |d=  	 d d d        t        |dd	
      5 }t        j                  ||       d d d         y  y # t
        $ r
}Y d }~d }~ww xY w# 1 sw Y   PxY w# 1 sw Y    y xY w# t
        $ r
}Y d }~d }~ww xY w)Nr[   c                     t         j                  j                  t         j                  j                  t        |             S rQ   r]   r`   s    r   rb   zresetsrt.<locals>.<lambda>  rj  rd   Tre   rh   r   ri   r   r    r!   r   r   )rY   r_   rn   rR   r  r   r%   r   r:   r;   r   r&   )ro  r)   r   r   r(   ry   rJ   ri   s           r   r   r     s   c&)G7 PZ^_GsVE\	IIdO	3BDDd301YYq\(GC#cND	  / 1
 d301		$q! 1!   		
 10
 1 		sY   CC=8C$C=+C0C=	C!C!$C-	)C=0C:	5C=:C==	DDzdpd.dbc                 b    d}| j                  |||f      }|j                         }|d   }|dk7  S )Nz0select count(*) from srts where adid=? and idx=?r   )r   r   )r   r   r,  r   r   r   cnts          r   	srtexistsr    s8    BF
{{64-(BkkmA	!C6Mrd   c                    t        j                  t              }|j                         }	 t	        |      D ]W  \  }}|d   }|d   }|d   }	t        || |      rd}
|j                  |
|||||	| |f      }>d}
|j                  |
| |||||	f      }Y d|  }
|j                  |
      }|j                         }|j                  |j                          |j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          |j                          y# |j                          |j                          w xY w)	Nr   r  rQ  supdate srts set adname=?,idx=?,cn=?,start=?,end=?,en="",ttsenddt=datetime('now','localtime') where adid=? and idx=?ninsert into srts (adid,adname,idx,cn,start,end,en,ttsenddt) values(?,?,?,?,?,?,"",datetime('now','localtime'))"update ads set bili=1 where rowid=r9   r   r   r   r   r   r;   r  r   r   	lastrowidr   r   r   didr   r   ry   r   r   rJ   ri   rx   r  rQ  r   r   r   s                r   
savecnsrt0r    s2   ??6"D
++-C GC6{Bg,EE
CT#& R;;vvc"U3tC&HI M;;vtF3r%&DE ' 9A;;v;;=}} 			

	  eB		

 			

*   BC" "	D+C<7D& <DD& &"Ec                    t        j                  t              }|j                         }	 t	        |      D ]W  \  }}|d   }|d   }|d   }	t        || |      rd}
|j                  |
|||||	| |f      }>d}
|j                  |
| |||||	f      }Y d|  }
|j                  |
      }|j                         }|j                  |j                          |j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          |j                          y# |j                          |j                          w xY w)Nr   r4   rL   r  r  r  r9   r  r  s                r   	savecnsrtr  (  s2   ??6"D
++-C GC1vBa&EACT#& R;;vvc"U3tC&HI M;;vtF3r%&DE ' 9A;;v;;=}} 			

	  eB		

 			

r  c                    t        j                  t              }|j                         }	 d|  }|j	                  |      }d|  }|j	                  |      }|j                         }|j                          |j                          y # t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          |j                          w xY w)Nzdelete from srts where adid=z"update ads set bili=0 where rowid=r9   r  r   r   r   r   r   r   s         r   r<  r<  O  s    ??6"D
++-C
24&;;;v8A;;v;;= 			

	  eB 			

s)   <B 	B'B"B* "B''B* *"Cc                    t        j                  t              }|j                         }	 d|  }|j	                  |      }d|  d}|j	                  |      }|j                         }|j                          |j                          y # t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          |j                          w xY w)Nz*update srts set en="",trser="" where adid=r  z and bili>1r9   r  r  s         r   rA  rA  ]  s    ??6"D
++-C
@I;;v8kL;;v;;= 			

	  eB 			

)   =B	 		B(B#B+ #B((B+ +"Cc                    t        j                  t              }|j                         }	 d|  }|j	                  |      }d|  d}|j	                  |      }|j                         }|j                          |j                          y # t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          |j                          w xY w)Nz6update srts set tts=0,ttser="",ttsenddt="" where adid=z"update ads set bili=2 where rowid=z and bili>2r9   r  r  s         r   rD  rD  k  s    ??6"D
++-C
LTFU;;v8kL;;v;;= 			

	  eB 			

r  c                    t        j                  t              }t         j                  |_        |j                         }d}d}	 |j                  || f      }|j                         }||j                          |j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          |j                          y # |j                          |j                          w xY w)NzLselect rowid,* from srts where length(cn)>0 and en="" order by createdt descr&  r9   )r   r   r   r(  r)  r   r   r*  r   r   r   )addidr   r   r   r   rt   r   s          r   rS  rS  y  s    ??6"D{{D
++-C^FDF;;vuh'KKM 			

	  eB		

 			

s*   $B	 		B(B#C #B((C "C/z$/savecnsrts/<int:adid>/<path:adname>POST)methodsc                 >    t         j                  }t        | ||       yr   )r   r   r  rO   )r   r   ry   r   ri   s        r   savecnsrtsrtr    s    	Dd6$rd   c                     t        j                  t              } | j                         }d}	 |j	                  |      }|j                         }||j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          g S # |j                          | j                          w xY w)Nzselect rowid,* from ads where (bili=0 or bili is NULL) and datetime(createtime)>datetime('now', '-22 day') order by createtime descr9   	r   r   r   r   r   r*  r   r   r   r   r   r   r   rt   r   s         r   
readnewadsr    s    ??6"D
++-C VF;;vKKM 			

	  eB		

I 			

)   "A0 0	B9B
B5 
BB5 5"Cc                     t        j                  t              } | j                         }d}	 |j	                  |      }|j                         }||j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          g S # |j                          | j                          w xY w)Nz9select rowid,* from ads where bili=3 order by bilidt descr9   r  r  s         r   r   r     s    ??6"D
++-CKF;;vKKM 			

	  eB		

I 			

r  c                 0   t         5  t        j                  t              }|j	                         }d|  d}d|  d}d}	 |j                  |      }|j                         }|s*	 |j                          |j                          d d d        yt        |      dkD  rc|d   }d}|j                  || |f      }|j                          t        d	||       ||j                          |j                          cd d d        S 	 |j                          |j                          	 d d d        y# t        $ r}	t        d
       Y d }	~	Cd }	~	wt        $ r}	t        d|	       Y d }	~	`d }	~	ww xY w# |j                          |j                          w xY w# 1 sw Y   y xY w)Nz>select rowid,* from srts where en="" and (trser=="" or trser==z ) order by createdt desc LIMIT 1z1select rowid,* from srts where en="" and (trser==zS or trsstartdt<datetime('now','-5 minutes') or trser=="") order by createdt LIMIT 1zselect rowid,* from srts where en=="" and (trsstartdt=="" or strftime('%s','now','localtime') - strftime('%s',trsstartdt)>300) order by createdt LIMIT 1r   r   zLupdate srts set trser=?,trsstartdt=datetime('now','localtime') where rowid=?zrrr start trs start,trser/srt:u   无结果for trs startr9   )r2  r   r   r   r   r   r   r   r?   r   r   r   rA   )
r,   r   r   r   r   r   rt   r   sqlr   s
             r   
reqsrt4trsr    sa   	v&kkmTUZT[[{~Gw  Ob  e o	{{6"BC IIKJJL7 
 3xz!ff;;sE%=16yE IIKJJL7 
  IIKJJL9 
*  	,*++ 	%OO	 IIKJJL7 
sl   8F #D)$ FAD) F>E'?!F)	E$2E=E'E$EE'E$$E''"F		FFc                     t        j                  t              } | j                         }d}	 |j	                  |      }|j                         }||j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          g S # |j                          | j                          w xY w)Nzfselect rowid,* from ads where datetime(createtime)>datetime('now', '-30 day') order by createtime descr9   r  r  s         r   r   r     s    ??6"D
++-CxF;;vKKM 			

	  eB		

I 			

r  c                     t        j                  t              } | j                         }d}	 |j	                  |      }|j                         }||j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          y# |j                          | j                          w xY w)Nzzselect rowid,* from ads where bili==2 and datetime(createtime)>datetime('now', '-30 day') order by createtime desc limit 1r9   r   	r   r   r   r   r   r   r   r   r   r  s         r   
readad4ttsr    s    ??6"D
++-C MF;;vKKM 			

	  eB		

 			

)   "A0 0	B9B
B4 
BB4 4"Cc                  F   t        j                  t              } | j                         }d}d}d}d}d}d}	 |j	                  |      }|j                         }|d   }d}|j	                  ||f      }|j                         }|r6|d   |d   |d	   |d
   |d   f|j                          | j                          S 	 |j                          | j                          y# t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          | j                          w xY w)NMselect rowid,* from srts where tts is NULL or tts<1 order by createdt limit 1^select rowid,* from srts where tts is NULL or tts<1 and length(en)>1 order by createdt limit 1ztselect rowid,* from ads where trscnt>0 and trscnt<totsrts and (tts is NULL or tts<1) order by totsrts-trscnt limit 1ztselect rowid,* from ads where trscnt>0 and ttscnt<totsrts and (tts is NULL or tts<1) order by totsrts-trscnt limit 1zEselect rowid,* from ads where bili==2 order by totsrts-ttscnt limit 1r   zHselect rowid,* from srts where adid=? and (tts is NULL or tts<1) limit 1r4   rL   r   rl  r9   r   r  )r   r   r   r   rt   r   r   s          r   readsrt4tts_oldr    s   ??6"D
++-C_FpFpF GF GFWF;;vKKMV^;;vtg&KKMq6#a&QAs1v5 			

 
 			

  eB 			

s0   A"C :C> 	C;%C61C> 6C;;C> >"D c                     t        j                  t              } | j                         }d}d}d}d}d}	 |j	                  |      }|j                         }|rI|d   }|d   }|d   }d	}|j	                  ||f      }|j                         }	|	d
   }
t        d|d|
|       nd}|j	                  |      }|j                         }|s"	 |j                          | j                          y|d   }|d   }|d   }d	}|j	                  ||f      }|j                         }	|	d
   }
t        d|d|
|       d}|j	                  ||d
   f      }| j                          |d
   |d   |||d   |
f|j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          y# |j                          | j                          w xY w)Nr  r  select rowid,* from srts where tts is NULL or tts<1 and length(en)>1 and (strftime('%s',ttsstartdt) is null or strftime('%s', 'now') - strftime('%s',ttsstartdt)>300) order by trsenddt limit 1select rowid,* from srts where tts is NULL or tts<1 and length(en)>1 and (strftime('%s',ttsstartdt) is null or strftime('%s', 'now') - strftime('%s',ttsstartdt)>300) order by adtrsenddt limit 1select rowid,* from srts where adtrsenddt>"" and ((ttsenddt=="" or ttsenddt is null) and (strftime('%s',ttsstartdt) is null or strftime('%s','now','localtime') - strftime('%s',ttsstartdt)>300)) order by adtrsenddt limit 1r4   r   rL   &select count(*) from srts where adid=?r   '   ttt start tts start(trs已完),idx/tot:r   select rowid,* from srts where trsenddt>"" and (ttsstartdt=="" or (ttsenddt>"" and strftime('%s', 'now','localtime') - strftime('%s',ttsstartdt)>300)) order by trsenddt limit 1r   '   ttt start tts start(trs未完),idx/tot:Dupdate srts set ttsstartdt=datetime('now','localtime') where rowid=?rl  r9   
r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   r   r,  r   
totsrtsret
totsrtsrecr  r   s               r   
reqsrt4ttsr  	  s   ??6"D
++-C_FpF RF TF pF(;;vKKM
 QDq6Fq6F@F{{64'2J!**,JqMG;F3wvV KFF#CC" 			

# QDq6Fq6F@F{{64'2J!**,JqMG;F3wvVZ;;vs1vi(1vc!fVF3q6'9 			

	  eB		

 			

s1   BF	 (B F	 		F(F#G #F((G "G/c                     t        j                  t              } | j                         }d}d}d}d}d}d}	 |j	                  |      }|j                         }|rI|d   }|d   }|d	   }d
}|j	                  ||f      }|j                         }	|	d   }
t        d|d|
|       nd}d}|j	                  |      }|j                         }|s"	 |j                          | j                          y|d   }|d   }|d	   }d
}|j	                  ||f      }|j                         }	|	d   }
t        d|d|
|       d}|j	                  ||d   f      }| j                          |d   |d   |||d   |
f|j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          y# |j                          | j                          w xY w)Nr  r  r  r  r  a  
    select rowid, *
    from srts
    where adtrsenddt>""
    and (ttsenddt = "" or ttsenddt is null)
    and (
            ttsstartdt = ""
            or strftime('%s','now','localtime')-strftime('%s', ttsstartdt) > 300
        )
    order by adtrsenddt, adid, idx
    limit 1
    r4   r   rL   r  r   r  r   r  uL  
SELECT rowid, * 
FROM srts 
WHERE trsenddt > '' 
  AND IFNULL(ttsenddt, '') = ''  -- 核心前提：ttsenddt 必须为空（未完成）
  AND (
    IFNULL(ttsstartdt, '') = ''  -- 情况A：还没开始
    OR ttsstartdt < datetime('now', 'localtime', '-300 seconds') -- 情况B：开始了但超时
  )
order by trsenddt limit 1
r   r  r  rl  r9   r  r  s               r   	qrsrt4ttsr  <  s    ??6"D
++-C_FpF RF TF pFF&3;;vKKM
 QDq6Fq6F@F{{64'2J!**,JqMG;F3wvV KF
F F#CC" 			

# QDq6Fq6F@F{{64'2J!**,JqMG;F3wvVZ;;vs1vi(1vc!fVF3q6'9 			

	  eB		

 			

s1   BF ,B F 	F,F'"G 'F,,G "G3c                     t        j                  t              } | j                         }d}	 |j	                  |      }|j                         }||j                          | j                          S # t        $ r}t        d|       Y d }~nd }~ww xY w	 |j                          | j                          y# |j                          | j                          w xY w)Nz8select rowid,* from ads order by createtime desc limit 1r9   r   r  r  s         r   r  r    s    ??6"D
++-CJF;;vKKM 			

	  eB		

 			

r  z/readbili0adsc                  ,    t               } t        |       S rQ   )r  r   )adss    r   readbili0adsrtr        C3<rd   z/reqsrt4trs/<trser>/<trsername>c                 0    t        | |      }t        |      S rQ   )r  r   )r,   r   r  s      r   reqsrt4trsrtr    s    5#C3<rd   z/dldad/<path:adf>c                 \    t         j                  j                  |       syt        | d      S )N)zFile Not Foundi  rG  rH  )rR   rV   r`  r   r@   r   r   )adfr   s     r   	dldadfsrtr    s"    77>>##S,//rd   z/dldinfo4tts/<ttser>c                 ,    t               }t        |      S rQ   )r  r   r   ri   s     r   readad4ttsrtr    r  rd   z/reqsrt4tts/<ttser>c                 d    t         5  t               }t        |      cd d d        S # 1 sw Y   y xY wrQ   )r2  r  r   r  s     r   reqsrt4ttsrtr    s    	Ks| 
s   &/zO/postadclip/<srtid>/<ttser>/<int:adid>/<int:totsrts>/<int:srtidx>/<path:adname>z[/postadclip/<srtid>/<ttser>/<ttsername>/<int:adid>/<int:totsrts>/<int:srtidx>/<path:adname>c           	          d}	 t         j                  d   }|r|j                  d|z  d|z  z   dz          t        | ||||||       |S # t        $ r}	t	        d|	       d}Y d }	~	/d }	~	ww xY w)Nr8  filer   r   r   r9   0)r   rs   saver   r   r0  )
r   r   r   r   r,  r  r-  rt   r)   r   s
             r   postadcliprtr    sx     	C
--
FF6$;wv~-f45 %d6'&CJ	  eBs   2A	 		A*A%%A*c                     dt        |        }	 t        j                  |      }|j                         S # t        $ r,}t        d|       t        j                  d       Y d }~i S d }~ww xY w)Nzhttp://devv.cc:8888/reqnewad/r9   r   )r   r   r  r   r   r   r  r  )r  r   rt   r   s       r   r  r    s\    (u7CLLxxz eB

2Is   $5 	A*!A%%A*c                  `   t        j                  t              } | j                         }d}	 |j	                  |      }|j                         }|D ]t  }|d   }|d   }t        |       d}|j	                  ||f      }|j                         }d}|D ]  }	|	d   }
t        |
      dkD  s|dz  } t        d|t        |             v 	 |j                          | j                          y# t        $ r}t        d|       Y d }~;d }~ww xY w# |j                          | j                          w xY w)	Nzselect rowid,* from ads orderr   r4   z%select rowid,* from srts where adid=?rl  zen/tot srts:r9   r   )
r   r   r   r   r   r*  r   r?   r   r   )r   r   r   r   rt   r   ridr   encntri   r   r   s               r   fixdbr    s
   ??6"D
++-C/F;;vKKMA!CQ4F&M?F{{63&)BCEq6r7191HE  .s3x0   			

  eB 			

s6   A:C) (C) D )	D2D>D DD "D-__main__werkzeugTi   u   698_罗永浩的十字路口r&  r9   c                    ddl }ddl}d}dD ]'  }| | }|j                  j                  |      s%|} n |st	        d|        yt	        d|        | d}|j                  j                  |      s |j
                  |       t	        dt        |        d       t        |       D ]B  \  }}	|	d	   }
|	d
   }|	d   }|dk(  rd}n}|t        |       dz
  k  r| |dz      d
   }||z   dz  }nLddl}	 ddddddd|g} |j                  |dd      }t        |j                  j                               }|dz  }|}|dz  }|dz  }||z
  }|j                  j                  |d|
dd      }ddd|dt        |      d t        |      d!d"d#d$|g}	  |j                  |ddd%d&'      }|j                  dk(  rt	        d(|
dd)|d*d+|d*d,       nt	        d-|
dd.|j                   dd/         E t	        d1|        y# t        $ r}t	        d|        |}Y d}~d}~ww xY w# t        $ r}t	        d0|
dd.|        Y d}~d}~ww xY w)2u   
        截取长音频为字幕句，时间修正逻辑：
        - 第0句：startpos=0, endpos=(下一句start + 前一句end)/2
        - 其他句：startpos=前一句endpos, endpos=(本句end + 下一句start)/2
        r   N)r   z.wavr[   u   未找到音频文件: u   找到音频文件: 	_segmentsu   开始截取音频，共 u    句...r   r5   r   r4   rL   ffprobez-verrorz-show_entrieszformat=durationz-ofz"default=noprint_wrappers=1:nokey=1T)capture_outputr   r   u     获取音频时长失败: segment_03dr   r   r   r   z-ssz-tz-acodec
libmp3lamez-ab128kr    ignore)r  r   r"   errorsu     已截取 [z] z.2fzs - su     截取失败 [z]:    u     截取异常 [u!   
完成！音频片段保存到: )rR   r   rV   r`  r   makedirsr?   r;   r   floatstdoutstripr   rW   rO   
returncodestderr)r  r   rR   r   
audio_filerX   	candidate
output_dirir\  rJ   r  rQ  startposprev_endpos
next_startendposr   r   total_durationr   startpos_sec
endpos_secr   output_file
ffmpeg_cmds                             r   split_long_audior    s    	 
+C!(3%(Iww~~i(&
	 , +F845$ZL12 xy)
ww~~j)BKK
#)#h-@A)FAsa&CFEb'C Av&3x=1$$%ac]1-

*a/ "!$dG_FWY^  aE  GQ  RC+Z^^C4PF%*6==+>+>+@%AN+d2F !K $d?L$J!L0H '',,zXc#Yd3KLK $js<(c(m<vJ;'
4d]dmuv$$)M#c"\#4Fd:VYJZZ[\],SISt9L8MNOk *r 	2:,?@G ! !8=> F!@  ;(S	RD9::;s2   5AH AH& 	H#	HH#&	I/IIr'  r   r   )g?)rG   r   )z???)verr  r   r   pydubr   r   urllib.parser   ro   r   loggingrR   r!  r  r<   flaskr   r   r   r   r   collectionsr	   r   r*   r0   rD   r.   r>   rY   ru   r_   r|   __name__appconfigr$   Lockr2  trsersr   router   r   r   r   r   r   r   r   r   r   r  r   r   r   r  r$  r0  r3  r5  rN   r   r   r   r   r:  r>  rB  rE  rJ  rM  rU  rW  rY  r]  rf  ry   rd  rg  rt  ry  r|  r  r  r  r   r   r  r  r  r<  rA  rD  rS  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  debug	getLoggerlogdisabledr   r   r   r   r   r   r  r   r(  r)  r   r   r*  r   r   r   r   r  rO   rp   r   rd   r   <module>r     sX            	    2 2  	&N
CHX ( Ho#

?  y~~K9t 3h hR ;  9  74  > 9 ( 9 , ? @($NL^ t
	
t
	T""$9v () *  !7 "7 78 9 			YZ_` a [  ! "  ! " !" # =9 9 = *   $  *  (  ! "  6"!F B  
, &N&N 16(C D"<22fO` ?  ,- .    !" #  ! "
 \flemnhrxqyz
 { o
4 z CI
'

J
'CCL 7??6"D
++-C 
D)FH	H";;;;vtg& 			

WAt Xv&	+H!!#$Qr*C
 Xf-E 2  eB 			

s*   8S) )T.	S<7T <TT $T(