38279-vm/core/views.py
Flatlogic Bot ad4bdec188 Viblo 2.0
2026-02-08 03:52:45 +00:00

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')
})