2024-10-20 19:23:47 +02:00
|
|
|
import json
|
2025-04-07 21:02:19 +02:00
|
|
|
import os
|
2024-10-20 19:23:47 +02:00
|
|
|
import sys
|
|
|
|
from pathlib import Path
|
2025-04-07 21:02:19 +02:00
|
|
|
|
2024-10-20 19:23:47 +02:00
|
|
|
|
|
|
|
def generate_folder_tree(paths):
|
|
|
|
tree = {}
|
2025-01-05 02:10:02 +01:00
|
|
|
webp_files = []
|
2024-10-20 19:23:47 +02:00
|
|
|
for path in paths:
|
|
|
|
resolved_path = Path(path).resolve()
|
|
|
|
base_folder = resolved_path.name or Path.cwd().name
|
|
|
|
for root, _, files in os.walk(resolved_path):
|
|
|
|
relative_path = os.path.relpath(root, resolved_path)
|
|
|
|
key = base_folder if relative_path == '.' else os.path.join(base_folder, relative_path)
|
|
|
|
if files:
|
|
|
|
tree[key] = sorted(files) # Sort the list of files alphabetically
|
2025-01-05 02:10:02 +01:00
|
|
|
# Collect WebP files for XML generation
|
|
|
|
for file in files:
|
|
|
|
if file.lower().endswith('.webp'):
|
|
|
|
webp_files.append(os.path.join(root, file))
|
|
|
|
return tree, webp_files
|
|
|
|
|
2024-10-20 19:23:47 +02:00
|
|
|
if __name__ == "__main__":
|
|
|
|
# Adjust paths to be one level up
|
|
|
|
folder_paths = sys.argv[1:]
|
|
|
|
folder_paths = [str(Path(path).resolve()) for path in folder_paths]
|
|
|
|
|
|
|
|
if not folder_paths:
|
|
|
|
print("Please provide at least one folder path.")
|
|
|
|
sys.exit(1)
|
|
|
|
|
2025-01-05 02:10:02 +01:00
|
|
|
# Generate the folder tree and get WebP files
|
|
|
|
folder_tree, webp_files = generate_folder_tree(folder_paths)
|
2024-10-20 19:23:47 +02:00
|
|
|
|
2025-01-05 01:07:39 +01:00
|
|
|
# Write the JSON structure to 'tree.json' in the parent folder
|
2024-10-20 19:43:18 +02:00
|
|
|
root_dir = Path(__file__).resolve().parent
|
2025-01-05 01:07:39 +01:00
|
|
|
tree_json_path = root_dir.parent / 'tree.json'
|
2024-10-20 19:23:47 +02:00
|
|
|
with open(tree_json_path, 'w') as f:
|
|
|
|
json.dump(folder_tree, f, indent=4, sort_keys=True) # Sort the keys in the JSON output
|
2025-04-07 21:02:19 +02:00
|
|
|
print(f"Folder tree successfully written to '{tree_json_path}'.")
|