o
    NK&hg                     @   s   d Z dZddlZddlZddlZddlmZmZ ddlZ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 ddlmZmZ G d	d
 d
e
ZdS )z
baidu translator API
z"Copyright (C) 2020 Nidhal Baccouri    N)ListOptional)BaseTranslator)BAIDU_APPID_ENV_VARBAIDU_APPKEY_ENV_VARBAIDU_LANGUAGE_TO_CODE	BASE_URLS)ApiKeyExceptionBaiduAPIerrorServerExceptionTranslationNotFound)is_emptyis_input_validc                
       s   e Zd ZdZddeedeedfdedede	e de	e f fd	d
Z
dedefddZdedefddZdee dee fddZ  ZS )BaiduTranslatorzv
    class that wraps functions, which use the BaiduTranslator translator
    under the hood to translate word(s)
    enzhNsourcetargetappidappkeyc                    sN   |st td|st td|| _|| _t jdtd||t	d| dS )z
        @param appid: your baidu cloud api appid.
        Get one here: https://fanyi-api.baidu.com/choose
        @param appkey: your baidu cloud api appkey.
        @param source: source language
        @param target: target language
        )env_varBAIDU)base_urlr   r   	languagesN )
r	   r   r   r   r   super__init__r   getr   )selfr   r   r   r   kwargs	__class__r   H/var/www/html/venv/lib/python3.10/site-packages/deep_translator/baidu.pyr   $   s   


zBaiduTranslator.__init__textreturnc           	      K   s  t |r|  st|r|S tdd}t| j| t| | j	 
d }ddi}| j|| j| j||d}ztj| j||d}W n tyN   tdw |jd	krYt|j| }|sct|d
|v rmt|d d|v r}ddd |d D S t|dS )zQ
        @param text: text to translate
        @return: translated text
        i   i   zutf-8zContent-Typez!application/x-www-form-urlencoded)r   qfromtosaltsign)paramsheadersi     
error_code	error_msgtrans_result
c                 S   s   g | ]}|d  qS )dstr   ).0sr   r   r"   
<listcomp>l   s    z-BaiduTranslator.translate.<locals>.<listcomp>N)r   _same_source_targetr   randomrandinthashlibmd5r   strr   encode	hexdigestr   r   requestspost	_base_urlConnectionErrorr   status_codejsonr   r
   join)	r   r#   r   r(   r)   r+   payloadresponseresr   r   r"   	translateC   sF   



zBaiduTranslator.translatepathc                 K      | j |fi |S )N)_translate_file)r   rH   r   r   r   r"   translate_filep   s   zBaiduTranslator.translate_filebatchc                 K   rI   )z`
        @param batch: list of texts to translate
        @return: list of translations
        )_translate_batch)r   rL   r   r   r   r"   translate_batchs   s   zBaiduTranslator.translate_batch)__name__
__module____qualname____doc__osgetenvr   r   r:   r   r   rG   rK   r   rN   __classcell__r   r   r    r"   r      s$    

-"r   )rR   __copyright__r8   rS   r6   typingr   r   r=   deep_translator.baser   deep_translator.constantsr   r   r   r   deep_translator.exceptionsr	   r
   r   r   deep_translator.validater   r   r   r   r   r   r"   <module>   s    