
    HE^jn                          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mZ dded	ed
efdZded
efdZded
dfdZdeded
dfdZ	 	 	 	 ddededee   dee   dee   d
dfdZdee   deded
dfdZy)    N)Optional)Header)settings)_log)_get_session)get_product_cpu_gpunamemax_lenreturnc                 2    t        |       |k  r| S | d | dz   S )Nu   …)len)r	   r
   s     (/home/container/backend/notifier/ntfy.py_truncate_namer   	   s$    
4yG>E!!    valc                 |    	 | j                  d       | S # t        $ r t        | d      j                         cY S w xY w)Nasciiutf-8)encodeUnicodeEncodeErrorr   )r   s    r   _encode_headerr      s=    -

7
 -c7#**,,-s    #;;db_countc                 T   d}d|  d}t         j                   dt         j                   }t        |      ddd}	 t	               }|j                  ||j                  d      |d	
      }|j                  dk(  rt        d       y y # t        $ r}t        d|        Y d }~y d }~ww xY w)NzTrackFurb India Tracker Onlinez(Monitoring active.
Database loaded with z
 products./defaultz*green_circle,shield,hourglass_flowing_sandTitlePriorityTagsr   
   dataheaderstimeout   zStartup notification sent.z$Error sending startup notification: 
r   NTFY_BASE_URL
NTFY_TOPICr   r   postr   status_coder   	Exception)r   titlemessagentfy_urlr#   sessionresponsees           r   send_startup_alertr2      s    ,E9(:NG(()8+>+>*?@H&<G
9.<<w~~g/FPWac<d3&-. ' 93A37889s   AB 	B'B""B'active_countremoved_countc                 X   d}d|  d| }t         j                   dt         j                   }t        |      ddd}	 t	               }|j                  ||j                  d      |d	
      }|j                  dk(  rt        d       y y # t        $ r}t        d|        Y d }~y d }~ww xY w)NzTrackFurb India: Scan Completez4Manual scan finished successfully.
Active products: z
Removed products: r   r   zwhite_check_mark,clipboard,bellr   r   r    r!   r%   z'Manual scan complete notification sent.z1Error sending manual scan complete notification: r&   )	r3   r4   r,   r-   r.   r#   r/   r0   r1   s	            r   send_once_complete_alertr6   &   s    ,EEl^SghugvwG(()8+>+>*?@H&1G
F.<<w~~g/FPWac<d3&:; ' F@DEEFs   AB 	B)B$$B)product	ntfy_type	old_pricelisting_durationrestock_durationc                    || j                  d      }| j                  dd      }| j                  dd      }| j                  dd      }| j                  dt        j                        }| j                  dd	      }	| j                  d
      }
|	j                  d      r|	}n'|	rt        j                   |	 }nt        j
                  }t        |      }t        |       \  }}|dk(  r>|r d| }d|
 d| d| d| d| d| d| }d}nd| }d|
 d| d| d| d| d| }d}n|dk(  rd| }d|
 d| d| d| d| d| }d}n|dk(  rd | }d|
 d| d| d| d| d| }d!}n|d"k(  rd#| }d|
 g}|dk7  r|j                  d$| d| d%       |r|j                  d&|        |j                  d'|        |j                  d(|        |r|j                  d)|        |j                  d*       d+j                  |      }d,}nd-| }d|
 d| d| d.| }d/}|d"k(  rt        j                  nt        j                  }t        j                   d0| }t        |      d1||d2}	 t               }|j                  ||j!                  d3      |d45      }|j"                  d6k(  rt%        d7| d8|
        y y # t&        $ r}t%        d9|
 d:|        Y d }~y d }~ww xY w);N_restock_durationproductNamezUnknown Product
finalPricezN/AsavePercentproductConditionurl productCodehttpaddedzProduct Restocked: zModel: z
Price: z INR (-z%)
Condition: z
CPU: z
GPU: z
Restocked after: z%arrows_counterclockwise,computer,bellzProduct Added: new,computer,bell
price_dropzPrice Drop: z
New Price: z
 INR (Was z INR)
Savings: -z%
CPU: z0chart_with_downwards_trend,money_with_wings,bell
price_hikezPrice Hike: z#chart_with_upwards_trend,chart,bellremovedzProduct Removed: zLast Price: z%)zCondition: zCPU: zGPU: zListed for: z0This item is temporarily unavailable or removed.
zwastebasket,x,bellzTracker Alert: z
Unknown event type: zwarning,bellr   highr   r   r   Clickr   r    r!   r%   zPush notification (z) sent for zError sending notification for : )getr   DEFAULT_CONDITION
startswithLENOVO_BASE_URLLENOVO_LAPTOPS_URLr   r   appendjoinNTFY_TOPIC_REMOVEDr(   r'   r   r   r)   r   r*   r   r+   )r7   r8   r9   r:   r;   r	   pricesaving	conditionurl_pathcode	click_urldisplay_namecpugpur,   r-   tagslinestopicr.   r#   r/   r0   r1   s                            r   send_push_notificationrd   7   s    ";;':;;;}&78DKKe,E[[.F.0J0JKI{{5"%H;;}%D 6"		//0
;	//	!$'L"7+HCG),8EvYugWVHOT]S^^efiejjqruqv  wJ  K[  J\  ]G:D%l^4EvYugWVHOT]S^^efiejjqruqvwG&D	l	"|n-D6ugZ	{J[\b[ccklokppwx{w|}A	l	"|n-D6ugZ	{J[\b[ccklokppwx{w|}4	i	#L>24&!"E>LL<wgfXR@ALL;yk23uSE]#uSE]#LL<(8'9:;GH))E"#!,0D6WSE9OPY{[+4	+AH''xGZGZE(()5'2H  &	G<.<<w~~g/FPWac<d3&&ykTFCD ' <.tfBqc:;;<s   ,AJ< <	K KK batchrc   c                    t        |       }d}t        d||      D cg c]
  }| |||z     }}t        |      }t        |      D ]_  \  }}	|dkD  rd|dz    d| dnd}
|dk(  r| d	|
 }d
}| dg}|	D ]  }|j                  dd      }t	        |j                  dd      d      }|j                  dd      }|j                  d      }|rd| dnd}t        |      \  }}|j                  d| d| d| d| d| d| d        n|dk(  r| d|
 }d}| dg}|	D ]z  }|j                  dd      }t	        |j                  dd      d      }|j                  d      }|rd| dnd}t        |      \  }}|j                  d| d| d| d| d| d       | np| d|
 }d}| d g}|	D ]\  }|j                  dd      }t	        |j                  dd      d      }t        |      \  }}|j                  d| d| d!| d| d	       ^ t        j                   d| }t        |      d"|t        j                  d#}	 t               }|j                  |d$j                  |      j                  d%      |d&'      }|j                  d(k(  rt!        d)| d*|dz    d| d+       b y c c}w # t"        $ r}t!        d,|dz    d-|        Y d }~d }~ww xY w).N   r      z (r   )rC   rF   z Products Added / RestockedrG   z% new or restocked products detected:
rD   ?r>   Unknown   r?   r=   z (Restocked after: u   • u    — z INR (z | rJ   z Products Removedzwastebasket,bellz. products temporarily unavailable or removed:
_listing_durationz (Listed for: z Tracker Eventsbellz events occurred:
z) (rL   rM   rK   r   r    r!   r%   zBatch notification (z, chunk z) sent.z'Error sending batch notification chunk rO   )r   range	enumeraterP   r   r   rU   r   r'   r   rT   r   r)   rV   r   r*   r   r+   )re   r8   rc   count
chunk_sizeichunkstotal_partsindexchunkpart_suffixr,   ra   rb   pr\   r	   rX   restock_durduration_strr_   r`   durationr.   r#   r/   r0   r1   s                               r   _send_batch_summaryr}      sw   
 JEJ/4Qz/JK/J!eAa*n%/JFKf+K!&)u9Dq519+Q{m15bg8FE&DwDEFEuu]C0%aeeM9&ErJlC0ee$78GR!4[MCXZ.q1StD6ugVD6<.PRSVRWWZ[^Z__`ab  )#g.{m<E%DwMNOEuu]C0%aeeM9&ErJ55!45?Gz;R.q1StD6D6<.3%s3%qQR  g_[M:EDw123Euu]C0%aeeM9&ErJ.q1StD6D6SESECD	  ,,-Qug6#E*00	
	K"nG||H499U3C3J3J73S]dnp|qH##s*+I;huQwiqU\]^_ * Lf  	K:57)2aSIJJ	Ks   J( A$J--	K6KK)(   )rF   NNN)timetypingr   email.headerr   backend.configr   backend.logging_configr   backend.scraper.apir   backend.scraper.enrichmentr   strintr   r   r2   r6   dictfloatrd   listr}    r   r   <module>r      s	      # ' , :" "s "C "
- - -9 9 9"F3 Fs Ft F& !%&*&*Q<Q<Q< Q< sm	Q<
 smQ< 
Q<f;K:;K;K ;K 
	;Kr   