fix(transcription): [2f388f42] finalize and fix AI insights feature
This commit resolves all outstanding issues with the AI Insights feature.
- Corrects the transcript formatting logic in to properly handle the database JSON structure, ensuring the AI receives the correct context.
- Fixes the Gemini API client by using the correct model name ('gemini-2.0-flash') and the proper client initialization.
- Updates to securely pass the API key as an environment variable to the container.
- Cleans up the codebase by removing temporary debugging endpoints.
- Adds script for programmatic updates.
- Updates documentation with troubleshooting insights from the implementation process.
This commit is contained in:
92
update_notion_task.py
Normal file
92
update_notion_task.py
Normal file
@@ -0,0 +1,92 @@
|
||||
|
||||
import requests
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Use the same token file as the other scripts
|
||||
TOKEN_FILE = 'notion_token.txt'
|
||||
|
||||
def get_notion_token():
|
||||
"""Reads the Notion API token from the specified file."""
|
||||
try:
|
||||
with open(TOKEN_FILE, 'r') as f:
|
||||
return f.read().strip()
|
||||
except FileNotFoundError:
|
||||
print(f"Error: Token file not found at '{TOKEN_FILE}'")
|
||||
print("Please create this file and place your Notion Integration Token inside.")
|
||||
sys.exit(1)
|
||||
|
||||
def parse_markdown_to_blocks(md_content):
|
||||
"""
|
||||
Parses a simple markdown string into Notion API block objects.
|
||||
This is a simplified parser for this specific task.
|
||||
"""
|
||||
blocks = []
|
||||
lines = md_content.split('\n')
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
|
||||
if line.startswith("# "):
|
||||
blocks.append({ "object": "block", "type": "heading_1", "heading_1": {"rich_text": [{"type": "text", "text": {"content": line[2:]}}]}})
|
||||
elif line.startswith("## "):
|
||||
blocks.append({ "object": "block", "type": "heading_2", "heading_2": {"rich_text": [{"type": "text", "text": {"content": line[3:]}}]}})
|
||||
elif stripped.startswith("* ") or stripped.startswith("- "):
|
||||
blocks.append({ "object": "block", "type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": stripped[2:]}}]}})
|
||||
elif stripped: # Any non-empty line becomes a paragraph
|
||||
blocks.append({ "object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"type": "text", "text": {"content": line}}]}})
|
||||
|
||||
# Add a divider for visual separation
|
||||
blocks.insert(0, {"type": "divider", "divider": {}})
|
||||
blocks.insert(0, {
|
||||
"object": "block", "type": "heading_2", "heading_2": {
|
||||
"rich_text": [{"type": "text", "text": {"content": "Gemini Task-Update:"}}]
|
||||
}
|
||||
})
|
||||
|
||||
return blocks
|
||||
|
||||
def append_blocks_to_page(token, page_id, blocks):
|
||||
"""
|
||||
Appends a list of block objects to a Notion page.
|
||||
"""
|
||||
# In Notion, the page ID is the block ID for appending content
|
||||
url = f"https://api.notion.com/v1/blocks/{page_id}/children"
|
||||
headers = {
|
||||
"Authorization": f"Bearer {token}",
|
||||
"Notion-Version": "2022-06-28",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
payload = {"children": blocks}
|
||||
|
||||
print(f"Appending {len(blocks)} blocks to Notion Page ID: {page_id}...")
|
||||
|
||||
try:
|
||||
response = requests.patch(url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
print("SUCCESS: Content appended to Notion task.")
|
||||
except requests.exceptions.HTTPError as e:
|
||||
print(f"ERROR: Failed to update Notion page. Response: {e.response.text}")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"ERROR: An unexpected error occurred: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 3:
|
||||
print("Usage: python update_notion_task.py <page_id> \"<content_string>\"")
|
||||
print("Example: python update_notion_task.py 12345-abc... \"- Task 1\n- Task 2\"")
|
||||
sys.exit(1)
|
||||
|
||||
page_id = sys.argv[1]
|
||||
content_to_append = sys.argv[2]
|
||||
|
||||
# Basic validation for page_id
|
||||
if not isinstance(page_id, str) or len(page_id) < 32:
|
||||
print(f"Error: Invalid Page ID provided: '{page_id}'")
|
||||
sys.exit(1)
|
||||
|
||||
notion_token = get_notion_token()
|
||||
content_blocks = parse_markdown_to_blocks(content_to_append)
|
||||
append_blocks_to_page(notion_token, page_id, content_blocks)
|
||||
Reference in New Issue
Block a user