o
    Ph}                     @   sL   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ G dd deZ	dS )    N)UnsupportedMethod)Language)BaseTranslator)Requestc                   @   s   e Zd ZdZh dZe fdefddZdededed	efd
dZdeded	efddZ	ded	efddZ
dededefddZdededefddZdd Zded	efddZdd Zd	efddZdS )ReversoTranslatez2
    A Python implementation of Reverso's API
    >   arachidutengfragerhebitajpnpolporrumrusspaturautorequestc                 C   s
   || _ d S )N)session)selfr    r   Z/var/www/html/env_mimamsha/lib/python3.10/site-packages/translatepy/translators/reverso.py__init__   s   
zReversoTranslate.__init__textdestination_languagesource_languagereturnc                 C   s   |dkr	|  |}| jjd|||ddddddddd	idd
}|jdk rE| }z|d d }W n ty<   |}Y nw ||d d fS d S )Nr   0https://api.reverso.net/translate/v1/translationr   translation.webForiginsentenceSplittercontextResultslanguageDetectioninputfromtoformatoptionsContent-Typeapplication/json; charset=UTF-8jsonheadersverify  r'   detectedLanguagetranslationr   )	_languager   poststatus_coder1   	Exception)r   r   r   r   r   response_detected_languager   r   r   
_translate   s4   

zReversoTranslate._translatec                 C   sd   |dkr	|  |}| jjd||dddddddd	d	d
idd}| }|jdk r0||d|fS d S )Nr   z/https://orthographe.reverso.net/api/v1/SpellingTenIndifferentinteractiveF)	r   languageautoReplaceinterfaceLanguagelocaler$   generateSynonymsgenerateRecommendationsgetCorrectionDetailsr.   r/   r0   r4   r   )r7   r   r8   r1   r9   get)r   r   r   r   r;   r   r   r   _spellcheck0   s*   

zReversoTranslate._spellcheckc                 C   sl   | j jd|ddddddddd	d
did}| }|jdk r4z|d d W S  ty3   |d  Y S w d S )Nr!   r
   r   r   r"   FTr#   r(   r.   r/   )r1   r2   r4   r'   r5   r*   )r   r8   r1   r9   r:   )r   r   r   r;   r   r   r   r7   H   s,   
zReversoTranslate._languagec              
   C   s|   |dkr	|  |}t|j}t|j}d}|||ddddddd	}| jj||d	d
idd}| }|jdk r<||d fS d S )Nr   -https://context.reverso.net/bst-query-service      r   T   	source_textsource_langtarget_langnpagenrowsexpr_sugr1   	dym_applypos_reorderr.   !application/x-www-form-urlencodedFparamsr2   r3   r4   list)r7   r   alpha2r   r8   r1   r9   )r   r   r   r   urlrY   r   r;   r   r   r   _example`   s   



zReversoTranslate._examplec           
   
   C   s   |dkr	|  |}t|j}t|j}d}|||ddddddd	}| jj||d	d
idd}| }|jdk rJg }|d D ]	}	||	d  q<||fS d S )Nr   rJ   rK   rL   r   TrM   rN   r.   rW   FrX   r4   dictionary_entry_listterm)r7   r   r[   r   r8   r1   r9   append)
r   r   r   r   r\   rY   r   r;   _result_dictionaryr   r   r   rb   q   s   



zReversoTranslate._dictionaryc                 C   s   |dkr	|  |}d}| jj|dd}| d }|dkrdnd}t|  }	|d	kr2d
 nt	
|j }
|D ]}|d  |
krR|d |krR|d } n	q<tdj|dd|||	}| jj|dd}|jdk rt||jfS d S )Nr   zQhttps://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetAvailableVoicesF)r3   VoicesmaleMFr
   z
US Englishr   GenderNamez/{source_lang} language not supported by Reverso)rP   zuhttps://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName={}?voiceSpeed={}&inputText={}r4   )r7   r   rH   r1   base64	b64encodeencodedecodelowerr   
by_reversonamer   r,   r9   content)r   r   speedgenderr   _supported_langs_url_supported_langs_result_supported_langs_list_gender_text_source_language_supported_langvoicer\   r;   r   r   r   _text_to_speech   s&   
 

z ReversoTranslate._text_to_speechrA   c                 C   s   |j dkrdS |jS )Nzhor   )idalpha3)r   rA   r   r   r   _language_normalize   s   
z$ReversoTranslate._language_normalizec                 C   s    t | dv rtdS t|S )N>   zh-cnr   r|   )strrm   r   )r   language_coder   r   r   _language_denormalize   s   z&ReversoTranslate._language_denormalizec                 C   s   dS )NReversor   )r   r   r   r   __str__   s   zReversoTranslate.__str__N)__name__
__module____qualname____doc___supported_languagesr   r   r   r=   rI   r7   r]   rb   r{   r   r   r   r   r   r   r   r   r   	   s    r   )
ri   translatepy.exceptionsr   translatepy.languager   translatepy.translators.baser   translatepy.utils.requestr   r   r   r   r   r   <module>   s    