import ai_generators.ollama_md_generator as omg import trilium.notes as tn import repo_management.repo_manager as git_repo from notifications.n8n import N8NWebhookJwt import string,os from datetime import datetime from dotenv import load_dotenv load_dotenv() print(os.environ["CONTENT_CREATOR_MODELS"]) tril = tn.TrilumNotes() tril.get_new_notes() tril_notes = tril.get_notes_content() def convert_to_lowercase_with_underscores(s): allowed = set(string.ascii_letters + string.digits + ' ') filtered_string = ''.join(c for c in s if c in allowed) return filtered_string.lower().replace(" ", "_") for note in tril_notes: print(tril_notes[note]['title']) # print(tril_notes[note]['content']) print("Generating Document") os_friendly_title = convert_to_lowercase_with_underscores(tril_notes[note]['title']) ai_gen = omg.OllamaGenerator(os_friendly_title, tril_notes[note]['content'], tril_notes[note]['title']) blog_path = f"generated_files/{os_friendly_title}.md" ai_gen.save_to_file(blog_path) # Generate commit messages and push to repo print("Generating Commit Message") git_sytem_prompt = "You are a blog creator commiting a piece of content to a central git repo" git_human_prompt = f"Generate a 5 word git commit message describing {ai_gen.response}. ONLY OUTPUT THE RESPONSE" commit_message = ai_gen.generate_system_message(git_sytem_prompt, git_human_prompt) git_user = os.environ["GIT_USER"] git_pass = os.environ["GIT_PASS"] repo_manager = git_repo.GitRepository("blog/", git_user, git_pass) print("Pushing to Repo") repo_manager.create_copy_commit_push(blog_path, os_friendly_title, commit_message) # Generate notification for Matrix print("Generating Notification Message") git_branch_url = f'https://git.aridgwayweb.com/armistace/blog/src/branch/{os_friendly_title}/src/content/{os_friendly_title}.md' n8n_system_prompt = f"You are a blog creator notifiying the final editor of the final creation of blog available at {git_branch_url}" n8n_prompt_human = f""" Generate an informal 150 word summary describing {ai_gen.response}. Don't address it or use names. ONLY OUTPUT THE RESPONSE """ notification_message = ai_gen.generate_system_message(n8n_system_prompt, n8n_prompt_human) secret_key = os.environ['N8N_SECRET'] webhook_url = os.environ['N8N_WEBHOOK_URL'] notification_string = f""" <h2>{tril_notes[note]['title']}</h2> <h3>Summary</h3> <p>{notification_message}</p> <h3>Branch</h3> <p>{os_friendly_title}</p> <p><a href="{git_branch_url}">Link to Branch</a></p> """ payload = { "message": f"{notification_string}", "timestamp": datetime.now().isoformat() } webhook_client = N8NWebhookJwt(secret_key, webhook_url) print("Notifying") n8n_result = webhook_client.send_webhook(payload) print(f"N8N response: {n8n_result['status']}")