From 96cf98c2cf6bdedfcb05026ff75ff6e4a8a56cdb Mon Sep 17 00:00:00 2001 From: Shane Date: Wed, 30 Apr 2025 19:33:43 +1000 Subject: [PATCH] remove x config & merge --- foodie_config.py | 6 +++ foodie_utils.py | 1 - foodie_x_config.py | 124 --------------------------------------------- foodie_x_poster.py | 2 +- 4 files changed, 7 insertions(+), 126 deletions(-) delete mode 100644 foodie_x_config.py diff --git a/foodie_config.py b/foodie_config.py index 0d68e92..86e3d0a 100644 --- a/foodie_config.py +++ b/foodie_config.py @@ -129,6 +129,7 @@ PERSONA_CONFIGS = { "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " "For article tweets, include the article title, a quirky hook, and the URL. " "For engagement tweets, ask a question about food trends, foods, or articles to engage the public. " + "For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) }, @@ -145,6 +146,7 @@ PERSONA_CONFIGS = { "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " "For article tweets, include the article title, a quirky hook, and the URL. " "For engagement tweets, ask a question about food trends, foods, or articles to engage the public. " + "For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) }, @@ -161,6 +163,7 @@ PERSONA_CONFIGS = { "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " "For article tweets, include the article title, a quirky hook, and the URL. " "For engagement tweets, ask a question about food trends, foods, or articles to engage the public. " + "For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) }, @@ -177,6 +180,7 @@ PERSONA_CONFIGS = { "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " "For article tweets, include the article title, a quirky hook, and the URL. " "For engagement tweets, ask a question about food trends, foods, or articles to engage the public. " + "For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) }, @@ -193,6 +197,7 @@ PERSONA_CONFIGS = { "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " "For article tweets, include the article title, a quirky hook, and the URL. " "For engagement tweets, ask a question about food trends, foods, or articles to engage the public. " + "For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) }, @@ -209,6 +214,7 @@ PERSONA_CONFIGS = { "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " "For article tweets, include the article title, a quirky hook, and the URL. " "For engagement tweets, ask a question about food trends, foods, or articles to engage the public. " + "For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) } diff --git a/foodie_utils.py b/foodie_utils.py index 4b01589..46f8eb2 100644 --- a/foodie_utils.py +++ b/foodie_utils.py @@ -131,7 +131,6 @@ def generate_article_tweet(author, post, persona): f"Generate a concise tweet (under 280 characters) for {author_handle} using the persona '{persona}'. " f"Summarize the article '{title}' and include the link '{url}'. " f"Highlight the article's appeal, make it engaging, and encourage interaction. " - f"Always mention 'InsiderFoodie.com' in the tweet. " f"Avoid using the word 'elevate'—use more humanized language like 'level up' or 'bring to life'. " f"Do not include hashtags or emojis." ) diff --git a/foodie_x_config.py b/foodie_x_config.py deleted file mode 100644 index d577bdf..0000000 --- a/foodie_x_config.py +++ /dev/null @@ -1,124 +0,0 @@ -# foodie_x_config.py -from dotenv import load_dotenv -import os - -load_dotenv() - -X_API_CREDENTIALS = [ - { - "username": "owenjohnson", - "x_username": "@insiderfoodieowen", - "api_key": os.getenv("OWENJOHNSON_X_API_KEY"), - "api_secret": os.getenv("OWENJOHNSON_X_API_SECRET"), - "access_token": os.getenv("OWENJOHNSON_X_ACCESS_TOKEN"), - "access_token_secret": os.getenv("OWENJOHNSON_X_ACCESS_TOKEN_SECRET"), - "client_secret": os.getenv("OWENJOHNSON_X_CLIENT_SECRET") - }, - { - "username": "javiermorales", - "x_username": "@insiderfoodiejavier", - "api_key": os.getenv("JAVIERMORALES_X_API_KEY"), - "api_secret": os.getenv("JAVIERMORALES_X_API_SECRET"), - "access_token": os.getenv("JAVIERMORALES_X_ACCESS_TOKEN"), - "access_token_secret": os.getenv("JAVIERMORALES_X_ACCESS_TOKEN_SECRET"), - "client_secret": os.getenv("JAVIERMORALES_X_CLIENT_SECRET") - }, - { - "username": "aishapatel", - "x_username": "@insiderfoodieaisha", - "api_key": os.getenv("AISHAPATEL_X_API_KEY"), - "api_secret": os.getenv("AISHAPATEL_X_API_SECRET"), - "access_token": os.getenv("AISHAPATEL_X_ACCESS_TOKEN"), - "access_token_secret": os.getenv("AISHAPATEL_X_ACCESS_TOKEN_SECRET"), - "client_secret": os.getenv("AISHAPATEL_X_CLIENT_SECRET") - }, - { - "username": "trangnguyen", - "x_username": "@insiderfoodietrang", - "api_key": os.getenv("TRANGNGUYEN_X_API_KEY"), - "api_secret": os.getenv("TRANGNGUYEN_X_API_SECRET"), - "access_token": os.getenv("TRANGNGUYEN_X_ACCESS_TOKEN"), - "access_token_secret": os.getenv("TRANGNGUYEN_X_ACCESS_TOKEN_SECRET"), - "client_secret": os.getenv("TRANGNGUYEN_X_CLIENT_SECRET") - }, - { - "username": "keishareid", - "x_username": "@insiderfoodiekeisha", - "api_key": os.getenv("KEISHAREID_X_API_KEY"), - "api_secret": os.getenv("KEISHAREID_X_API_SECRET"), - "access_token": os.getenv("KEISHAREID_X_ACCESS_TOKEN"), - "access_token_secret": os.getenv("KEISHAREID_X_ACCESS_TOKEN_SECRET"), - "client_secret": os.getenv("KEISHAREID_X_CLIENT_SECRET") - }, - { - "username": "lilamoreau", - "x_username": "@insiderfoodielila", - "api_key": os.getenv("LILAMOREAU_X_API_KEY"), - "api_secret": os.getenv("LILAMOREAU_X_API_SECRET"), - "access_token": os.getenv("LILAMOREAU_X_ACCESS_TOKEN"), - "access_token_secret": os.getenv("LILAMOREAU_X_ACCESS_TOKEN_SECRET"), - "client_secret": os.getenv("LILAMOREAU_X_CLIENT_SECRET") - } -] - -X_PERSONA_PROMPTS = { - "Visionary Editor": { - "description": "a commanding food editor with a borderless view", - "tone": "a polished and insightful tone, like 'This redefines culinary excellence.'", - "prompt": ( - "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " - "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " - "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." - ) - }, - "Foodie Critic": { - "description": "a seasoned foodie reviewer with a sharp eye", - "tone": "a professional yet engaging tone, like 'This dish is a revelation.'", - "prompt": ( - "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " - "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " - "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." - ) - }, - "Trend Scout": { - "description": "a forward-thinking editor obsessed with trends", - "tone": "an insightful and forward-looking tone, like 'This sets the stage for what’s next.'", - "prompt": ( - "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " - "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " - "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." - ) - }, - "Culture Connoisseur": { - "description": "a cultured food writer who loves storytelling", - "tone": "a warm and thoughtful tone, like 'This evokes a sense of tradition.'", - "prompt": ( - "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " - "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " - "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." - ) - }, - "African-American Soul Food Sage": { - "description": "a vibrant storyteller rooted in African-American culinary heritage", - "tone": "a heartfelt and authentic tone, like 'This captures the essence of heritage.'", - "prompt": ( - "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " - "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " - "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." - ) - }, - "Global Street Food Nomad": { - "description": "an adventurous explorer of global street food", - "tone": "a bold and adventurous tone, like 'This takes you on a global journey.'", - "prompt": ( - "Craft a tweet as {description}. Keep it under 280 characters, using {tone}. " - "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " - "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." - ) - } -} - - -AUTHOR_BACKGROUNDS_FILE = '/home/shane/foodie_automator/author_backgrounds.json' -X_POST_COUNTS_FILE = '/home/shane/foodie_automator/x_post_counts.json' -RECENT_POSTS_FILE = '/home/shane/foodie_automator/recent_posts.json' \ No newline at end of file diff --git a/foodie_x_poster.py b/foodie_x_poster.py index 94964d5..4d5d683 100644 --- a/foodie_x_poster.py +++ b/foodie_x_poster.py @@ -6,7 +6,7 @@ import time import sys import signal import os -from datetime import datetime, timezone +from datetime import datetime, timezone, timedelta from openai import OpenAI from foodie_config import OPENAI_API_KEY, AUTHORS, LIGHT_TASK_MODEL, PERSONA_CONFIGS, AUTHOR_BACKGROUNDS_FILE from foodie_utils import load_json_file, post_tweet