
    ph*
                     l    d dl Z d dlZd dlmZ d dlmZmZ  e j                  e      ZdZ	 G d d      Z
y)    N)datetime)DictListmatch_config_csvc                   ~    e Zd ZddedefdZdededefdZdededee   fd	Z	d
ede
eef   fdZdedededefdZy)OutputServiceNcrawl_out_pathmatched_pathc                 0    |t         n|| _        || _        y )N)MATCH_CONFIG_CSV_PATHr	   r
   )selfr	   r
   s      `/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/match/services/output_service.py__init__zOutputService.__init__   s    7E7M3Sa(    codedatereturnc                     t         j                  j                  t        | d|j	                  d       d      }t         j                  j                  |      }|st        j                  d|        |S )N-%Y-%m-%d.txtzCrawl output not found: )ospathjoinr   strftimeisfileloggerwarning)r   r   r   	file_pathexistss        r   is_valid_crawl_outputz#OutputService.is_valid_crawl_output   s^    GGLL!64&$--PZB[A\\`8ab		*NN5i[ABr   c                    t         j                  j                  t        | d|j	                  d       d      }g }	 t        |d      5 }t        |      D cg c],  \  }}|dkD  s|j                         s|j                         . }}}d d d        |S c c}}w # 1 sw Y   |S xY w# t        $ r t        j                  d|        Y |S t        $ r&}t        j                  d| d	|        Y d }~|S d }~ww xY w)
Nr   r   r   utf-8encodingr   zFile not found: zError reading file z: )r   r   r   r   r   open	enumeratestripFileNotFoundErrorr   r   	Exceptionerror)	r   r   r   r   linesfilinees	            r   load_retailer_outputz"OutputService.load_retailer_output   s    GGLL!64&$--PZB[A\\`8ab		Ai'2 ]a5>q\\'!TQUtzz|\\]  ]] 	 ! 	;NN-i[9:   	ALL.ykA3?@@	AsY   B* 
BB'B8B
BB* BB'"B* 'B* *!C<C<C77C<history_file_namec                    t         j                  j                  t        | d      }i }	 t	        |d      5 }|D ]W  }|j                         j                  d      }t        |      dk(  s1|d   j                         ||d   j                         <   Y 	 d d d        |S # 1 sw Y   |S xY w# t        $ r t        j                  d|        Y |S t        $ r#}t        j                  d	|        Y d }~|S d }~ww xY w)
Nz-history.txtr#   r$   z||   r      zHistory file not found: zError loading history file: )r   r   r   r   r&   r(   splitlenr)   r   r   r*   r+   )r   r2   r   history_mapr-   r/   partsr0   s           r   load_historieszOutputService.load_histories#   s    GGLL!6;L:M\8Z[			=i'2 Ia ID JJL..t4E5zQ8=a8HE!HNN$45II I 	 ! 	CNN5i[AB   	=LL7s;<<	=s@   B- 3B ,)B B-  B*%B- *B- -!C<C<C77C<contentrun_keywordc                    |rdnd}| d|  d|j                  d       d}t        j                  j                  t        |      }t        j
                  t        j                  j                  |      d       	 t        |d	d
      5 }|j                  |       d d d        t        j                  d|        y # 1 sw Y   "xY w# t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)Nkeywordhistory/r   r   z-matched.txtT)exist_okwr#   r$   zSaved matched output: z Failed to write matched output: )r   r   r   r   r   makedirsdirnamer&   writer   infor*   r+   )	r   r;   r   r<   prefix	file_namer   r-   r0   s	            r   save_matched_to_filez"OutputService.save_matched_to_file2   s    )yhavQt}}Z'@&AN	GGLL!6	B	
BGGOOI.>	Aiw7 !1 !KK0<=! !  	ALL;A3?@@	As0   :C B; C ;C C 	C2C--C2)NN)__name__
__module____qualname__strr   r   boolr!   r   r1   r   r:   rI    r   r   r   r      s    )s ) )# X $ 
 
H 
c 
 S#X 
A3 
A 
AH 
ASW 
Ar   r   )loggingr   r   typingr   r   	getLoggerrJ   r   r   r   rO   r   r   <module>rS      s5     	  			8	$* 1A 1Ar   