o
    ³rWj7  ã                   @  s6   d dl mZ d dlmZ d dlmZ G dd„ dƒZdS )é    )Úannotations)ÚPath)Úread_text_filesc                   @  s8   e Zd ZdZddd„Zdd	d
„Zddd„Zddd„ZdS )ÚKnowledgeServicez>Loads local reference materials (creator profiles + ERP docs).Úprofiles_dirr   Úerp_dirc                 C  s   || _ || _d S )N)r   r   )Úselfr   r   © r	   úC/home/esfera/Documents/content_generation/src/services/knowledge.pyÚ__init__   s   
zKnowledgeService.__init__ÚreturnÚstrc                 C  s   t | jdd�}|p
dS )Ni N  ©Úlimit_charsz$(Nessun profilo di esempio fornito.))r   r   )r   Útextr	   r	   r
   Úprofiles_text   s   zKnowledgeService.profiles_textc                 C  s:   t | jdd�}| j| jdd�}|r|d |  ¡ }|pdS )Ni¸ˆ  r   i˜:  z

z%(Nessuna documentazione ERP fornita.))r   r   Ú_extract_pdfsÚstrip)r   r   Ú	pdf_extrar	   r	   r
   Úerp_text   s
   zKnowledgeService.erp_textÚfolderr   Úintc              	   C  s  |  ¡ sdS zddlm} W n
 ty   Y dS w g }d}t| d¡ƒD ]b}z$|t|ƒƒ}g }|jd d… D ]}	| |	 	¡ p?d¡ q6d 
|¡ ¡ }
W n	 tyS   Y q$w |
sWq$d|j› d|
› d�}|t|ƒ |kr{| |d td|| ƒ… d ¡  n| |¡ |t|ƒ7 }q$d 
|¡S )	NÚ r   )Ú	PdfReaderz*.pdfé   Ú
z	### PDF: z
...[truncated])ÚexistsÚPyPDF2r   ÚImportErrorÚsortedÚrglobr   ÚpagesÚappendÚextract_textÚjoinr   Ú	ExceptionÚnameÚlenÚmax)r   r   r   r   ÚchunksÚtotalÚpathÚreaderr!   ÚpageÚbodyÚpiecer	   r	   r
   r      s8   ÿÿ 

zKnowledgeService._extract_pdfsN)r   r   r   r   )r   r   )r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r	   r	   r	   r
   r      s    


r   N)Ú
__future__r   Úpathlibr   Úsrc.util.textr   r   r	   r	   r	   r
   Ú<module>   s    