UI/UX: Adiciona campo opcional para colagem manual de transcrição no VideoMind
This commit is contained in:
@@ -749,7 +749,7 @@ function getYouTubeId(url) {
|
||||
}
|
||||
|
||||
app.post('/api/videomind/analyze', requireAuth, async (req, res) => {
|
||||
const { url, lines } = req.body;
|
||||
const { url, lines, pastedTranscript } = req.body;
|
||||
|
||||
if (!url) {
|
||||
return res.status(400).json({ error: 'A URL do vídeo é obrigatória.' });
|
||||
@@ -785,20 +785,26 @@ app.post('/api/videomind/analyze', requireAuth, async (req, res) => {
|
||||
let isFallbackMode = false;
|
||||
let systemNotice = '';
|
||||
|
||||
try {
|
||||
// Tenta obter legenda
|
||||
const transcriptObj = await YoutubeTranscript.fetchTranscript(videoId);
|
||||
transcriptText = transcriptObj.map(t => t.text).join(' ');
|
||||
} catch (transcErr) {
|
||||
console.warn(`[VideoMind] Erro ao obter legenda para o vídeo ${videoId}:`, transcErr.message);
|
||||
isFallbackMode = true;
|
||||
|
||||
if (transcErr.message && transcErr.message.toLowerCase().includes('disabled')) {
|
||||
transcriptText = `[Aviso: O autor deste vídeo desativou as legendas ou elas ainda não foram geradas pelo YouTube. Por favor, analise e descreva os objetivos pedagógicos com base estritamente no título do vídeo, canal do autor e no seu vasto conhecimento pedagógico sobre o tema indicado no título]`;
|
||||
systemNotice = `> ⚠️ **Nota do Sistema**: Este vídeo não possui legendas disponíveis (foram desativadas pelo autor ou ainda não geradas pelo YouTube). A análise e o resumo abaixo foram elaborados a partir do título do vídeo, nome do canal e fundamentação pedagógica correspondente.\n\n`;
|
||||
} else {
|
||||
transcriptText = `[Aviso: Devido a restrições de conexão do YouTube, a legenda de áudio não pôde ser lida diretamente. Por favor, analise e descreva os objetivos pedagógicos com base estritamente no título do vídeo, canal do autor e no seu vasto conhecimento pedagógico sobre o tema indicado no título]`;
|
||||
systemNotice = `> ⚠️ **Nota do Sistema**: Devido a restrições de conexão do YouTube ou indisponibilidade temporária, a transcrição não pôde ser lida. A análise e o resumo abaixo foram elaborados a partir do título do vídeo, canal do autor e fundamentação psicopedagógica correspondente.\n\n`;
|
||||
if (pastedTranscript && pastedTranscript.trim().length > 10) {
|
||||
// Se o usuário colou a transcrição, ignorar a extração automática
|
||||
transcriptText = pastedTranscript.trim();
|
||||
systemNotice = `> 📝 **Nota do Sistema**: A análise abaixo foi elaborada com base na transcrição manual que você forneceu.\n\n`;
|
||||
} else {
|
||||
try {
|
||||
// Tenta obter legenda
|
||||
const transcriptObj = await YoutubeTranscript.fetchTranscript(videoId);
|
||||
transcriptText = transcriptObj.map(t => t.text).join(' ');
|
||||
} catch (transcErr) {
|
||||
console.warn(`[VideoMind] Erro ao obter legenda para o vídeo ${videoId}:`, transcErr.message);
|
||||
isFallbackMode = true;
|
||||
|
||||
if (transcErr.message && transcErr.message.toLowerCase().includes('disabled')) {
|
||||
transcriptText = `[Aviso: O autor deste vídeo desativou as legendas ou elas ainda não foram geradas pelo YouTube. Por favor, analise e descreva os objetivos pedagógicos com base estritamente no título do vídeo, canal do autor e no seu vasto conhecimento pedagógico sobre o tema indicado no título]`;
|
||||
systemNotice = `> ⚠️ **Nota do Sistema**: Este vídeo não possui legendas disponíveis (foram desativadas pelo autor ou ainda não geradas pelo YouTube). A análise e o resumo abaixo foram elaborados a partir do título do vídeo, nome do canal e fundamentação pedagógica correspondente.\n\n`;
|
||||
} else {
|
||||
transcriptText = `[Aviso: Devido a restrições de conexão do YouTube, a legenda de áudio não pôde ser lida diretamente. Por favor, analise e descreva os objetivos pedagógicos com base estritamente no título do vídeo, canal do autor e no seu vasto conhecimento pedagógico sobre o tema indicado no título]`;
|
||||
systemNotice = `> ⚠️ **Nota do Sistema**: Devido a restrições de conexão do YouTube ou indisponibilidade temporária, a transcrição não pôde ser lida. A análise e o resumo abaixo foram elaborados a partir do título do vídeo, canal do autor e fundamentação psicopedagógica correspondente.\n\n`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user