matrix_org_to_json.py (1899B)
1 import frontmatter 2 from pathlib import Path 3 import json 4 import toml 5 6 BASE_PATH = Path("../../matrix.org") 7 ECOSYSTEM_PATH = BASE_PATH / "content/ecosystem/" 8 9 output_json = {"client": [], "provider": [], "sdk": [], "integration": [], "server": []} 10 11 clients_path = (ECOSYSTEM_PATH / "clients").glob("*.md") 12 id = 0 13 for file in clients_path: 14 filename = file.stem 15 if filename == "_index": 16 continue 17 with open(file) as f: 18 client = frontmatter.load(f) 19 client_json = client.metadata["extra"] 20 client_json["id"] = id 21 client_json["name"] = filename 22 client_json["description"] = client.content 23 output_json["client"].append(client_json) 24 id += 1 25 26 sdks_path = ECOSYSTEM_PATH / "sdks" / "sdks.toml" 27 sdks = toml.load(sdks_path) 28 id = 0 29 for sdk in sdks["sdks"]: 30 sdk_json = sdk 31 sdk_json["id"] = id 32 output_json["sdk"].append(sdk_json) 33 id += 1 34 35 36 integrations_path = ECOSYSTEM_PATH / "integrations" / "integrations.toml" 37 integrations = toml.load(integrations_path) 38 id = 0 39 for integration in integrations["integrations"]: 40 integration_json = integration 41 integration_json["id"] = id 42 output_json["integration"].append(integration_json) 43 id += 1 44 45 providers_path = ECOSYSTEM_PATH / "hosting" / "providers.toml" 46 providers = toml.load(providers_path) 47 id = 0 48 for provider in providers["providers"]: 49 provider_json = provider 50 provider_json["id"] = id 51 del provider_json["image"] 52 output_json["provider"].append(provider_json) 53 id += 1 54 55 servers_path = ECOSYSTEM_PATH / "servers" / "servers.toml" 56 servers = toml.load(servers_path) 57 id = 0 58 for server in servers["servers"]: 59 server_json = server 60 server_json["id"] = id 61 output_json["server"].append(server_json) 62 id += 1 63 64 with open("../knowledge_base_data.json", "w", encoding="utf-8") as f: 65 json.dump(output_json, f, ensure_ascii=False, indent=4)