
    zi7f                     x   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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Zd dlmZmZmZ ej                            ej                            ej                            ej                            e          d                               d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d d	l6T d
 Z7d Z8de9de9de:fdZ;d Z<d Z=d$dZ>d Z?d%dZ@ e jA        d          deBdeBde9de9d eBd!e9d"e9fd#            ZCdS )&    N)
ProxyErrorConnectionErrorConnectTimeoutReadTimeout)get_speech_timestamps
read_audio
save_audioz..)app)TELEGRAM_APISUBSOURCE_BASE_URLSUBSOURCE_API_KEYMOVIEO_TELEGRAM_API)(identify_seasons_from_irregular_filename)identify_episodes_from_irregular_filenameidentify_releaseidentify_episodesidentify_seasonsrun_commandlog_requestsend_request)MovieoDatabaseYOUR_REQUEST_CLOSEDdownload_videoget_video_duration_secondsget_random_secondconvert_to_mkv)*c                     t          | d          5 }|                    d          }d d d            n# 1 swxY w Y   |                    d          rdS |                    d          rdS dS )Nrb   s   PKzips   Rar!rarunknown)openread
startswith)pathfsigs      E/var/www/html/auto_sub_bot/celery_tasks/tasks/subtitle_sync_engine.pydetect_archive_type_from_filer+      s    	dD		 QffQii               ~~m$$ u		(	( u9s   377c                    |  d}t          j        t           |  d|           	 dt          j        |           fdt          j                  D             }t          j        t           |  d|           t           j                            |          rt          j	        |           t           j                                      rt          j                   d S d S # t           j                            |          rt          j	        |           t           j                                      rt          j                   w w xY w)Nz.rar.ziptemp_extraction)outdirc                 P    g | ]"}t           j                            |          #S  )osr'   join).0r(   temp_dirs     r*   
<listcomp>z&convert_rar_to_zip.<locals>.<listcomp>-   s)    IIIqh**III    )r2   renameDOWNLOAD_DIRpatoolibextract_archivelistdircreate_archiver'   existsremoveshutilrmtree)subtitle_idtemp_rarfilesr5   s      @r*   convert_rar_to_ziprE   %   s;   ###HI0{000(;;;	=$ (;;;;IIIIBJx4H4HIII< B B B BEJJJ 7>>(##8RYx%8%8%87>>(##<V]8%<%<%<%<%<<< 7>>(##8RYx%8%8%87>>(##<V]8%<%<%<%<<s   AC( (A)Eendpointqueryheadersc                    d}||d}	 t          j        t           |  | ||d          }nb# t          t          t
          t          f$ rB}t          d| d           t          j	        d           t          | ||          cY d }~S d }~ww xY w|j        dk    rd	 |j                                        D             }|                    d
          }|                    d          }	|                    dd          }
|dk    pd|
v o	d|
v o|	dk    }|r t          d           t          | ||          S |S t          |j         d           t          j	        d           t          | ||          S )Nz>http://apiec803a20e08d2684:driS9IZ2@res.proxy-seller.com:10000)httphttps   )rH   proxiestimeoutzProxy/Connection error (u%   ) — retrying request with new IP...      c                 b    i | ],\  }}|                                 |                                 -S r1   )lower)r4   kvs      r*   
<dictcomp>z(request_to_subsource.<locals>.<dictcomp>@   s.    NNNA		17799NNNr7   zcf-mitigated
connectionzcache-control 	challengezno-cacheprivatecloseuA   Cloudflare challenge detected — retrying request with new IP...u3    error detected — retrying request with new IP...)requestsgetr   r   r   r   r   printtimesleeprequest_to_subsourcestatus_coderH   items)rF   rG   rH   proxyrM   resperesp_headerscf_mitigatedconnection_typecache_controlis_challenges               r*   r`   r`   4   s   LEu--G>|1D8DUDDg_fprsssE > > >QQQQRRR
1#HeW========>
 3NN9K9K9M9MNNN#''77&**<88$(("==K' h=(fY--GfO_fLf 	
  	BUVVV'%AAA!VVVWWW
1#HeW===s   #- B
7BBBc                 f    t          j        | d          }d |D             }d |D             }||fS )Nutf-8encodingc                 ^    g | ]*}|j                                         |j        j        d z  +S      @@)textstripstartordinalr4   ss     r*   r6   z!get_sub_times.<locals>.<listcomp>V   s0    GGG1Gago&GGGr7   c                 ^    g | ]*}|j                                         |j        j        d z  +S rp   )rr   rs   endru   rv   s     r*   r6   z!get_sub_times.<locals>.<listcomp>W   s0    CCCqAFLLNNCAEMF"CCCr7   )pysrtr$   )sub_pathsubsstartsendss       r*   get_sub_timesr   T   sF    :h111DGGGGGFCCDCCCD4<r7   c           
      @   t          |           }t          j        ||f          }t          |          D ]}t          |dz   |          D ]}t	          t          | |         d                   t          | |         d                             }|dk    rd}nwt          j        t          j        | |         d         d |                   t          j        | |         d         d |                   z
            }t          j        |          }|x|||f<   |||f<   ӌ|S )N   r   i'  )lennpzerosrangeminabsarraymean)sub_times_listnsimilarity_matrixijmin_lendiffdiffss           r*   compare_subs_timingr   Z   s.   NA!Q((1XX E Eq1ua 
	E 
	EA#nQ/233S9J19M5N5NOOG!||H^A.q1(7(;<<H^A.q1(7(;<<=  wu~~@DDad#&71&=&=
	E r7          @c                     |                      d          }t          j         |          t          j        |          fdt          |          D             }||fS )Nr   )axisc                 2    g | ]\  }}|z  z   k     |S r1   r1   )r4   r   mavgstd	thresholds      r*   r6   z!find_outliers.<locals>.<listcomp>o   s0    MMM$!Q1sY_7L3L3LA3L3L3Lr7   )r   r   r   	enumerate)r   r   
mean_diffskeepr   r   s    `  @@r*   find_outliersr   k   sk    "''Q'//J
'*

C
&

CMMMMMM)J//MMMDr7   c                 .    	 t                     }t          j        |          }t          |          D ]3t          j         fdt          |          D                       |<   4t          t          j        |                    }n	#  d}Y nxY w|S )Nc                 X    g | ]&}|k    t                   |         z
            'S r1   )r   )r4   r   r   r   s     r*   r6   z$find_central_sub.<locals>.<listcomp>y   s:    #c#c#c1\]ab\b\bC
1
1(E$F$F\b\b\br7   r   )r   r   r   r   r   intargmin)r   r   	distancescentral_idxr   s   `   @r*   find_central_subr   s   s    	
OOHQKK	q 	e 	eA7#c#c#c#c#cPUVWPXPX#c#c#cddIaLL")I..//s   BB B      ?      ?      ?>  c                     	 t          j        |           }n*# t          $ r}t          d|            Y d }~dS d }~ww xY w	 g }g }	g }
t	                      }d}d}|r|D ]}|j        rt          |j                                                  dk    r|j        j	        dz  }|j
        j	        dz  }||z
  }||k    r|                    |           |                    |           |	                    |           |
                    |           |}|dz  }t          j        |          }g }d}t          |d           }|D ]E}|d	         |z  }|d
         |z  }||z
  }||z
  }||k    r||k    r|                    |           |}F|sdS d}d}|D ]J}t          j        ||z
            }t          j        |          }||         }||vr:|dz  }||k    r|dz  }K||z  } t%          | d          ||fS dS #  Y dS xY w)NzError opening subtitle: )r   r   r           r   r   rq   c                     | d         S )Nrt   r1   xs    r*   <lambda>z.calculate_smart_anchor_score.<locals>.<lambda>   s
    AgJ r7   )keyrt   ry      )rz   r$   	Exceptionr]   setrr   r   rs   rt   ru   ry   addappendr   r   sortedr   r   round)!subtitle_pathvad_segmentssilence_thresholdmin_speech_durationsync_windowsrr|   re   
sub_startssub_endsvalid_sub_objectsisolated_sub_indiceslast_sub_end_sec
temp_indexsubstart_secondsend_secondsgap_before_subaudio_anchorslast_vad_end_sec
sorted_vadseg	start_secend_secsilence_durationspeech_durationmatched_anchorsvalid_comparisonsanchor_timedifferencesclosest_idxmin_difffinal_scores!                                    r*   calculate_smart_anchor_scorer      s   z-((   ,,,---uuuuuF
"uu
 :	 $ $8 $CHNN$4$4 5 5 9 9$'I$5$>M"%'/F":K%25E%EN%):::,00<<<%%m444OOK000%,,S111'2$!OJ*--JM"2F2FGGGJ! 
+ 
+L2-	e*r/#,/?#? ")I"5#'888_Pc=c=c!((333#*    uO !, ) ) fZ+%=>> i44&{3&:::!Q&!{**#q(O),==KQ''(9/II5uus$    
>9>E	G8 A(G8 8G=sync_subtitles)queueadmin_user_id
request_idrequest_type_strimdb_id
title_type	file_namefile_idc                 j   |dv rd}n|dv rd}d|v rd}nd}dk    r+t          |          }	t          |          \  }
}
}d| d	|	 }n	d x}	}d| }t          |          }t          d
| d d| d|	 d| d           dt          i}t          d||                                          }	 |d         d         d         }n#  t                      5 }|                    d|d          }d d d            n# 1 swxY w Y   |d         d         }|dk    r=t          |d          \  }}}|t          ||          d}t          t          d|           t                       Y nxY wt          dd| d| d|                                          d         }fd}g }|st                      5 }|                    d|d          }d d d            n# 1 swxY w Y   |d         d         }|dk    r=t          |d          \  }}}|t          ||          d}t          t          d|           t                       |D ]}|d         D ]} ||          \  }}}
|d          pd}|	|k    r||k    sR|	|k    r|d k    sFd!|                                v s0d"|                    d#d$                                          v s|dk    r0t          d%| d&           |                    |d'                     nt#          |          d(k    r n|r*t          d)t#          |           d*           d} g }|D ]}!t          d+d,|! d-d.d/}t          dd0|! d1|          }"|"j        d2k    re|"j                            d3d4          }#d5|#                                v rt                       n$	 t+          t,           |! d6d7          5 }$|"                    d89          D ]}%|%r|$                    |%           	 d d d            n# 1 swxY w Y   t3          t,           |! d6          }&|&d:k    rt5          |!           t7          j        t,           |! d6d;          5 }'|'                                }(t#          |(          dk    rv|(D ]r})dk    r- ||)          \  }
}}
||k    r|)}*t          d<|* d=            n?5t<          j                             |)          \  }
}+|+d>v r|)}*t          d<|* d=            nsn|(d         }*t          d<|* d=           |'!                    |*t,                     d d d            n# 1 swxY w Y   t=          j"        t,           |! d6           t<          j                             |*           \  }
},|,d?k    rBt          d@|, dA           tG          t,           |* |,           |*                    |,d?          }*t=          j$        t,           |* t,           |  dB| d?           t          dC           |  dB| d?}*tK          |*           tM          |*           |dk    rtO          |*           t<          j        (                    tR           |*           rt=          j"        t,           |*            n't=          j$        t,           |* tR           |*            |                    |*           n#  Y nxY w| dz  } t          dD| dE           tU          tV          ||          \  }-}.|-r1t,           | dF}/t,           dG| dH}0t          dI           t,           |- }1dJdK|1dLdMdNdOdPdQg	}2	 tY          j-        |2tX          j.        tX          j.        dRS          }3|3/                                \  }4}5t          dT           t          ta          |4                     t          dU           t          ta          |5                     |41                                rLte          |41                                3                                d                   }6t          dV|6            nt          dW           dX}6n7# th          $ r*}7t          dY           t          |7           dX}6Y d }7~7nd }7~7ww xY wdZt,           |- d[}8tY          j5        tm          j7        |8                    8                                1                                }9te          |9          }:|6dk    rts          |6d\z            };d]|; d^|; d_}<n|6dk     rtu          |6          }=d`|= d_}<nda}<dbt,           |- dc|< dd|: de|/ df
}>tw          |>dg          st                       t          dh           	 tx          j=        >                    didjdkl          \  }?}@|@\  }A}B}C}D}E |C|/dmn          }Fdm}G |A|F|?|Gdodpdpdqr          }Hn8# th          $ r+}7t          ds|7 dt           t                       Y d }7~7nd }7~7ww xY wty          j?        |F          }I|HD ])}J|F|Jdu         |Jdv                  |I|Jdu         |Jdv         <   * |B|0|I|Gn           t          dw           g }Kg }L|D ]X}*t          jA        tR           |* tR           dx|*            |K                    dx|*            dy|0 dztR           |* dztR           d{|* d|
}Mtw          |Md}           	 t          j        tR           d{|* d~          }Nd }O|ND ],}P |O|PjC                  |P_C         |O|PjD                  |P_D        -|NE                    tR           d|* d~           t=          j$        tR           d|* tR           |*            # th          $ rA}7	 t=          j$        tR           d{|* tR           |*            n#  Y Y d }7~7 nxY wY d }7~7Rd }7~7ww xY w|KD ]}Q|                    |Q           t          d           i }R|D ]S}*t          tR           |* |H          \  }S}T}Ut          d|T d|U d|S d           i |R|*<   |S|R|*         d<   |T|R|*         d<   Tt          |RH                                d dR          }V|Vd         \  }W}X|W}*|Xd         }S|Xd         }Tt          d|* d=           d|v rtV          }Yd}Zd }[n2|Sdk    r|Tdk    rdk}[t          }Yd}Znt          d           dR}[tV          }Y| }Zt=          j$        tR           |* tR           | d?           | d?}*t          |*|           t          |*           t          d           dt,           |- dt,           d|- }\tw          |\d           t=          j"        t,           |-            t=          j$        t,           d|- t,           |-            |.dk    r#t          d|. d           t          |-|.          }-t          d           t          t,           |-           }]t          |]          }^|dk    r3t          d| d           t          |*           | d}*dR|Y|Z|[|-|*|S|]|^d	S dR|Y|Z|[|-|*|S|]dS ddkiS d S )N)zPersian SoftSubzPersian HardSubfarsi_persian)zEnglish SoftSubzEnglish HardSubenglishSoftSubr   r   z?searchType=imdb&imdb=z&season=z%
**********************
--- imdb id: z
--- title type: z
--- file release type: z
--- file season: z
--- file episode: z
**********************
	X-API-Keyzmovies/searchdatar   movieIdidstatus   )chat_idrr   sendMessage	subtitlesz	?movieId=z
&language=z
&limit=100c                     dk    r4t          |           }t          |           \  }}}|st          |           }nd x}}t          |           }|||fS )Nr   )r   r   r   r   )release_infoseasonepisode_found_episoderelease_typer   s         r*   extract_infoz3find_and_synchronize_subtitle.<locals>.extract_info   sh    ??=lKKF(9,(G(G%M1g  RCLQQ##FW'55w,,r7   releaseInforD   completezall episodes. z%
**********************
--- subtitle z added.
**********************
subtitleId
   z
**********************
--- zE subtitles download and extraction has begun. 
**********************zapplication/zipzattachment; filename="z.zip"zZIP file stream)r   contentTypecontentDispositionbody/z	/downloadrP   zContent-TyperW   z	text/htmlr-   wbi    )
chunk_sizer"   rz-
**********************
--- chosen subtitle: z
**********************).srt.assz.ssaz.vttr  z/
**********************
--- subtitle format is z6. we have to change it to srt. 
**********************r   zc
**********************
--- cleaning and preparation of the subtitles began.
**********************z%
**********************
--- download z# has begun. 
**********************z_original.wavspeech_z.wavzW
**********************
--- extracting audio from video file... 
**********************ffprobez-iz-show_entrieszstream=start_timez-select_streamsaz-ofzcsv=p=0T)stdoutstderrrr   z=== stdout ===z=== stderr ===u   زمان شروع صدا: u>   ffprobe هیچ خروجی‌ای برای start_time نداد!r   u-   یک خطای غیرمنتظره رخ داد:zffprobe -i "z6" -show_entries format=duration -v quiet -of csv="p=0"i  zadelay=|z,aresample=16000zatrim=start=zaresample=16000zffmpeg -i "z" -vn -af "z" -ac 1 -t z "z" -yz!Initial conversion to WAV failed.zL
**********************
--- speech recognition (VAD) 
**********************zsnakers4/silero-vad
silero_vadF)repo_or_dirmodelforce_reloadr   )sampling_rateg?i^  d   )r  r   min_speech_duration_msmin_silence_duration_msspeech_pad_mszG
**********************
--- error loading or running Silero VAD model: z 
**********************rt   ry   zP
**********************
--- syncing subtitles with Alass 
**********************	original_z/usr/local/bin/alass "z" "fixed_"zAlass process was unsuccessful.rl   rm   c                 x    | j         }t          |dz            dz  }t          j                            |          S )Nr  )ru   r   rz   
SubRipTimefrom_ordinal)time_objtotal_ms
rounded_mss      r*   round_time_to_100msz:find_and_synchronize_subtitle.<locals>.round_time_to_100ms  s7    #+#3%*8c>%:%:S%@
$/<<ZHHHr7   	smoothed_zL
**********************
--- trying to get sync scores
**********************z/
**********************
--- valid comparisons: z   matched anchors: z   sync score: z  
**********************
sync_scorer   c                     | d         d         S )Nr   r  r1   r   s    r*   r   z/find_and_synchronize_subtitle.<locals>.<lambda>  s    RSTURVWcRd r7   )r   reversez/
**********************
--- selected subtitle: Testi)gףp=
?rO   lv7za
**********************
--- suspicious subtitle, admin review required!!! 
**********************z[
**********************
--- trying to delete all soft sub tracks... 
**********************zffmpeg  -i z -map 0 -map -0:s -c copy temp_z9something went wrong when trying to delete all soft subs.z.mkvz+
**********************
--- file format is z6. we have to change it to mkv. 
**********************zs
**********************
--- fetching duration and choosing random timestamp (for hardsubs). 
**********************z;
**********************
--- ass subtitle format needed for zB, trying to convert subtitle to ass format 
**********************r  )	r   api_urluser_idadmin_reviewserver_file_namesubtitler  duration
random_sec)r   r$  r%  r&  r'  r(  r  r)  )Or   r   r   r]   r   r`   jsonr   get_users_requestsr   r   r   r   exitrR   replacer   r   ra   rH   r\   r$   r9   iter_contentwriter+   rE   zipfileZipFilenamelistr2   r'   splitextextractr?   convert_to_srtr8   convert_to_utf8repair_subtitlefind_ads_in_subtitler>   SUBTITLE_DIRr   r   
subprocessPopenPIPEcommunicatereprrs   float
splitlinesr   check_outputshlexsplitdecoder   r   r   torchhubload
zeros_liker@   copy2rz   rt   ry   saver   r   rb   	add_intro	add_outror   r   r   convert_to_ass)_r   r   r   r   r   r   r   subtitle_lang	task_typefile_seasonr   file_episoderG   file_release_typerH   moviesubsource_iddbuser_request_dbrequest_statusr   	movieo_id
title_namer   r   r   subtitle_idsr   releases_season	s_episodefiles_countr   rB   rescontent_typer(   chunkarchive_typezip_refsubtitle_namessub_namer(  sub_extsubtitle_formatr'  file_formatoriginal_audio_wavspeech_audio_wav	file_pathcmdprocessr  r	  audio_startre   cmd_durationvideo_duration_outputvideo_durationdelay_ms	af_filter
trim_startcommand_convertr  utilsr   r	   r   VADIteratorcollect_chunkswavr   speech_timestamps
output_wavsegmentoriginal_subtitlesr   command_alassr|   r  rw   original_subsubtitles_with_scorescorer   r   sorted_subtitlesbest_subbest_sub_datafinal_api_urlfinal_user_idadmin_review_requiredcommandsecr*  s_       `                                                                                          r*   find_and_synchronize_subtitler     sW    @@@'	B	B	B!$$$			Q&y11.y991lGGG+GG%))l222(33	  dG  d  dz  d  d  uF  d  d  [f  d  d  |H  d  d  d  e  e  e-.G %AAFFHHEV}Q'	2 	N 33DHMMO	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N(+A.Q-8Q-G-G*GY
"+,<jII D ,mTBBB$[2ol2o2oVc2o2o2oqxyy~~  A  A  BH  II	- 	- 	- 	- 	- L  	N 33DHMMO	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N(+A.Q-8Q-G-G*GY
"+,<jII D ,mTBBB 	 	=) 	 	G%1\'%:%:"Hig,+!Kx''LI,E,E;ZbKbKbgptxgxgx  ~H  LS  LY  LY  L[  L[  ~[  ~[  _m  qx  q@  q@  AD  FI  qJ  qJ  qP  qP  qR  qR  _R  _R  Va  de  Ve  Vehhhhiii##C$5666 Ve |r!!E "  O%  Is</@/@  I  I  I  	J  	J  	J	' =	 =	K.0&S&S&S&S)	 G '{4N4N4N4NPWXXC#%%"{~rBB,"4"4"6"666FFFF/!\"D;"D"D"DdKK 3q),)9)9T)9)J)J 3 3#( !3$%GGENNN33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 (EEgVaEgEgEg'h'h'500.{;;;$_-Ok-O-O-OQTUU CY`-4-=-=-?-?N">22Q660> !2 !2H'1Q:F,x:P:P9a+79+D+D7?H,1  3Gdl  3G  3G  3G  -H  -H  -H,1E ,E
 68W5E5Eh5O5O
7+26S+S+S7?H,1  3Gdl  3G  3G  3G  -H  -H  -H,1E ,T
 ,:!+< %&zX`&z&z&z { { {#OOH\BBB'C C C C C C C C C C C C C C C( 	\"D;"D"D"DEEE-/W-=-=m-L-L*?*f44!  #_Ve  #_  #_  #_  `  `  `*l+FH+F+FWWW'/'7'7'O'OH	\"=8"="=>`q>`>`SZ>`>`>`aaa  H  I  I  I&'#7#7'#7#7#7'111'111(O;;0:::7>>\*E8*E*EFF _I&Ax&A&ABBBBI&Ax&A&A\B]S[B]B]^^^!((2222FAAg	ggghhh(6|GI(V(V%+ J	%$0!H'!H!H!H".DDwDDDoppp';)9;;Ii!4!3yC"$*%?%?	   ")!4!4!6!6&'''d6ll###&'''d6ll###<<>> &"'(A(A(C(CA(F"G"GKD{DDEEEEZ[[["%K " " "EFFFa!"
 A,  A8H  A  A  AL$.$;EK<U<U$V$V$]$]$_$_$e$e$g$g!"#899N Q{T122KhKKKKK		q --
G:GGG		-	]l ],< ] ]%] ]2@] ]DV] ] ]  0STT deee$y~~ 5&!&  .    u
 `e\&
J^ j!35III$9$9"$"+.,/"%% % %!!    ~bc~~~ )#..J, c c>A''BRSZ[`SaBa>b
77+GEN:;;J'2FFFFhiii!#N%  8h88\:^:^T\:^:^___"))*@h*@*@AAA !O:J  !O  !OQ]  !O_g  !O  !Onz  !O  !O  CK  !O  !O  !OM+LMMM :&G&GX&G&GRYZZZDI I I
 " ; ;"5"5ag">"> 3 3AE : :IIBBBBWIUUUIBBBBlC^T\C^C^____    	\"C"C"C"CE`V^E`E`aaaa baaaa !3 / /  .... deee#% % X X<X\hYtjrYtYt  vG  =H  =H9(/  sJ[  s  s  rA  s  s  RW  s  s  s  t  t  t13$X.?D$X.|<FW$X./BCC%&:&@&@&B&BHdHdnrsss&6q&9#HmH!,/E -.A Bhhhhhiii))) , )(,%%"3a"7"7(-% 3 .}~~~(,% , -I1x11\2P72P2P2PQQQ!'''Hhy)))hsttt DL  D2B  D  D^j  D  D  rB  D  DG!\]]]I9'799:::I>>,<>><@cQa@c@cdddf$$  Kk  K  K  K  L  L  L#12BK#P#P   L  M  M  M,-P>N-P-PQQC*3//JA~~  lVf  l  l  l  m  m  mx(((%+++",,$9(8 ("' #",
 
 
 #,,$9(8 ("' #	 	 	 e$$_O% O%s   -C E"C6*E"6C:	:E"=C:	>A"E",GGG%[?1O=1[=P	[P	A[CT5)[5T9	9[<T9	=F[[=D
a 
a< a77a<)Af8 8
g-!g((g-Bm
n**(nn%nn%n%%n*)r   )r   r   r   r   )Dr@   sysr2   r^   r[   requests.exceptionsr   r   r   r   randomr+  r1  rF  rC  
torchaudior;  r:   numpyr   rz   r  r   r   r	   r'   r   abspathr3   dirname__file__celery_tasks.celeryr
   configr   r   r   r   base.utils.funcsr   r   r   r   r   r   r   r   
base.utilsr   r   r   r   r   r   base.utils.subtitle_editorr+   rE   strdictr`   r   r   r   r   r   taskr   r  r1   r7   r*   <module>r     sI    



 				   X X X X X X X X X X X X                    D D D D D D D D D D RW__X-F-F M MNN O O O # # # # # # X X X X X X X X X X X X I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I& & & & & & & & & & & & & & & & ( ( ( (  = = =>3 >s >T > > > >@    "     L L L L\ 
 !!!Y% Y%# Y%Y\ Y%gj Y%x{ Y%  IL Y%  WZ Y% Y% Y% "!Y% Y% Y%r7   