a
     ld%                     @   sx   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlZdZejedZd	d
dZG dd dZdS )    N)SoftTimeLimitExceeded)Subquery)timezone)Review)ReviewSourceZ'AIzaSyCN53X1zvBYdVz09FJyrPDHXeWzRUgCRK8)keyzapplication/jsonz)Mozilla/5.0 (Windows NT 10.0; Win64; x64))zcontent-typez
user-agentc                   @   s"   e Zd Zdd ZedddZdS )GoogleMapCrawlerc           	   
   C   s   zt j|d}td t|d  td |d d }|d d }|d d }|d d }dd	 |D }t| d
| d
t|  t| ||||fW S  ty } zt| W Y d }~d S d }~0 0 d S )N)place_idz`================================================================================================resultZuser_ratings_totalratingreviewsurlc              
   S   s>   g | ]6}d |d t j t j |d d|d |d dqS )NZauthor_nametime textr   )idauthordateheadlinebodyr   )datetimer   fromtimestamp).0review r   I/var/www/html/Ranjet/backend/verify_trusted/crawlers/googlemap/crawler.py
<listcomp>X   s   	z0GoogleMapCrawler.get_reviews.<locals>.<listcomp>z, )gmapsplaceprintlen	Exception)	selfr	   r   total_reviewsZavg_ratingsr   r   Zparsed_reviewser   r   r   get_reviewsN   s$    	zGoogleMapCrawler.get_reviewsreview_sourcec              
      s  z j j}t| |d }| |}|d u rNtd tjj _   W d S |\}}}}| _	   td  fdd|D }td t
jj|dd}	td	 t|	 ztd
 dd |	D }
|	D ]0}t
jj j|j|jdjt|
d}|  qt
jjttjj jdjdddddddd}t|}|dk rt
jjttjj jdjddddddddd d|  }t
jj|djdd n^|dkrt
jjttjj jdjdddddddddd  }t
jj|djdd d tjj _ttj  d| d|  | _ttj  d | _ttj  d    td W nH ty } z.tjj _   t| td W Y d }~n
d }~0 0 W nH t y } z.tjj _   t| td  W Y d }~n
d }~0 0 d S )!Nr	   zResult is Noneze================================SYNC REVIEWS=========================================================c                    s@   g | ]8}t  |d  |d |d |d |d t |d dqS )r   r   r   r   r   r   )sourcer   r   r   r   r   
date_parseexternal_id)r   r   nowr   rr&   r   r   r   {   s   z1GoogleMapCrawler.sync_reviews.<locals>.<listcomp>zstart insertF)ignore_conflictsz
end insertzstart check dup reviewsc                 S   s   g | ]
}|j qS r   )r   r,   r   r   r   r          )	source_idr   r   )id__in)
company_idr   T)flat)source_id__in	is_activedisplay_orderz-date_modifyz-date   )pk__in)r5   )r5   r6   z - z : z - set total reviewsz - set avg ratingdonezCheck reviews falsezSync reviews false)!companymapr   r%   r   
SyncStatusFALSEsync_statussaver   r   objectsbulk_createfilterr   r   r   excludelistdeleter   r2   values_listorder_byr    updateSYNCEDr   r+   reviews_countaverage_ratingr   r!   )r"   r'   company_mapr	   r
   r#   
avg_ratingr   r   uncheck_reviewsdup_reviews_idsrowactive_reviewsnum_active_reviewsnested_qr$   r   r&   r   sync_reviewsj   s    








"
zGoogleMapCrawler.sync_reviewsN)__name__
__module____qualname__r%   r   rT   r   r   r   r   r      s   >r   )r   Zbilliard.exceptionsr   django.db.modelsr   django.utilsr   verify_trusted.companies.modelsr   verify_trusted.reviews.modelsr   Z
googlemapsZAPIKEYClientr   headersr   r   r   r   r   <module>   s   