Initial YouTube description generation and authentication — work in progress
This commit is contained in:
67
modules/description_utils.py
Normal file
67
modules/description_utils.py
Normal file
@ -0,0 +1,67 @@
|
||||
"""
|
||||
description_utils.py
|
||||
|
||||
Utility functions for generating video descriptions dynamically using OpenAI's API.
|
||||
Includes brand-aware humor, format-aware descriptions, and dynamic prompt generation.
|
||||
|
||||
This module currently supports:
|
||||
- Montage descriptions (fun, quirky, "Cool-Hand Gramps" themed)
|
||||
|
||||
Author: Llama Chile Shop
|
||||
Created: 2025-07-22
|
||||
"""
|
||||
|
||||
import os
|
||||
import random
|
||||
import openai
|
||||
|
||||
# 🛠 Global debug flag (imported by design elsewhere)
|
||||
from modules.config import DEBUG
|
||||
|
||||
# Set up OpenAI API key from environment
|
||||
openai.api_key = os.getenv("OPENAI_API_KEY")
|
||||
|
||||
|
||||
def generate_montage_description() -> str:
|
||||
"""
|
||||
Generates a creative, humorous description for a montage highlight video.
|
||||
Leverages the "Cool-Hand Gramps" branding identity and inserts dynamic randomness
|
||||
to keep each description fresh and engaging.
|
||||
|
||||
Returns:
|
||||
str: A YouTube/PeerTube-ready video description.
|
||||
"""
|
||||
# 🎲 Add entropy to reduce prompt caching / same-seed behavior
|
||||
creativity_seed = random.randint(0, 999999)
|
||||
|
||||
# 🧠 Base template for the prompt
|
||||
prompt = f"""
|
||||
You are a branding-savvy copywriter helping a YouTube gaming channel called "Llama Chile Shop"
|
||||
run by a quirky and beloved senior gamer named "Gramps." Gramps is known for his calm demeanor,
|
||||
sharp shooting, and whacky senile playstyle in Solo Zero Build Fortnite matches. His fans refer
|
||||
to him as "Cool-Hand Gramps" because his heart rate doesn’t rise, even in intense firefights.
|
||||
|
||||
Write a YouTube/PeerTube video description for a highlight montage from one of Gramps' livestreams.
|
||||
Make it short, funny, and on-brand. Include emoticons and hashtags. Add a sentence encouraging viewers
|
||||
to subscribe and check out the stream calendar.
|
||||
|
||||
Entropy seed: {creativity_seed}
|
||||
"""
|
||||
|
||||
try:
|
||||
response = openai.ChatCompletion.create(
|
||||
model="gpt-4",
|
||||
messages=[
|
||||
{"role": "system", "content": "You are a creative and humorous copywriter."},
|
||||
{"role": "user", "content": prompt}
|
||||
],
|
||||
temperature=0.9,
|
||||
max_tokens=250
|
||||
)
|
||||
return response.choices[0].message.content.strip()
|
||||
|
||||
except Exception as e:
|
||||
fallback = "Join Gramps for another action-packed Fortnite montage! Subscribe and watch live ➡ https://youtube.com/@llamachileshop 🎮🦙 #Fortnite #CoolHandGramps"
|
||||
if DEBUG:
|
||||
print(f"[ERROR] Failed to generate montage description: {e}")
|
||||
return fallback
|
||||
Reference in New Issue
Block a user