|  | @@ -1,6 +1,8 @@
 | 
	
		
			
				|  |  |  import csv
 | 
	
		
			
				|  |  |  import io
 | 
	
		
			
				|  |  |  import json
 | 
	
		
			
				|  |  | +import os
 | 
	
		
			
				|  |  | +import tempfile
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import docx
 | 
	
		
			
				|  |  |  import pandas as pd
 | 
	
	
		
			
				|  | @@ -264,14 +266,20 @@ def _extract_text_from_ppt(file_content: bytes) -> str:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def _extract_text_from_pptx(file_content: bytes) -> str:
 | 
	
		
			
				|  |  |      try:
 | 
	
		
			
				|  |  | -        with io.BytesIO(file_content) as file:
 | 
	
		
			
				|  |  | -            if dify_config.UNSTRUCTURED_API_URL and dify_config.UNSTRUCTURED_API_KEY:
 | 
	
		
			
				|  |  | -                elements = partition_via_api(
 | 
	
		
			
				|  |  | -                    file=file,
 | 
	
		
			
				|  |  | -                    api_url=dify_config.UNSTRUCTURED_API_URL,
 | 
	
		
			
				|  |  | -                    api_key=dify_config.UNSTRUCTURED_API_KEY,
 | 
	
		
			
				|  |  | -                )
 | 
	
		
			
				|  |  | -            else:
 | 
	
		
			
				|  |  | +        if dify_config.UNSTRUCTURED_API_URL and dify_config.UNSTRUCTURED_API_KEY:
 | 
	
		
			
				|  |  | +            with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as temp_file:
 | 
	
		
			
				|  |  | +                temp_file.write(file_content)
 | 
	
		
			
				|  |  | +                temp_file.flush()
 | 
	
		
			
				|  |  | +                with open(temp_file.name, "rb") as file:
 | 
	
		
			
				|  |  | +                    elements = partition_via_api(
 | 
	
		
			
				|  |  | +                        file=file,
 | 
	
		
			
				|  |  | +                        metadata_filename=temp_file.name,
 | 
	
		
			
				|  |  | +                        api_url=dify_config.UNSTRUCTURED_API_URL,
 | 
	
		
			
				|  |  | +                        api_key=dify_config.UNSTRUCTURED_API_KEY,
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  | +                os.unlink(temp_file.name)
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            with io.BytesIO(file_content) as file:
 | 
	
		
			
				|  |  |                  elements = partition_pptx(file=file)
 | 
	
		
			
				|  |  |          return "\n".join([getattr(element, "text", "") for element in elements])
 | 
	
		
			
				|  |  |      except Exception as e:
 |