Consistencia visual dos quadrinhos (estilo fofo 2 a 6 anos), correcao de narracao em video e 22 trilhas com preview

This commit is contained in:
2026-09-01 02:20:21 +00:00
parent b35f817e45
commit 10cca214e0
24 changed files with 333 additions and 92 deletions
+83 -4
View File
@@ -4889,6 +4889,7 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
}
fabricaQuadrinhosModal.style.display = 'none';
if (comicsVideoPlayer) comicsVideoPlayer.pause();
if (typeof stopComicsMusicPreview === 'function') stopComicsMusicPreview();
});
}
@@ -5033,8 +5034,14 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
const totalPanels = scriptData.panels.length;
let completedCount = 0;
const CUTE_COMIC_STYLE_SUFFIX = 'adorable cute 3D animated style, Pixar and modern claymation aesthetic, friendly and innocent character design, soft rounded features, big expressive friendly eyes, smooth textures, vibrant warm comforting color palette, whimsical storytelling, sweet and gentle atmosphere, perfect for toddlers and preschoolers (ages 2 to 6), clean studio lighting, 8k render';
const generateSinglePanel = async (panel) => {
const fullPrompt = `${panel.image_prompt}, 3D Pixar Disney style, digital children book illustration, vibrant colors, masterpiece, cinematic lighting, ${selectedComicsRatio === '16:9' ? '16:9 aspect ratio' : '4:3 aspect ratio'}`;
let fullPrompt = panel.image_prompt || '';
if (!fullPrompt.toLowerCase().includes('claymation') && !fullPrompt.toLowerCase().includes('pixar')) {
fullPrompt = `${fullPrompt}, ${CUTE_COMIC_STYLE_SUFFIX}`;
}
fullPrompt = `${fullPrompt}, ${selectedComicsRatio === '16:9' ? '16:9 aspect ratio' : '4:3 aspect ratio'}`;
let attempts = 0;
let frameData = null;
@@ -5307,7 +5314,12 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
}
}
const fullPrompt = `${promptToUse}, 3D Pixar Disney style, digital children book illustration, vibrant colors, masterpiece, cinematic lighting, ${selectedComicsRatio === '16:9' ? '16:9 aspect ratio' : '4:3 aspect ratio'}`;
const CUTE_COMIC_STYLE_SUFFIX = 'adorable cute 3D animated style, Pixar and modern claymation aesthetic, friendly and innocent character design, soft rounded features, big expressive friendly eyes, smooth textures, vibrant warm comforting color palette, whimsical storytelling, sweet and gentle atmosphere, perfect for toddlers and preschoolers (ages 2 to 6), clean studio lighting, 8k render';
let fullPrompt = promptToUse || '';
if (!fullPrompt.toLowerCase().includes('claymation') && !fullPrompt.toLowerCase().includes('pixar')) {
fullPrompt = `${fullPrompt}, ${CUTE_COMIC_STYLE_SUFFIX}`;
}
fullPrompt = `${fullPrompt}, ${selectedComicsRatio === '16:9' ? '16:9 aspect ratio' : '4:3 aspect ratio'}`;
const resp = await fetch('/api/comics/generate-frame', {
method: 'POST',
@@ -5707,6 +5719,7 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
btnCompileComicsVideo.addEventListener('click', async () => {
if (generatedPanelsData.length === 0) return;
stopComicsMusicPreview();
btnCompileComicsVideo.disabled = true;
comicsVideoLoader.style.display = 'flex';
comicsVideoResult.style.display = 'none';
@@ -5719,8 +5732,8 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
frames: generatedPanelsData,
musicSelection: comicsVideoMusic.value,
frameDuration: comicsVideoDuration.value,
musicSelection: comicsVideoMusic ? comicsVideoMusic.value : 'alegre',
frameDuration: comicsVideoDuration ? comicsVideoDuration.value : 5,
narrationVoice: voice,
titulo: comicsResultTitle?.textContent || 'História em Quadrinhos'
})
@@ -5749,6 +5762,72 @@ Se algum dado não for mencionado, deixe a string vazia ou false para boolean.`
});
}
// --- PREVIEW INTERATIVO DE TRILHAS SONORAS (PLAY/STOP) ---
let comicsPreviewAudio = null;
const btnPreviewComicsMusic = document.getElementById('btnPreviewComicsMusic');
const comicsMusicPreviewIcon = document.getElementById('comicsMusicPreviewIcon');
const comicsMusicPreviewText = document.getElementById('comicsMusicPreviewText');
const comicsMusicPlayingTag = document.getElementById('comicsMusicPlayingTag');
function stopComicsMusicPreview() {
if (comicsPreviewAudio) {
comicsPreviewAudio.pause();
comicsPreviewAudio.currentTime = 0;
comicsPreviewAudio = null;
}
if (comicsMusicPreviewIcon) comicsMusicPreviewIcon.textContent = '▶️';
if (comicsMusicPreviewText) comicsMusicPreviewText.textContent = 'Ouvir';
if (comicsMusicPlayingTag) comicsMusicPlayingTag.style.display = 'none';
if (btnPreviewComicsMusic) {
btnPreviewComicsMusic.style.background = 'rgba(219, 39, 119, 0.1)';
btnPreviewComicsMusic.style.borderColor = 'var(--brand-pink)';
btnPreviewComicsMusic.style.color = 'var(--brand-pink)';
}
}
if (btnPreviewComicsMusic && comicsVideoMusic) {
btnPreviewComicsMusic.addEventListener('click', () => {
const selectedTrack = comicsVideoMusic.value;
if (selectedTrack === 'sem_musica') {
showCustomAlert('Sem Trilha', 'A opção "Sem Música de Fundo" está selecionada.');
return;
}
if (comicsPreviewAudio && !comicsPreviewAudio.paused) {
stopComicsMusicPreview();
return;
}
stopComicsMusicPreview();
const audioUrl = `/assets/audio/${selectedTrack}.mp3`;
comicsPreviewAudio = new Audio(audioUrl);
comicsPreviewAudio.volume = 0.55;
comicsPreviewAudio.play().then(() => {
if (comicsMusicPreviewIcon) comicsMusicPreviewIcon.textContent = '⏹️';
if (comicsMusicPreviewText) comicsMusicPreviewText.textContent = 'Parar';
if (comicsMusicPlayingTag) comicsMusicPlayingTag.style.display = 'inline';
if (btnPreviewComicsMusic) {
btnPreviewComicsMusic.style.background = 'rgba(16, 185, 129, 0.15)';
btnPreviewComicsMusic.style.borderColor = '#10b981';
btnPreviewComicsMusic.style.color = '#10b981';
}
}).catch(err => {
console.warn('Erro ao reproduzir prévia de áudio:', err.message);
stopComicsMusicPreview();
showCustomAlert('Áudio', 'Não foi possível carregar a prévia desta trilha.');
});
comicsPreviewAudio.onended = () => {
stopComicsMusicPreview();
};
});
comicsVideoMusic.addEventListener('change', () => {
stopComicsMusicPreview();
});
}
// ============================================================
// VIDEOMIND (TRANSCRIÇÃO E ANÁLISE DE VÍDEO PEDAGÓGICO)
// ============================================================