68 lines
2.5 KiB
Python
68 lines
2.5 KiB
Python
import json
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
|
from django.http import JsonResponse
|
|
from django.views.decorators.http import require_POST
|
|
from .models import Project, Script, MediaAsset
|
|
from ai.local_ai_api import LocalAIApi
|
|
|
|
def index(request):
|
|
projects = Project.objects.all().order_by('-created_at')
|
|
return render(request, 'core/index.html', {
|
|
'projects': projects,
|
|
'title': 'Creator Studio Dashboard',
|
|
})
|
|
|
|
@require_POST
|
|
def create_project(request):
|
|
title = request.POST.get('title', 'Untitled Project')
|
|
description = request.POST.get('description', '')
|
|
project = Project.objects.create(title=title, description=description)
|
|
return redirect('project_detail', project_id=project.id)
|
|
|
|
def project_detail(request, project_id):
|
|
project = get_object_or_404(Project, id=project_id)
|
|
scripts = project.scripts.all().order_by('-created_at')
|
|
assets = project.assets.all().order_by('-created_at')
|
|
return render(request, 'core/project_detail.html', {
|
|
'project': project,
|
|
'scripts': scripts,
|
|
'assets': assets,
|
|
'title': f'Studio: {project.title}',
|
|
})
|
|
|
|
@require_POST
|
|
def generate_script(request, project_id):
|
|
project = get_object_or_404(Project, id=project_id)
|
|
prompt = request.POST.get('prompt', '')
|
|
|
|
if not prompt:
|
|
return JsonResponse({'success': False, 'error': 'Prompt is required'})
|
|
|
|
# Construct a high-quality AI prompt for video scripting
|
|
ai_input = [
|
|
{"role": "system", "content": "You are an expert social media content creator and scriptwriter for TikTok, Reels, and YouTube Shorts. Generate a catchy script with Scene details, Action, and Dialogue/Narration."},
|
|
{"role": "user", "content": f"Generate a short-form video script for the following idea: {prompt}"}
|
|
]
|
|
|
|
response = LocalAIApi.create_response({
|
|
"input": ai_input,
|
|
})
|
|
|
|
if response.get("success"):
|
|
content = LocalAIApi.extract_text(response)
|
|
script = Script.objects.create(
|
|
project=project,
|
|
prompt=prompt,
|
|
content=content
|
|
)
|
|
return JsonResponse({
|
|
'success': True,
|
|
'content': content,
|
|
'script_id': script.id,
|
|
'created_at': script.created_at.strftime('%Y-%m-%d %H:%M')
|
|
})
|
|
else:
|
|
return JsonResponse({
|
|
'success': False,
|
|
'error': response.get('message', 'AI Generation failed')
|
|
}) |