#!/usr/bin/env python3 """ Script para crear una nueva base de datos de Notion y compartirla automáticamente """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) from config import settings from notion_client import Client def main(): print("\n" + "=" * 70) print("🛠️ CREAR BASE DE DATOS DE NOTION PARA CBCFACIL") print("=" * 70 + "\n") token = settings.NOTION_API_TOKEN if not token: print("❌ Token no configurado en .env") return client = Client(auth=token) # Primero, buscar una página donde crear la database print("🔍 Buscando páginas accesibles...\n") results = client.search(page_size=100) pages = [p for p in results.get("results", []) if p.get("object") == "page"] if not pages: print("❌ No tienes páginas accesibles.") print("\n📋 SOLUCIÓN:") print("1. Ve a Notion y crea una nueva página") print("2. En esa página, click en 'Share'") print("3. Busca y agrega tu integración") print("4. Ejecuta este script nuevamente\n") return # Mostrar páginas disponibles print(f"✅ Encontradas {len(pages)} página(s) accesibles:\n") for i, page in enumerate(pages[:10], 1): page_id = page.get("id") props = page.get("properties", {}) # Intentar obtener el título title = "Sin título" for prop_name, prop_data in props.items(): if prop_data.get("type") == "title": title_list = prop_data.get("title", []) if title_list: title = title_list[0].get("plain_text", "Sin título") break print(f"{i}. {title[:50]}") print(f" ID: {page_id}\n") # Usar la primera página accesible parent_page = pages[0] parent_id = parent_page.get("id") print("=" * 70) print(f"📄 Voy a crear la base de datos dentro de la primera página") print("=" * 70 + "\n") try: # Crear la base de datos print("🚀 Creando base de datos 'CBCFacil - Documentos'...\n") database = client.databases.create( parent={"page_id": parent_id}, title=[ { "type": "text", "text": {"content": "CBCFacil - Documentos Procesados"}, } ], properties={ "Name": {"title": {}}, "Status": { "select": { "options": [ {"name": "Procesado", "color": "green"}, {"name": "En Proceso", "color": "yellow"}, {"name": "Error", "color": "red"}, ] } }, "Tipo": { "select": { "options": [ {"name": "AUDIO", "color": "purple"}, {"name": "PDF", "color": "orange"}, {"name": "TEXTO", "color": "gray"}, ] } }, "Fecha": {"date": {}}, }, ) db_id = database["id"] print("✅ ¡Base de datos creada exitosamente!") print("=" * 70) print(f"\n📊 Información de la base de datos:\n") print(f" Nombre: CBCFacil - Documentos Procesados") print(f" ID: {db_id}") print(f" URL: https://notion.so/{db_id.replace('-', '')}") print("\n=" * 70) print("\n🎯 SIGUIENTE PASO:") print("=" * 70) print(f"\nActualiza tu archivo .env con:\n") print(f"NOTION_DATABASE_ID={db_id}\n") print("Luego ejecuta:") print("python test_notion_integration.py\n") print("=" * 70 + "\n") except Exception as e: print(f"❌ Error creando base de datos: {e}") print("\nVerifica que la integración tenga permisos de escritura.\n") if __name__ == "__main__": main()