U
    2eg                  
   @   sN  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZe  e	dZ
e Zee
Z
eee
 Ze
e ZedZereed   z,ejddd eed	d
 ed W nN ek
r Z z.deekred nede  e  W 5 dZ[X Y nX i Zdd Zdd Zdd Zi Z dd Z!dd Z"dd Z#dS )    )BotN)load_dotenvcredentialszconfig/*cookie.jsonZdeveloper6161Zaman5911)usernamepassword      zLogin successfulZchallenge_requiredz9Challenge required. Please verify your identity manually.zLogin failed: c              
   C   sn   t d|   zt| }|s$W dS |d W S  tk
rh } zt d|  d|  W Y dS d }~X Y nX d S )NzFetching info for user: F
is_privatezError fetching user info for : )printbotZget_user_info	Exception)user	user_infoe r   A/home/esfera/Pictures/Telegram-Engagement-Pod-/gina/engagement.pycheck_user_info&   s    

r   c              
   C   s   | t kr td|  d t |  S d}|dk rz*t| }|t | < ttdd |W S  tk
r } zZ|d7 }td|  d	|  d
t	|krtd tdd|   nttdd W 5 d}~X Y q$X q$g S )z5Fetch likers for a media ID with caching and retries.z!Using cached likers for media ID .r            r   z#Error fetching likers for media ID r
   429z+Rate limit reached. Retrying after delay...<   N)
likers_cacher   r   Zget_media_likerstimesleeprandomuniformr   str)media_idretrieslikersr   r   r   r   
get_likers2   s$    
&r#   c                 C   sP  t d| d g }z"t|}t d| d|  W nH tk
r~ } z*t d| d|  dgt|   W Y S d}~X Y nX | D ]}d}|d	k rz t|}|st d
|  |d W qt|}t | |rft d| dt|  t|}	|	d d }
t d|
 ||kr4t d |d n0|
dkrRt d |d nt d |d nt d| d |d t	
tdd W qW q tk
r } z\|d7 }t d| d|  dt|krt d t	
dd|   nt	
tdd	 W 5 d}~X Y qX q|d	krt d| d |d qt d|  |S )z)Check if a user has liked specific posts.zChecking if user z has liked posts...User ID for r
   zFailed to fetch user ID for FNr   r   zInvalid media URL: Likers for media ID Z
like_counttotal_likeszin ifTd   zin elifzin elsezNo likers found for media ID r   r   r   Error processing post URL r   zRate limit hit. Backing off...r   r   z"Max retries exceeded for post URL z	Results: )r   r   get_user_id_from_usernamer   lenget_media_id_from_linkappendr#   get_media_infor   r   r   r   r   )datar   resultuser_idr   post_urlr!   r    r"   
media_infor&   r   r   r   has_user_liked_postJ   s`    
$









&r3   c              
   C   s   | t kr td|  d t |  S z*t| }|t | < ttdd |W S  tk
r } z td|  d|  g  W Y S d}~X Y nX dS )z8Get commenters for a media ID, using cache if available.z#Using cached comments for media ID r   r   r   z'Error fetching commenters for media ID r
   N)	comments_cacher   r   Zget_media_commentersr   r   r   r   r   )r    
commentersr   r   r   r   get_commenters   s    
r6   c           
      C   s  t d g }z"t|}t d| d|  W n: tk
rh } zt d| d|  d }W 5 d }~X Y nX |s|dgt|  S | D ]2}d}|dk rzt|}|rt|}t|dkr|d W qnt|r|d t	|}	t d	| d|	  |||	k t
td
d W qW q tk
r } z\t d| d|  |d
7 }dt|krtt d t
d nt
tdd W Y qW 5 d }~X Y qX q|dkr|d qt | |S )Nhas_user_commented_postr$   r
   #Failed to get user ID for username Fr   r   TCommenters for media ID r   r   r(   r   +Rate limit reached. Pausing all operations.r   r   )r   r   r)   r   r*   r+   r-   r,   r   r6   r   r   r   r   r   )
r.   r   r/   r0   r   r1   r!   r    r2   r5   r   r   r   r7      sN    







r7   c                 C   s  t d g }z"t|}t d| d|  W n: tk
rh } zt d| d|  d }W 5 d }~X Y nX |s|dgt|  S | D ]Z}d}|dk rzt|}|rt|}t|dkr|d W qn|d W qt|}	t	|}
t d	| d|	  t d
| d|
  ||	kp$||
k}|| t
tdd W qW q tk
r } z\t d| d|  |d7 }dt|krt d t
d nt
tdd W Y qW 5 d }~X Y qX q|dkr|d q|S )Nhas_user_interacted_with_postr$   r
   r8   Fr   r   Tr%   r9   r   r   r(   r   r:   r   r   )r   r   r)   r   r*   r+   r-   r,   r#   r6   r   r   r   r   r   )r.   r   r/   r0   r   r1   r!   r    r2   r"   r5   Z
interactedr   r   r   r;      sR    








r;   )$instabotr   osglobr   r   dotenvr   astgetenvr   r   literal_evalchoicelistkeysr   r   Z
cookie_delremoveloginr   r   r   r   r   r   exitr   r   r#   r3   r4   r6   r7   r;   r   r   r   r   <module>   s@   



@6