o
    NK&h                     @   st   d Z d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 ddlmZ ddlmZmZ G d	d
 d
eZdS )z
papago translator API
z"Copyright (C) 2020 Nidhal Baccouri    N)ListOptional)BaseTranslator)	BASE_URLSPAPAGO_LANGUAGE_TO_CODE)TranslationNotFound)is_input_validrequest_failedc                	       s   e Zd ZdZ				ddee dee ded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 )PapagoTranslatorzd
    class that wraps functions, which use google translate under the hood to translate text(s)
    Nautoen	client_id
secret_keysourcetargetc                    sB   |r|st d|| _|| _t jdtd||td| dS )zy
        @param source: source language to translate from
        @param target: target language to translate to
        zRPlease pass your client id and secret key! visit the papago website for more infos
PAPAGO_API)base_urlr   r   	languagesN )	Exceptionr   r   super__init__r   getr   )selfr   r   r   r   kwargs	__class__r   I/var/www/html/venv/lib/python3.10/site-packages/deep_translator/papago.pyr      s   
zPapagoTranslator.__init__textreturnc           
      K   s   t |rQ| j| j|d}| j| jdd}tj| j||d}t|j	dr+t
d|j	 t|j}d|vr9t||d}|dd	}|sJt||d
}	|	S d	S )z
        function that uses google translate to translate a text
        @param text: desired text to translate
        @return: str: translated text
        )r   r   r   z0application/x-www-form-urlencoded; charset=UTF-8)zX-Naver-Client-IdzX-Naver-Client-SecretzContent-Type)headersdata)status_codez#Translation error! -> status code: messageresultNtranslatedText)r   _source_targetr   r   requestspost	_base_urlr	   r"   r   jsonloadsr   r   r   )
r   r   r   payloadr    responseres_bodymsgr$   translated_textr   r   r   	translate2   s4   


zPapagoTranslator.translatepathc                 K      | j |fi |S )z
        translate directly from file
        @param path: path to the target file
        @type path: str
        @param kwargs: additional args
        @return: str
        )_translate_file)r   r3   r   r   r   r   translate_fileU   s   zPapagoTranslator.translate_filebatchc                 K   r4   )z
        translate a list of texts
        @param batch: list of texts you want to translate
        @return: list of translations
        )_translate_batch)r   r7   r   r   r   r   translate_batch_   s   z PapagoTranslator.translate_batch)NNr   r   )__name__
__module____qualname____doc__r   strr   r2   r6   r   r9   __classcell__r   r   r   r   r
      s$    #"
r
   )r=   __copyright__r+   typingr   r   r(   deep_translator.baser   deep_translator.constantsr   r   deep_translator.exceptionsr   deep_translator.validater   r	   r
   r   r   r   r   <module>   s    