| import mimetypes |
| import os |
|
|
| from langchain_community.document_loaders import PyPDFLoader, TextLoader |
|
|
|
|
| def load_documents(data_dir): |
| """ |
| Load supported documents from a file path or directory. |
| """ |
|
|
| documents = [] |
| data_dir = str(data_dir) |
|
|
| if data_dir.endswith(".txt") or data_dir.endswith(".pdf"): |
| loader = _build_loader(data_dir) |
| return loader.load() if loader else [] |
|
|
| if os.path.isdir(data_dir): |
| for root, _, files in os.walk(data_dir): |
| for file_name in files: |
| file_path = os.path.join(root, file_name) |
| loader = _build_loader(file_path) |
| if loader is None: |
| continue |
| documents.extend(loader.load()) |
| return documents |
|
|
| print(f"Invalid path: {data_dir}") |
| return [] |
|
|
|
|
| def _build_loader(file_path): |
| data_type = mimetypes.guess_type(file_path)[0] |
| if data_type == "text/plain": |
| return TextLoader(file_path) |
| if data_type == "application/pdf": |
| return PyPDFLoader(file_path) |
|
|
| print(f"Unsupported file type: {file_path}") |
| return None |
|
|