|
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() |