U
    J›ãgŒO  ã                   @   s´  d dl Z d dl mZmZ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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mZmZmZ d dl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"d dl"m#Z# d dl$Z$d dl%Z%d dl&Z&d dl'Z'dd„ Z(dZ)e%j* +e%j* ,e-¡¡Z.da/dd„ Z0dd„ Z1zej2e0dZ3de3_4e3 5¡  W n   e6e$ 7¡ ƒ Y nX d*dd„Z8d+dd„Z9dd „ Z:d!d"„ Z;d,d$d%„Z<d-d&d'„Z=d(d)„ Z>dS ).é    N)ÚdbÚcredentialsÚ	firestore©Ústorage)Úservice_account)Úcreate_file_with_path)Ú	webdriver)ÚService)ÚOptions)ÚBy)ÚWebDriverWait)ÚChromeDriverManager)ÚImageÚ	ImageDrawÚ	ImageFont)ÚBytesIO)Údatec              
   C   sÆ   t j | ¡r|  ¡  d¡s.td| › dƒ d S z^t | ¡6}t j | ¡d }| 	d¡}|› d}| 
|d¡ W 5 Q R X td| › d	|› ƒ W n4 tk
rÀ } ztd
t|ƒ› ƒ W 5 d }~X Y nX d S )Nz.pngzError: z is not a valid PNG file.r   ÚRGBz.jpgÚJPEGzSuccessfully converted z to zAn error occurred: )ÚosÚpathÚisfileÚlowerÚendswithÚprintr   ÚopenÚsplitextÚconvertÚsaveÚ	ExceptionÚstr)Ú	file_pathÚimgÚ	file_nameZrgb_imgZjpg_pathÚe© r&   ú1/home/ankuromar296_gmail_com/send_whatsapp2024.pyÚ
png_to_jpg!   s    

r(   i@  c                  C   s8   t jj} t| _t dtf| ¡at	dt› ƒ t 
¡  d S )NÚ zServing at port )ÚhttpÚserverÚSimpleHTTPRequestHandlerÚ	DIRECTORYÚ	directoryÚsocketserverÚ	TCPServerÚPORTÚhttpdr   Úserve_forever)Úhandlerr&   r&   r'   Ústart_server@   s
    r5   c                   C   s   t dƒ d S )NzShutting down the server...)r   r&   r&   r&   r'   Ústop_serverJ   s    r6   )ÚtargetTé   é
   éô  c                 C   sn  d}dd„ | D ƒ}t dd„ |D ƒƒ}t dd„ |D ƒƒ}t|ƒ}	t |	| ¡}
|| ||d   }||
 ||
d   }t |¡}t t|j	ƒ¡}t
|j|j | ƒ}| ||ftj¡}t d||| | fd	¡}|| d
 }| ||df¡ t|ƒD ]l\}}|| }|| }|||  }|||  | | }||j d
 }||j d
 }| ||| || f¡ qò| |¡ dS )a¡  
    Create a collage from multiple images with a logo at the top.
    
    :param image_paths: List of paths to the watermarked images
    :param output_path: Path where the collage will be saved
    :param logo_url: URL of the logo image
    :param images_per_row: Number of images per row in the collage
    :param spacing: Spacing between images in pixels
    :param logo_height: Height of the logo in pixels
    z*https://farmonaut.com/Images/ir_header.pngc                 S   s   g | ]}t  |¡‘qS r&   )r   r   )Ú.0r   r&   r&   r'   Ú
<listcomp>e   s     z(create_image_collage.<locals>.<listcomp>c                 s   s   | ]}|j V  qd S ©N)Úwidth©r;   r#   r&   r&   r'   Ú	<genexpr>h   s     z'create_image_collage.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r=   )Úheightr?   r&   r&   r'   r@   i   s     é   r   )éÿ   rC   rC   é   r   N)ÚmaxÚlenÚmathÚceilÚrequestsÚgetr   r   r   ÚcontentÚintr>   rA   ÚresizeÚLANCZOSÚnewÚpasteÚ	enumerater   )Zimage_pathsÚoutput_pathZimages_per_rowÚspacingZlogo_heightZlogo_urlÚimagesÚ	max_widthÚ
max_heightZ
num_imagesÚnum_rowsZcollage_widthZcollage_heightÚresponseZlogoZ
logo_widthZcollageZlogo_xÚir#   ÚrowÚcolÚxÚyÚx_offsetÚy_offsetr&   r&   r'   Úcreate_image_collageX   s0    
r`   c              	   C   sb  d}d}t  | ¡ d¡>}tt |jd |jd  ¡ƒ}t  d||fd¡}z"|r`t	 
||¡}	nt	 
d|¡}	W n$ tk
r’   t	 ¡ j|d}	Y nX t |¡}
|	 |¡\}}}}|| }|| }|| d || d f}|
j|||	dd	d|fd
 t t |j|j¡¡}|j|dd}t||j d ƒ t||j d ƒf}| |||¡ | |¡ W 5 Q R X d S )Ni,  é   ÚRGBArD   )r   r   r   r   z	arial.ttf)Úsizer   rC   )ÚfontÚfillF)Úexpand)r   r   r   rL   rG   Úsqrtr>   rA   rO   r   ZtruetypeÚIOErrorZload_defaultÚfont_variantr   ZDrawÚgetbboxÚtextÚdegreesÚatan2ÚrotaterP   r   )Z
image_pathrR   Zwatermark_textZ	font_pathÚ	font_sizeZopacityr#   ÚdiagonalZ	watermarkrd   ÚdrawÚleftÚtopÚrightÚbottomÚ
text_widthZtext_heightÚposÚangleZrotated_watermarkZ	paste_posr&   r&   r'   Úadd_diagonal_watermark–   s0    
ÿry   c                 C   s>  ddddœddœ}t ƒ }| d|¡ | d¡ | d	¡ | d
¡ | d¡ tjttƒ  ¡ ƒ|d}| d¡ t	|dƒ 
dd„ ¡ d}|d | }tj|dd tj |d¡}zT|d }	d|	› }
tt|
ƒƒd|›  } td| ƒ | | ¡ t d¡ | |¡ W n    tt ¡ ƒ tdƒ Y nX | ¡  td|› ƒ |S )Ni€  i8  g      @)r>   rA   Z
pixelRatiozsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36)ZdeviceMetricsZ	userAgentZmobileEmulationz
--headlessz--no-sandboxz--disable-dev-shm-usagez--window-size=1920x1080)ÚserviceÚoptionsé´   c                 S   s   |   d¡dkS )Nzreturn document.readyStateÚcomplete)Zexecute_script)Údriverr&   r&   r'   Ú<lambda>Ü   ó    z.capture_full_page_screenshot.<locals>.<lambda>r   ú/T)Úexist_okzcollage.pngú/interactive_report.htmlúPaidMonitoredFields/z	&FieldID=Z	final_urlé   zcant take screenshotz$All screenshots saved in directory: )r   Zadd_experimental_optionÚadd_argumentr	   ZChromer
   r   ÚinstallZset_page_load_timeoutr   Zuntilr   Úmakedirsr   Újoinr!   Úget_firebase_storage_urlr   rJ   ÚtimeÚsleepZsave_screenshotÚ	tracebackÚ
format_excÚquit)ÚurlÚuidÚfieldidZmobile_emulationZchrome_optionsr~   Zscreenshot_indexZscreenshot_dirÚmediaUrlZoutput_file_nameZ	blob_pathr&   r&   r'   Úcapture_full_page_screenshotÉ   s>    
ý




ÿ


r”   c           
      C   sb   ddl m} ddlm}m}m} d}| ¡ }| | ¡}| |j¡|dd }| 	|¡}	t
|	ƒ |	S )Nr   r   )ÚdatetimeÚ	timedeltaÚtimezoneúfarmbase-b2f7e.appspot.comra   )Údays)Úfirebase_adminr   r•   r–   r—   ÚbucketÚblobÚnowÚutcÚgenerate_signed_urlr   )
Úobject_pathr   r•   r–   r—   Úbucket_namer›   rœ   Zexpiration_timer   r&   r&   r'   rŠ     s    

rŠ   éè  c                 C   sì   ddl m} ddlm} dd l}dd l}ddlm} ddlm} dd l}	z| 	d¡}
| 
|
ddi¡ W n   td	ƒ Y nX | }|j d¡}d
}|}| |¡}| |¡}d}z&| |¡ |jd|	j|ddd}W n   tdƒ Y nX |S )Nr   r   )ÚServiceAccountCredentials)r   )r   úservicekey.jsonÚdatabaseURLz,https://farmbase-b2f7e-31c0c.firebaseio.com/Úinitializedr˜   z/https://farmonaut.com/Images/data_not_found.jpgÚv4)ÚminutesÚGET)ÚversionÚ
expirationÚmethodz	not there)Úgoogle.cloudr   Zoauth2client.service_accountr£   r   rš   r   r   r•   ÚCertificateÚinitialize_appr   ÚClientÚfrom_service_account_jsonÚ
get_bucketrœ   Úupload_from_filenamerŸ   r–   )Zsource_file_nameZdestination_file_nameÚexpire_minutesr   r£   r   rš   r   r   r•   ÚcredÚ
source_urlÚstorage_clientr¡   Údestination_blob_namer›   rœ   Zstorage_urlr&   r&   r'   Úupload_file_to_storage$  s2    



r¹   c                 C   sÀ  z–t  d¡ d¡ |¡ ¡ }|dkr*d }|d k	r8| W S t  d¡ d¡ |¡ |¡ d¡ |¡ t ¡ }d|dœ}| d	¡ |¡ |¡ t	d
ƒ | d	¡ |¡ ¡ }| 
¡  d¡dkrÂt	dƒ qÖqt	dƒ t d¡ qd}	d}
tj d¡}t |	|¡}| |
¡}d| d }| |¡}|d | d }t|ƒ | |¡ dt› d|› d|› d|› }t|||ƒ} t| ƒ t|d | d d| d dd} tƒ  | W S W n"   t	t ¡ ƒ tƒ  |  Y S X d S )NZSalesAssociatesPromoZ	AdminUIDsZmmC6X2DpreSxO6580MtUKhyaVgq1ÚPaidMonitoredFieldsÚPMFÚ	LatestDayr   )Ú	ProcessedÚFieldIDZInteractiveReportRequestszgenerating jeevnai advisory...r½   rB   zDocument has been processed!z#Waiting for advisory to be ready...r9   zfarmbase-b2f7er˜   r¤   r„   rƒ   r   zhttp://localhost:z!/interactive_report.html?FieldID=z&lang=z/collage.jpgz/interactive_report.jpgr¢   )r´   )r   Ú	referenceÚchildrJ   Úsetr   ÚclientÚ
collectionÚdocumentr   Úto_dictr‹   rŒ   r   ÚCredentialsÚfrom_service_account_filer   r°   r²   rœ   r   Údownload_to_filenamer1   r”   r(   r¹   r6   r   rŽ   )r“   r‘   r’   ÚlangÚ	imagedateZis_adminZdb_firestoreZreq_objÚdocÚproject_namer¡   rµ   r·   r›   r    rœ   r"   r   r&   r&   r'   Úgenerate_jeevnai_whatsapp_imageB  sN    (þ


"
rÍ   c                 C   s6  z|dkrd}|  d¡}|d }t|ƒ}|d }|dkrL|dkrHd}nd}t|ƒdkrÎ|d	krfd
}	nf|dkrtd}	nX|dkr‚d}	nJ|dkrd}	n<|dkržd}	n.|dkr¬d}	n |dkrºd}	n|dkrÈd}	nd}	nŽd}
|d	kràd}	np|dkrîd}	nb|dkrüd}	nT|dkrd}	nD|dkrd}	n4|dkr,d }	n$|dkr<d!}	n|dkrLd"}	nd#}	| d|
¡ d$}d%d&d'd(œ}d)}d*}|dksˆd+|kr°|}t| ||||ƒ} td,| ƒ d-|d.< n*|d/krÚ| d	d&¡}	|}| ¡  | ¡  ||	||| d0d1œ|d2œ}t|ƒ tj	||d3}t|j
ƒ W n   td4t ¡  ƒ Y nX dS )5zc
    :param phoneNumber: (string) in format 10 digit indian number or number with country code
    ÚTCXcp5VIsfhHZrh0nm2VsgBtcGy2Nú,r   ÚenÚFarmeru   à¤•à¤¿à¤¸à¤¾à¤¨é   ÚhizMain Campaign Hindi May 2023ÚknzMain Campaign KannadaÚmrzMain Campaign MarathiÚguzMain Campaign GujaratiÚpazMain Campaign PunjabiÚtazMain Campaign TamilÚtezMain Campaign TeluguÚmlzMain Campaign MalayalamzMain Campaign English May 2023ZRenewzMain Campaign Hindi Oct 2024 2z Main Campaign Kannada Oct 2024 2z Main Campaign Marathi Oct 2024 2z!Main Campaign Gujarati Oct 2024 2z Main Campaign Punjabi Oct 2024 2zMain Campaign Tamil Oct 2024 2zMain Campaign Telugu Oct 2024 2z"Main Campaign Malayalam Oct 2024 2z Main Campaign English Oct 2024 2z+https://backend.aisensy.com/campaign/t1/apizMain Campaign Hindi 1zMain Campaign English 1zMain Campaign Marathi 1)rÓ   rÐ   rÕ   a  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY2MzFkMGUwODRkMjA1MWZkMWQzZDNlMCIsIm5hbWUiOiJURUNIIFZJU0lUIElUIiwiYXBwTmFtZSI6IkFpU2Vuc3kiLCJjbGllbnRJZCI6IjYzODk3MDRlMDYyYTQ3NzIwZWMzYjc1ZiIsImFjdGl2ZVBsYW4iOiJOT05FIiwiaWF0IjoxNzE0NTQwNzY4fQ.FK-8s6AqOWBN3Ip4a4rEsMiWWa68JMBIsycNe_s8TvIa=  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYzODk3MDRlMDYyYTQ3NzIwZWMzYjc2NCIsIm5hbWUiOiJGYXJtb25hdXQgVGVjaG5vbG9naWVzIFB2dC4gTHRkLiIsImFwcE5hbWUiOiJBaVNlbnN5IiwiY2xpZW50SWQiOiI2Mzg5NzA0ZTA2MmE0NzcyMGVjM2I3NWYiLCJhY3RpdmVQbGFuIjoiQkFTSUNfVFJJQUwiLCJpYXQiOjE2Njk5NTE1NjZ9.sm6bFj27KhdOPL7t_aAbLIJW7Il4pMSnLIQ7unVzenMÚ	farmonautÚmediaURLz"https://farmonaut.com/app_redirecté   zsat.precisiongrow.inzAnalysis.png)r   Úfilename)ÚapiKeyÚcampaignNameÚdestinationÚuserNameZmediaZtemplateParams)ÚjsonzsendWhatsappErr )Úsplitr!   rF   ÚinsertrÍ   r   rJ   ÚpoprI   Úpostrk   r   rŽ   )rÜ   ZparamsArrayrÉ   r‘   r’   ZphoneNumberÚ
whitelabelrÊ   râ   rà   Zrenew_flow_start_textr   Zpg_campaign_namesZ
pg_api_keyZfarmonaut_api_keyÚapi_keyZmyobjr\   r&   r&   r'   Úsend_whatsappƒ  sš    





ý


ú	rê   )r8   r9   r:   )N)r¢   )N)?rš   r   r   r   r­   r   Úgoogle.oauth2r   Úutilsr   Zseleniumr	   Z!selenium.webdriver.chrome.servicer
   Z!selenium.webdriver.chrome.optionsr   Zselenium.webdriver.common.byr   Zselenium.webdriver.support.uir   Zwebdriver_manager.chromer   ÚPILr   r   r   Úhttp.serverr*   r/   Ú	threadingrG   rI   Úior   r•   r   r   r   rã   r‹   r(   r1   r   ÚdirnameÚabspathÚ__file__r-   r2   r5   r6   ÚThreadZserver_threadÚdaemonÚstartr   rŽ   r`   ry   r”   rŠ   r¹   rÍ   rê   r&   r&   r&   r'   Ú<module>   sT   

>
3>

A