Files
Brancheneinstufung2/scripts/fetch_product_mapping.py
2026-02-18 09:42:34 +00:00

47 lines
1.4 KiB
Python

import os
import requests
import json
from dotenv import load_dotenv
load_dotenv(dotenv_path="/home/node/clawd/.env")
NOTION_TOKEN = os.getenv("NOTION_API_KEY")
HEADERS = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
def find_db_id(query_name):
url = "https://api.notion.com/v1/search"
payload = {"query": query_name, "filter": {"value": "database", "property": "object"}}
resp = requests.post(url, headers=HEADERS, json=payload)
if resp.status_code == 200:
results = resp.json().get("results", [])
if results: return results[0]['id']
return None
def fetch_products():
db_id = find_db_id("Product Categories") or find_db_id("Products")
if not db_id: return
url = f"https://api.notion.com/v1/databases/{db_id}/query"
resp = requests.post(url, headers=HEADERS, json={})
products = {}
if resp.status_code == 200:
results = resp.json().get("results", [])
for page in results:
props = page['properties']
name = "Unknown"
if "Name" in props and props["Name"]["title"]:
name = props["Name"]["title"][0]["plain_text"]
products[name] = page['id']
os.makedirs("data", exist_ok=True)
with open("data/product_mapping.json", "w") as f:
json.dump(products, f, indent=4)
if __name__ == "__main__":
fetch_products()