
    nzh                     n    S SK r S SKJr  S SKJr  S SKJrJr  S SKrS SK	J
r
Jr  S SKJr   " S S\5      rg)	    N)Union)	urlencode)Requesturlopen)
ResultMode	userAgent)RequestCorec            	          ^  \ rS rSrSrSS\S\S\4U 4S jjjrS r\	R                  4S\S	\S
\\
\4   4S jjr\	R                  4S\S	\S
\\
\4   4S jjrSS jrSS jrSS jrSrU =r$ )SuggestionsCore   a  Gets search suggestions for the given query.

Args:
    language (str, optional): Sets the suggestion language. Defaults to 'en'.
    region (str, optional): Sets the suggestion region. Defaults to 'US'.

Examples:
    Calling `result` method gives the search result.

    >>> suggestions = Suggestions(language = 'en', region = 'US').get('Harry Styles', mode = ResultMode.json)
    >>> print(suggestions)
    {
        'result': [
            'harry styles',
            'harry styles treat people with kindness',
            'harry styles golden music video',
            'harry styles interview',
            'harry styles adore you',
            'harry styles watermelon sugar',
            'harry styles snl',
            'harry styles falling',
            'harry styles tpwk',
            'harry styles sign of the times',
            'harry styles jingle ball 2020',
            'harry styles christmas',
            'harry styles live',
            'harry styles juice'
        ]
    }
languageregiontimeoutc                 F   > [         TU ]  5         Xl        X l        X0l        g N)super__init__r   r   r   )selfr   r   r   	__class__s       ^/home/james-whalen/.local/lib/python3.13/site-packages/youtubesearchpython/core/suggestions.pyr   SuggestionsCore.__init__,   s         c                 6   / nU R                  5         U R                   H4  n[        U5      [        L d  M  U H  nUR	                  US   5        M       O   U[
        R                  :X  a  SU0$ U[
        R                  :X  a  [        R                  " SU0SS9$ g )Nr   result   )indent)	_SuggestionsCore__parseSourceresponseSourcetypelistappendr   dictjsondumps)r   modesearchSuggestionselementsearchSuggestionElements        r   _post_request_processing(SuggestionsCore._post_request_processing2   s    **GG}$/6+%,,-DQ-GH 07	 +
 :??"/00Z__$::x):;AFF %r   queryr%   returnc           
          S[        U R                  U R                  USSSS.5      -   U l        U R	                  5         U R                  U5      $ Nz,https://clients1.google.com/complete/search?youtubeyt)hlglqclientgs_rids)r   r   r   url_SuggestionsCore__makeRequestr)   r   r+   r%   s      r   _getSuggestionsCore._get@   sU    F--++T
 J  	,,T22r   c           
         #    S[        U R                  U R                  USSSS.5      -   U l        U R	                  5       I S h  vN   U R                  U5      $  N7fr.   )r   r   r   r7   "_SuggestionsCore__makeAsyncRequestr)   r9   s      r   	_getAsyncSuggestionsCore._getAsyncM   sc     F--++T
 J  %%''',,T22 	(s   AAAAc                      [         R                  " U R                  U R                  R                  S5      S-   U R                  R                  S5       5      U l        g !   [        S5      e= f)N(   )z(ERROR: Could not parse YouTube response.)r#   loadsresponseindexr   	Exception)r   s    r   __parseSourceSuggestionsCore.__parseSourceZ   s`    	H"&**T]]4==;N;Ns;SVW;WY]YfYfYlYlmpYq-r"sD	HFGGs   AA   A-c                 F    U R                  5       nUR                  U l        g r   )syncGetRequesttextrE   r   requests     r   __makeRequestSuggestionsCore.__makeRequest`   s    %%'r   c                 b   #    U R                  5       I S h  vN nUR                  U l        g  N7fr   )asyncGetRequestrL   rE   rM   s     r   __makeAsyncRequest"SuggestionsCore.__makeAsyncRequestd   s&     ,,.. /s   /-/)r   r   rE   r   r   r7   )enUSN)r,   N)__name__
__module____qualname____firstlineno____doc__strintr   r)   r   r"   r   r:   r>   r   r8   r=   __static_attributes____classcell__)r   s   @r   r   r      s    > S #  G ,6?? 3# 3S 3uT3Y?O 3 7Aoo 3S 3 3%PTVYPYJZ 3H%% %r   r   )r#   typingr   urllib.parser   urllib.requestr   r   httpx"youtubesearchpython.core.constantsr   r   !youtubesearchpython.core.requestsr	   r    r   r   <module>rg      s(      " +  D 9Z%k Z%r   