Spaces:
Sleeping
Sleeping
| import os | |
| import streamlit as st | |
| from langchain_community.document_loaders import PyPDFLoader | |
| import uuid # For generating unique identifiers | |
| def load_pdfs_from_file(file_path): | |
| loader = PyPDFLoader(file_path) | |
| docs = loader.load() | |
| print(file_path) | |
| for i, doc in enumerate(docs): | |
| doc.metadata['title'] = file_path.split("/")[-1] | |
| doc.metadata['page'] = i + 1 | |
| return docs | |
| def save_uploaded_file(uploaded_file, directory): | |
| if not os.path.exists(directory): | |
| os.makedirs(directory) | |
| file_path = os.path.join(directory, uploaded_file.name) | |
| with open(file_path, "wb") as f: | |
| f.write(uploaded_file.getbuffer()) | |
| # st.write(file_path,"path") | |
| return file_path | |
| def load_pdfs_from_folder(folder_path): | |
| documents = [] | |
| # print(os.listdir(folder_path)) | |
| for filename in os.listdir(folder_path): | |
| if filename.endswith(".pdf"): | |
| file_path = os.path.join(folder_path, filename) | |
| loader = PyPDFLoader(file_path) | |
| docs = loader.load() | |
| for i, doc in enumerate(docs): | |
| doc.metadata['title'] = filename | |
| doc.metadata['page'] = i + 1 | |
| documents.extend(docs) | |
| return documents | |
| # Example usage | |
| # Add these functions after the existing imports | |
| def create_user_storage(): | |
| """Create user-specific storage directories if they don't exist""" | |
| # Create base directories | |
| user_dir = Path.home()/"chatbot_storage" | |
| pdf_dir = user_dir / "pdfs" | |
| embedding_dir = user_dir / "embeddings" | |
| # Create directories if they don't exist | |
| pdf_dir.mkdir(parents=True, exist_ok=True) | |
| embedding_dir.mkdir(parents=True, exist_ok=True) | |
| return pdf_dir, embedding_dir | |
| def save_to_user_storage(uploaded_file): | |
| """Save uploaded file to user's local storage""" | |
| if uploaded_file is None: | |
| return None | |
| pdf_dir, _ = create_user_storage() | |
| file_path = pdf_dir / uploaded_file.name | |
| # Save file | |
| with open(file_path, "wb") as f: | |
| f.write(uploaded_file.getvalue()) | |
| return str(file_path) | |
| # Modify the existing get_embedding_path function | |
| def get_embedding_path(file_hash): | |
| """Get the path where embeddings should be stored""" | |
| _, embedding_dir = create_user_storage() | |
| return embedding_dir / f"{file_hash}_embeddings" | |
| # Replace the existing file processing section with this updated version | |