o
    zKi                     @   sp  d dl mZmZmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlZe Zd dlZd dlZdd Zd	d
 Zededededededededededf	dedededededededededefddZd dlmZ edededededededededfdededededededededefddZdS )    )FastAPIFormHTTPException)JSONResponseN)generate_slide_content_document)generate_slide_content_youtube)generate_slide_content_htmlc                 C   s4   t j| ddd}|jdkr|jS tdd|j d)NF<   )verifytimeout   i  zDocument not found, status: status_codedetail)requestsgetr   contentr   )urlresponse r   G/var/www/eduai.edurigo.com/storigo/testing/storigo_creation_fast_api.pyfetch_document_with_curl   s   
r   c              
      s   z)t | | t|}t||||||||I d H }	td| d |	 }
t|
dW S  tyV } z tdt	|  tdt	| t
 dddW  Y d }~S d }~ww )	NzSlide content generated for z slides.r   Error generating content: Error: errordetails  r   r   )create_and_save_embeddingsmerge_all_faissgenerate_slide_contentprintdictr   	Exceptionloggingr   str	traceback
format_exc)split_documents	client_id
num_slidesnum_mcqsis_imageis_questionquestion_positionisGPUmerge_embeddingsslide_contentresponse_dataer   r   r   process_and_generate_response   s    
r6   z/generate-storigo-content.r+   r,   document_urlr.   document_typer/   r-   r0   r1   returnc	              
      s  z|dkrft d|  t|}	t dt|	 d tjddd}
|
|	 |
j}t d|  W d    n1 s<w   Y  zt|| ||||||I d H }| }t	|d	W t
| W S t
| w |d
krt d|  t|| ||||||I d H }| }t	|d	W S |dkrt d|  t|| ||||||I d H }| }t	|d	W S tddd ty } z tdt|  t	dt| t dddW  Y d }~S d }~ww )NpdfzFetching document from: zDocument fetched, size: z bytesFz.pdf)deletesuffixzTemporary file saved at: r   youtubezProcessing YouTube URL: htmlzFetching HTML content from: i  z@Unsupported source type. Please use 'pdf', 'html', or 'youtube'.r   r   r   r   r   r   )r#   r   lentempfileNamedTemporaryFilewritenamer   r$   r   osremover   r   r   r%   r&   r   r'   r(   r)   )r+   r,   r7   r.   r8   r/   r-   r0   r1   document_content	temp_filetemp_file_pathr3   r4   r5   r   r   r   generate_storigo_content.   sF   

rI   )"generate_slide_content_from_promptz%/generate-storigo-content-from-promptpromptc              
      s   zt ||||dk|||}| }	t|	dW S  tyC }
 z tdt|
  tdt|
 t dddW  Y d }
~
S d }
~
ww )N   r   r   r   r   r   r   )	rJ   r$   r   r%   r&   r   r'   r(   r)   )r+   rK   r,   r.   r/   r-   r0   r1   storigo_contentr4   r5   r   r   r   $generate_storigo_content_from_prompt|   s   rN   )fastapir   r   r   fastapi.responsesr   r@   r   !generate_storigo_content_documentr    generate_storigo_content_youtuber   generate_storigo_content_htmlr   rD   appr&   r(   r   r6   postr'   intrI   rN   rJ   r   r   r   r   <module>   s    	
K	