You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
9.4 KiB
162 lines
9.4 KiB
# foodie_config.py |
|
# Constants shared across all automator scripts |
|
|
|
OPENAI_API_KEY = "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" |
|
PIXABAY_API_KEY = "14836528-999c19a033d77d463113b1fb8" |
|
|
|
AUTHORS = [ |
|
{ |
|
"url": "https://insiderfoodie.com", |
|
"username": "owenjohnson", |
|
"password": "hESy E2qO grdB KiKS X6SW oM05", |
|
"persona": "Visionary Editor", |
|
"bio": "I oversee worldwide dining shifts, obsessed with the big picture. My edits deliver precise takes—charting the future of food with confidence." |
|
}, |
|
{ |
|
"url": "https://insiderfoodie.com", |
|
"username": "javiermorales", |
|
"password": "r46q z0JX QL1q ztbH Tifk Cn28", |
|
"persona": "Foodie Critic", |
|
"bio": "I judge food scenes worldwide, wielding a fearless pen. My takes expose what shines and what flops—no compromise, just truth." |
|
}, |
|
{ |
|
"url": "https://insiderfoodie.com", |
|
"username": "aishapatel", |
|
"password": "NyCa SOXd 5EVf bVvW KIoz wC0C", |
|
"persona": "Trend Scout", |
|
"bio": "I scout global food trends, obsessed with what’s emerging. My sharp predictions map the industry’s path—always one step ahead." |
|
}, |
|
{ |
|
"url": "https://insiderfoodie.com", |
|
"username": "trangnguyen", |
|
"password": "A53T Nn8i CCEI HMq8 a9Ps Uhyg", |
|
"persona": "Culture Connoisseur", |
|
"bio": "I trace worldwide dining traditions, weaving past into present. My words uncover the soul of flavor—connecting cultures bite by bite." |
|
}, |
|
{ |
|
"url": "https://insiderfoodie.com", |
|
"username": "keishareid", |
|
"password": "BOGQ pjT8 rdTv JyOJ 3IjB Apww", |
|
"persona": "African-American Soul Food Sage", |
|
"bio": "I bring soul food’s legacy to life, blending history with modern vibes. My stories celebrate flavor and resilience—dishing out culture with every bite." |
|
}, |
|
{ |
|
"url": "https://insiderfoodie.com", |
|
"username": "lilamoreau", |
|
"password": "e3nv Vsg4 L9wv RgL6 dHkm T3UD", |
|
"persona": "Global Street Food Nomad", |
|
"bio": "I roam the globe chasing street eats, from stalls to trucks. My tales uncover bold flavors and gritty trends shaping food on the go." |
|
} |
|
] |
|
|
|
POSTED_RSS_TITLES_FILE = '/home/shane/foodie_automator/posted_rss_titles.json' |
|
POSTED_GOOGLE_TITLES_FILE = '/home/shane/foodie_automator/posted_google_titles.json' |
|
POSTED_REDDIT_TITLES_FILE = '/home/shane/foodie_automator/posted_reddit_titles.json' |
|
USED_IMAGES_FILE = '/home/shane/foodie_automator/used_images.json' |
|
EXPIRATION_DAYS = 3 |
|
IMAGE_EXPIRATION_DAYS = 7 |
|
|
|
RSS_FEEDS = [ |
|
"https://www.eater.com/rss/full.xml", |
|
"https://modernrestaurantmanagement.com/feed/", |
|
"https://thespoon.tech/feed/", |
|
"https://www.nrn.com/rss.xml", |
|
"https://rss.nytimes.com/services/xml/rss/nyt/DiningandWine.xml", |
|
"https://www.bakingbusiness.com/rss/articles", |
|
"https://www.theguardian.com/food/rss" |
|
] |
|
|
|
RSS_FEED_NAMES = { |
|
"https://www.eater.com/rss/full.xml": ("Eater", "https://www.eater.com/"), |
|
"https://modernrestaurantmanagement.com/feed/": ("Modern Restaurant Management", "https://modernrestaurantmanagement.com/"), |
|
"https://thespoon.tech/feed/": ("The Spoon", "https://thespoon.tech/"), |
|
"https://www.nrn.com/rss.xml": ("Nation's Restaurant News", "https://www.nrn.com/"), |
|
"https://rss.nytimes.com/services/xml/rss/nyt/DiningandWine.xml": ("The New York Times", "https://www.nytimes.com/section/food"), |
|
"https://www.bakingbusiness.com/rss/articles": ("Baking Business", "https://www.bakingbusiness.com/"), |
|
"https://www.theguardian.com/food/rss": ("The Guardian Food", "https://www.theguardian.com/food") |
|
} |
|
|
|
RECIPE_KEYWORDS = ["recipe", "cook", "bake", "baking", "cooking", "ingredient", "method", "mix", "stir", "preheat", "dinners", "make", "dish", "healthy"] |
|
PROMO_KEYWORDS = ["we serve", "our guests", "event", "competition", "franchise", "off", "discount", "sale"] |
|
HOME_KEYWORDS = ["home", "house", "household", "appliance", "kitchen", "gadget"] |
|
PRODUCT_KEYWORDS = ["best", "buy", "storage", "organizer", "shop", "price", "container", "product", "deal", "sale", "discount"] |
|
|
|
CATEGORIES = [ |
|
"People", "Trends", "Travel", |
|
"Lifestyle", "Buzz", "Culture", "Health", "Drink", "Food" "Eats" |
|
] |
|
|
|
CTAS = [ |
|
"Love This Take? Share It On <a href='{share_url}'><i class=\"tsi tsi-twitter\"></i></a>!", |
|
"Dig This Scoop? Post It On <a href='{share_url}'><i class=\"tsi tsi-twitter\"></i></a>!", |
|
"Wild For This? Spread It On <a href='{share_url}'><i class=\"tsi tsi-twitter\"></i></a>!", |
|
"Crave This Read? Tweet It On <a href='{share_url}'><i class=\"tsi tsi-twitter\"></i></a>!", |
|
"Buzzing Over This? Share On <a href='{share_url}'><i class=\"tsi tsi-twitter\"></i></a>!" |
|
] |
|
|
|
SUMMARY_PERSONA_PROMPTS = { |
|
"Visionary Editor": ( |
|
"You’re a commanding food editor with a borderless view. Summarize this article in a polished, decisive tone, like shaping a premier food mag, but with a casual twist—think bold vibes like 'This is unreal!'. " |
|
"Explore a wide range of food-related topics, skip recipes. Generate exactly {num_paragraphs} paragraphs, 60-80 words each, full thoughts, with a single \n break. " |
|
"Write naturally without mentioning the source name or URL directly in the text, with a slight Upworthy/Buzzfeed flair style. " |
|
"Add a bold take and end with a clickbait-y question like Neil Patel would do to boost engagement!" |
|
), |
|
"Foodie Critic": ( |
|
"You’re a seasoned foodie reviewer with a sharp eye. Summarize this article in a pro yet lively tone, like a top food mag with a playful edge—think 'This bangs!'. " |
|
"Explore a wide range of food-related topics, skip recipes. Generate exactly {num_paragraphs} paragraphs, 60-80 words each, full thoughts, with a single \n break. " |
|
"Write naturally without mentioning the source name or URL directly in the text, with a slight Upworthy/Buzzfeed flair style. " |
|
"Add a subtle opinion and end with a clickbait-y question like Neil Patel would do to boost engagement!" |
|
), |
|
"Trend Scout": ( |
|
"You’re a forward-thinking editor obsessed with trends. Summarize this article in an enthusiastic voice, like 'This is the future, fam!'. " |
|
"Explore a wide range of food-related topics, skip recipes. Generate exactly {num_paragraphs} paragraphs, 60-80 words each, full thoughts, with a single \n break. " |
|
"Write naturally without mentioning the source name or URL directly in the text, with a slight Upworthy/Buzzfeed flair style. " |
|
"Predict what’s next and end with a clickbait-y question like Neil Patel would do to boost engagement!" |
|
), |
|
"Culture Connoisseur": ( |
|
"You’re a cultured food writer who loves storytelling. Summarize this article in a warm, reflective tone with a kick, like 'This feels different, right?'. " |
|
"Explore a wide range of food-related topics, skip recipes. Generate exactly {num_paragraphs} paragraphs, 60-80 words each, full thoughts, with a single \n break. " |
|
"Write naturally without mentioning the source name or URL directly in the text, with a slight Upworthy/Buzzfeed flair style. " |
|
"Add a thoughtful observation and end with a clickbait-y question like Neil Patel would do to boost engagement!" |
|
), |
|
"African-American Soul Food Sage": ( |
|
"You’re a vibrant storyteller rooted in African-American culinary heritage. Summarize this article in a soulful tone, like 'This got that heat, y’all!'. " |
|
"Explore a wide range of food-related topics, skip recipes. Generate exactly {num_paragraphs} paragraphs, 60-80 words each, full thoughts, with a single \n break. " |
|
"Write naturally without mentioning the source name or URL directly in the text, with a slight Upworthy/Buzzfeed flair style. " |
|
"Add a heritage twist and end with a clickbait-y question like Neil Patel would do to boost engagement!" |
|
), |
|
"Global Street Food Nomad": ( |
|
"You’re an adventurous explorer of global street food. Summarize this article in a bold, gritty tone with a spin, like 'This is straight fire!'. " |
|
"Explore a wide range of food-related topics, skip recipes. Generate exactly {num_paragraphs} paragraphs, 60-80 words each, full thoughts, with a single \n break. " |
|
"Write naturally without mentioning the source name or URL directly in the text, with a slight Upworthy/Buzzfeed flair style. " |
|
"Drop a street-level insight and end with a clickbait-y question like Neil Patel would do to boost engagement!" |
|
) |
|
} |
|
|
|
REDDIT_CLIENT_ID = "GtoZmrM8VyrxMvb7gBLrLg" |
|
REDDIT_CLIENT_SECRET = "YGTx69ZzvMn329pZj2qiEEXW82aeSA" |
|
REDDIT_USER_AGENT = "foodie_trends_bot by /u/AskShaneHill" |
|
REDDIT_SUBREDDITS = [ |
|
"food", |
|
"FoodPorn", |
|
"spicy" |
|
] |
|
FAST_FOOD_KEYWORDS = [ |
|
"mcdonald", "burger king", "wendy", "taco bell", "kfc", |
|
"subway", "domino", "pizza hut", "chipotle", "dunkin", |
|
"starbucks", "sonic", "arby", "jack in the box", "popeyes", |
|
"fast food", "chain", "drive-thru" |
|
] |
|
|
|
SUMMARY_MODEL = "gpt-4o" # or "gpt-4.1-mini" for testing |
|
LIGHT_TASK_MODEL = "gpt-4o-mini" |
|
|
|
def get_clean_source_name(source_name): |
|
""" |
|
Retrieve a clean source name from RSS_FEED_NAMES if source_name matches a feed URL, |
|
otherwise return the original source_name as a fallback. |
|
""" |
|
for feed_url, (clean_name, _) in RSS_FEED_NAMES.items(): |
|
if feed_url == source_name: |
|
return clean_name |
|
return source_name |