Video-Merger / src /prompt_generator.py
Priyanshi Saxena
initial commit
9451ca9
import google.generativeai as genai
from config.settings import PROCESSING_CONFIG
class PromptGenerator:
def __init__(self):
self.model = None
self.gemini_key = None
def set_api_key(self, key):
if key and key.strip():
try:
genai.configure(api_key=key.strip())
self.model = genai.GenerativeModel('gemini-1.5-flash')
self.gemini_key = key.strip()
except:
self.model = None
def generate_video_prompt(self, analysis, target_duration):
if not self.model or not analysis:
return self._fallback_prompt(analysis)
try:
context = f"""
Video Analysis:
- Duration: {analysis.get('duration', 0):.1f}s
- Transcript: {analysis.get('transcript', 'No audio')}
- Scene type: {analysis.get('scene_type', 'unknown')}
- Colors: {', '.join(analysis.get('dominant_colors', [])[:3])}
Target: {target_duration}s commercial
Generate a creative prompt for Stable Video Diffusion to extend this commercial.
Keep it under 100 words, focus on visual elements, camera movement, and commercial appeal.
"""
response = self.model.generate_content(context)
prompt = response.text.strip()
if len(prompt) > 20:
return prompt
else:
return self._fallback_prompt(analysis)
except Exception as e:
return self._fallback_prompt(analysis)
def _fallback_prompt(self, analysis):
if not analysis:
return "professional commercial product showcase, smooth camera movement, high quality, cinematic lighting"
scene_type = analysis.get('scene_type', 'product')
transcript = analysis.get('transcript', '').lower()
prompts = {
'lifestyle': "vibrant lifestyle commercial, people enjoying, dynamic movement, warm lighting",
'tech': "sleek tech commercial, modern interface, clean design, professional lighting",
'product': "premium product showcase, elegant presentation, studio lighting"
}
base_prompt = prompts.get(scene_type, prompts['product'])
if 'outdoor' in transcript:
base_prompt += ", outdoor setting"
elif 'indoor' in transcript:
base_prompt += ", indoor environment"
return base_prompt + ", commercial quality, smooth transitions"