o �J�h@�@s�ddlZddlZddlZddlmZddlZddlmZmZddl m Z ddl Tddl m Z mZ idd�d d �d d �d d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�id)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d:�d;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH��Zie d�dd�d d �d d �d d�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�d)d*�d,d.d0d2d4d:d<d>d@dBdDdFdHdI� �ZGdJdK�dK�ZdS)L�N)�datetime)�TRANSLATION_OUTPUT_DIR�DEFAULT_PARAMETERS_CONFIG_PATH)�AUTOMATIC_DETECTION)�*)� load_yaml� save_yaml� Bulgarian�BG�Czech�CS�Danish�DA�German�DE�Greek�EL�English�ENzEnglish (British)zEN-GBzEnglish (American)zEN-US�Spanish�ES�Estonian�ET�Finnish�FI�French�FR� Hungarian�HU� Indonesian�ID�Italian�IT�Japanese�JA�KoreanZKO� Lithuanian�LT�Latvian�LV�Norwegian (Bokmål)�NB�Dutch�NL�Polish�PL� Portuguese�PTzPortuguese (Brazilian)zPT-BRzDPortuguese (all Portuguese varieties excluding Brazilian Portuguese)zPT-PT�Romanian�RO�Russian�RU�Slovak�SK� Slovenian�SL�Swedish�SV�Turkish�TR� UkrainianZUKzChinese (simplified)�ZH) r(r*r,r.z+Portuguese (all Portuguese varieties mixed)r2r4r6r8r:r<r>�Chinesec@s�eZdZefdefdd�Zdde��fdededed ed e d e d efd d�Z ddededed ed e f dd�Z e ded e ded ed e f dd��Z dS)�DeepLAPI� output_dircCs"d|_d|_t|_t|_||_dS)N��2)� api_interval�max_text_batch_size�DEEPL_AVAILABLE_TARGET_LANGS�available_target_langs�DEEPL_AVAILABLE_SOURCE_LANGS�available_source_langsrB)�selfrB�rL�EC:\pinokio\api\whisper-webui.git\app\modules\translation\deepl_api.py�__init__Xs  zDeepLAPI.__init__FT�auth_key�fileobjs� source_lang� target_lang�is_pro� add_timestamp�returnc Csx|rt|dtjj�rdd�|D�}|j|||||d�i}|D]l} tj�tj�| ��\} } t | |j �} | � | �} |j }t dt| �|�D]4}||t| �dd�dd�| |||�D�}|�|||||�}t|�D] \}}|d| ||_qjqDt|j | | | |d �\}}||d �|| <q d }|��D]\} }|d 7}|| �d �7}||d�7}q�d|��}dd�|��D�}||gS)a� Translate subtitle files using DeepL API Parameters ---------- auth_key: str API Key for DeepL from gr.Textbox() fileobjs: list List of files to transcribe from gr.Files() source_lang: str Source language of the file to transcribe from gr.Dropdown() target_lang: str Target language of the file to transcribe from gr.Dropdown() is_pro: str Boolean value that is about pro user or not from gr.Checkbox(). add_timestamp: bool Boolean value from gr.Checkbox() that determines whether to add a timestamp at the end of the filename. progress: gr.Progress Indicator to show progress directly in gradio. Returns ---------- A List of String to return to gr.Textbox() Files to return to gr.Files() rcS�g|]}|j�qSrL)�name)�.0�fileobjrLrLrM� <listcomp>��z,DeepLAPI.translate_deepl.<locals>.<listcomp>)�api_keyrSrQrRrTz Translating..)�desccSrVrL)�text)rX�segrLrLrMrZ�r[r^)rB�output_file_name� output_format�resultrT)�subtitle�path�z%------------------------------------ z rcz6Done! Subtitle is in the outputs/translation folder. cSsg|]\}}|d�qS)rdrL)rX�key�itemrLrLrMrZ�s)� isinstance�gr�utils� NamedString�cache_parameters�osrd�splitext�basename� get_writerrB� to_segmentsrF�range�len�request_deepl_translate� enumerater^� generate_file�items)rKrOrPrQrRrSrT�progress� files_info� file_path� file_name�file_ext�writer�segments� batch_sizeZ batch_startZsentences_to_translateZtranslated_texts�i�translated_textrc� output_path� total_result�info�gr_str�output_file_pathsrLrLrM�translate_deeplasP!�   �� � zDeepLAPI.translate_deeplr^c Cs�|tt���vrtd|�dtt�������|tt���vr,td|�dtt�������|r0dnd}dd|��i}|t|t|d�}tj|||d ���} t� |j �| d S) z$Request API response to DeepL serverzSource language z is not supported.Use one of zTarget language z"https://api.deepl.com/v2/translatez'https://api-free.deepl.com/v2/translate� AuthorizationzDeepL-Auth-Key )r^rQrR)�headers�data� translations) �listrI�keys� ValueErrorrG�requests�post�json�time�sleeprE) rKrOr^rQrRrS�urlr�r��responserLrLrMrt�s$  �  �  �� z DeepLAPI.request_deepl_translater\cCs8tt�}||||d�|dd<||dd<t|t�dS)N)r\rSrQrR� translation�deeplrT)rrr)r\rSrQrRrT� cached_paramsrLrLrMrl�s� zDeepLAPI.cache_parametersN)F)�__name__� __module__� __qualname__r�strrNri�Progressr��boolr�rt� staticmethodrlrLrLrLrMrAWsZ� �������� �T����� �����rA)r�r�rmr�gradiori�modules.utils.pathsrr�modules.utils.constantsr�modules.utils.subtitle_manager�modules.utils.files_managerrrrGrIrArLrLrLrM�<module>s�  �������� � � � � ������������������� �!�$�������� � � � � ������"
Memory