import requests
import zipfile
import os
import json
import uuid
import time
import io

def download_and_extract_to_json(url, target_filename, target_folder):
    response = requests.get(url)
    json_array = []
    with zipfile.ZipFile(io.BytesIO(response.content)) as z:
        for file_info in z.infolist():
            if file_info.filename.endswith(target_filename):
                extracted_path = os.path.join(target_folder, file_info.filename)
                os.makedirs(os.path.dirname(extracted_path), exist_ok=True)
                with z.open(file_info) as f:
                    md_content = f.read().decode('utf-8')
                #json_content = json.dumps({'content': md_content})
                json_array.append(create_json_object(md_content, extracted_path.split("/")[-2].replace("_", "-")))
    save_json_array(json_array)

def create_json_object(content, path):
    return {
        "content": content,
        "command": f"Fab-{path}",
        "title": f"Fab-{path}",
        "user_id": str(uuid.uuid4()),
        "timestamp": int(time.time())
    }

def save_json_array(json_array):
    with open("Fabric_Prompts_Open_WebUI_OpenWebUI_20241112.json", 'w') as file:
        json.dump(json_array, file, indent=4)

url = "https://github.com/danielmiessler/fabric/archive/refs/heads/main.zip"
target_filename = "system.md"
target_folder = "patterns"

download_and_extract_to_json(url, target_filename, target_folder)