o
    NK&h_                     @   s   d Z dZddlmZmZ ddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dd	lmZmZmZ G d
d de	ZdS )z
google translator API
z"Copyright (C) 2020 Nidhal Baccouri    )ListOptionalN)BeautifulSoup)BaseTranslator)	BASE_URLS)RequestErrorTooManyRequestsTranslationNotFound)is_emptyis_input_validrequest_failedc                       sx   e Zd ZdZ			dded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 )GoogleTranslatorzd
    class that wraps functions, which use Google Translate under the hood to translate text(s)
    autoenNsourcetargetproxiesc              	      s>   || _ t jd	td||dddidd| ddi| _dS )
zy
        @param source: source language to translate from
        @param target: target language to translate to
        GOOGLE_TRANSLATEdivclasst0q)base_urlr   r   element_tagelement_querypayload_keyzresult-containerN )r   super__init__r   get_alt_element_query)selfr   r   r   kwargs	__class__r   I/var/www/html/venv/lib/python3.10/site-packages/deep_translator/google.pyr      s   
zGoogleTranslator.__init__textreturnc                 K   sr  t |ddr| }|  st|r|S | j| jd< | j| jd< | jr)|| j| j< tj	| j
| j| jd}|jdkr<t t|jdrEt t|jd}|| j| j}|  |sg|| j| j}|sgt||jd	d
| krddd | D }ddd |jd	d
D }|r|r||kr| j| jd< d| jvr| S | jd= | |S dS dS dS |jd	d
S dS )z
        function to translate a text
        @param text: desired text to translate
        @return: str: translated text
        i  )	max_charstlsl)paramsr   i  )status_codezhtml.parserT)strip c                 s       | ]	}|  r|V  qd S Nisalnum.0chr   r   r%   	<genexpr>V       
z-GoogleTranslator.translate.<locals>.<genexpr>c                 s   r/   r0   r1   r3   r   r   r%   r6   Y   r7   hlN)r   r-   _same_source_targetr
   _target_url_params_sourcer   requestsr   	_base_urlr   r,   r   r   r   r   r&   find_element_tag_element_querycloser    r	   get_textjoin	translate)r!   r&   r"   responsesoupelementto_translate_alphatranslated_alphar   r   r%   rE   3   sV   





	zGoogleTranslator.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!   rK   r"   r   r   r%   translate_filej   s   zGoogleTranslator.translate_filebatchc                 K   rL   )z
        translate a list of texts
        @param batch: list of texts you want to translate
        @return: list of translations
        )_translate_batch)r!   rO   r"   r   r   r%   translate_batcht   s   z GoogleTranslator.translate_batch)r   r   N)__name__
__module____qualname____doc__strr   dictr   rE   rN   r   rQ   __classcell__r   r   r#   r%   r      s    7"
r   )rU   __copyright__typingr   r   r=   bs4r   deep_translator.baser   deep_translator.constantsr   deep_translator.exceptionsr   r   r	   deep_translator.validater
   r   r   r   r   r   r   r%   <module>   s    