Spaces:
Sleeping
Sleeping
| # utils.py | |
| import os | |
| import zipfile | |
| import base64 | |
| import re | |
| import logging | |
| def compress_directory_to_zip(directory_path, output_zip_path): | |
| """ | |
| Compresses the specified directory into a ZIP file. | |
| """ | |
| try: | |
| with zipfile.ZipFile(output_zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf: | |
| for root, dirs, files in os.walk(directory_path): | |
| for file in files: | |
| file_path = os.path.join(root, file) | |
| arcname = os.path.relpath(file_path, directory_path) | |
| zipf.write(file_path, arcname) | |
| return True | |
| except Exception as e: | |
| logging.exception("Error compressing directory: %s", e) | |
| return False | |
| def image_to_base64(image_path): | |
| with open(image_path, "rb") as image_file: | |
| return base64.b64encode(image_file.read()).decode('utf-8') | |
| def replace_image_with_base64(markdown_text, image_dir_path): | |
| """ | |
| Finds markdown image tags and replaces file paths with embedded base64 data. | |
| """ | |
| pattern = r'\!\[(?:[^\]]*)\]\(([^)]+)\)' | |
| def replace(match): | |
| relative_path = match.group(1) | |
| full_path = os.path.join(image_dir_path, relative_path) | |
| base64_image = image_to_base64(full_path) | |
| return f"" | |
| return re.sub(pattern, replace, markdown_text) | |