| import os |
|
|
| def collect_files(directory, extensions): |
| collected_files = [] |
| for root, dirs, files in os.walk(directory): |
| for file in files: |
| if any(file.endswith(ext) for ext in extensions): |
| file_path = os.path.join(root, file) |
| collected_files.append((file_path, file)) |
| return collected_files |
|
|
| def write_combined_file(text_files, media_files, output_file): |
| with open(output_file, 'w', encoding='utf-8') as aio_file: |
| |
| if text_files: |
| aio_file.write("# Text Files Contents\n") |
| for file_path, file_name in text_files: |
| aio_file.write(f"# File: {file_path}\n") |
| try: |
| with open(file_path, 'r', encoding='utf-8') as file: |
| aio_file.write(file.read()) |
| except Exception as e: |
| aio_file.write(f"Error reading file {file_path}: {str(e)}\n") |
| aio_file.write("\n" + "="*80 + "\n\n") |
| |
| |
| if media_files: |
| aio_file.write("# Media File Paths\n") |
| current_folder = None |
| for file_path, file_name in sorted(media_files, key=lambda x: x[0]): |
| folder = os.path.dirname(file_path) |
| if folder != current_folder: |
| if current_folder is not None: |
| aio_file.write("\n" + "="*80 + "\n\n") |
| aio_file.write(f"# Folder: {folder}\n") |
| current_folder = folder |
| aio_file.write(f"File: {file_path}\n") |
| if current_folder is not None: |
| aio_file.write("\n" + "="*80 + "\n\n") |
|
|
| def main(): |
| directory = os.getcwd() |
| |
| |
| text_extensions = ['.py', '.js', '.html', '.css', '.txt', '.md', '.json'] |
| media_extensions = ['.jpg', '.jpeg', '.png', '.webp', '.avi', '.mp3', '.mp4'] |
| |
| |
| text_files = collect_files(directory, text_extensions) |
| |
| |
| media_files = collect_files(directory, media_extensions) |
| |
| |
| output_file = 'combined.txt' |
| write_combined_file(text_files, media_files, output_file) |
| print(f"All text file contents and media file paths have been written to {output_file}") |
|
|
| if __name__ == "__main__": |
| main() |