
    ҫfi_                    h    d dl mZ d dlmZ d dlmZmZ ddlmZ ddl	m
Z
 erddlmZ  G d	 d
      Zy)    )annotations)	urlencode)TYPE_CHECKINGAsyncIterator   )User   )InvalidResponseException)	TikTokApic                  H    e Zd ZU dZded<   eddd       Ze	 d	 d	d       Zy)
Searchz<Contains static methods about searching TikTok for a phrase.r   parentc               d   K   t        j                  | df||d|2 3 d{   }| 7 
6 yw)a}  
        Searches for users.

        Note: Your ms_token needs to have done a search before for this to work.

        Args:
            search_term (str): The phrase you want to search for.
            count (int): The amount of users you want returned.

        Returns:
            async iterator/generator: Yields TikTokApi.user objects.

        Raises:
            InvalidResponseException: If TikTok returns an invalid response, or one we don't understand.

        Example Usage:
            .. code-block:: python

                async for user in api.search.users('david teather'):
                    # do something
        user)countcursorN)r   search_type)search_termr   r   kwargsr   s        T/home/homepc/tiktok-worker/venv/lib/python3.12/site-packages/TikTokApi/api/search.pyuserszSearch.users   sK     . !,,
',V
?E
 	 	$ J	 
s   0.,.0.0c               
  K   d}||k  rt| |ddd}t         j                  j                  d| d||j                  d      |j                  d      	       d
{   }|t	        |d      |dk(  r|j                  dg       D ]  }|j                  d      j                  d      }	|j                  d      j                  d      }
|j                  d      j                  d      }t         j                  j                  |	|
|       |dz  } n?|dk(  r:|j                  dg       D ]%  }t         j                  j                  |       ' |j                  dd      sy
|j                  d      }||k  rsy
y
7 &w)a  
        Searches for a specific type of object. But you shouldn't use this directly, use the other methods.

        Note: Your ms_token needs to have done a search before for this to work.
        Note: Currently only supports searching for users, other endpoints require auth.

        Args:
            search_term (str): The phrase you want to search for.
            obj_type (str): The type of object you want to search for (user)
            count (int): The amount of users you want returned.
            cursor (int): The the offset of users from 0 you want to get.

        Returns:
            async iterator/generator: Yields TikTokApi.video objects.

        Raises:
            InvalidResponseException: If TikTok returns an invalid response, or one we don't understand.

        Example Usage:
            .. code-block:: python

                async for user in api.search.search_type('david teather', 'user'):
                    # do something
        r   searchz{"tiktok":{"client_params_x":{"search_engine":{"ies_mt_user_live_video_card_use_libra":1,"mt_search_general_user_live_card":1}},"search_server":{}}})keywordr   	from_pageweb_search_codez"https://www.tiktok.com/api/search/z/full/headerssession_index)urlparamsr   r   Nz$TikTok returned an invalid response.r   	user_list	user_infosec_uiduser_id	unique_id)r#   r$   usernamer   item	item_list)datahas_moreFr   )r   r   make_requestgetr
   r   video)r   obj_typer   r   r   foundr    respr   r#   uidr&   r-   s                r   r   zSearch.search_type,   s    8 em& % $~	F  338
&I

9-$jj9	 4  D |.@  6! HH["5 D"hh{377	BG((;/33I>C#xx488EH --,, 'x -   QJE V#!XXk26 :E ----5-99: 88J.XXh'FI ems   AFF D!F>FN)
   r   )returnzAsyncIterator[User])r3   r   )__name__
__module____qualname____doc____annotations__staticmethodr   r        r   r   r      s?    F 6 01@(	@( @(r;   r   N)
__future__r   urllib.parser   typingr   r   r   r   
exceptionsr
   tiktokr   r   r:   r;   r   <module>rA      s&    " " /  1"b( b(r;   