TubeScript-API/get_transcript_chrome.sh

93 lines
3.2 KiB
Bash

#!/bin/bash
# Script para obtener transcripts de YouTube usando cookies desde Chrome/Firefox directamente
# Uso: ./get_transcript_chrome.sh VIDEO_ID [LANG] [BROWSER] [PROFILE]
VIDEO_ID="${1}"
LANG="${2:-es}"
BROWSER="${3:-chrome}"
PROFILE="${4:-}"
if [ -z "$VIDEO_ID" ]; then
echo "❌ Error: Debes proporcionar un VIDEO_ID"
echo ""
echo "Uso: $0 VIDEO_ID [LANG] [BROWSER] [PROFILE]"
echo ""
echo "Ejemplos:"
echo " $0 K08TM4OVLyo"
echo " $0 K08TM4OVLyo es chrome"
echo " $0 K08TM4OVLyo es chrome:Profile1"
echo " $0 K08TM4OVLyo es firefox"
echo " $0 K08TM4OVLyo es brave"
echo ""
echo "Perfiles disponibles de Chrome (macOS):"
ls -1 ~/Library/Application\ Support/Google/Chrome/ 2>/dev/null | grep -E "^(Default|Profile)" || echo " (no se encontraron)"
exit 1
fi
# Construir el argumento de browser
if [ -n "$PROFILE" ]; then
BROWSER_ARG="${BROWSER}:${PROFILE}"
else
BROWSER_ARG="${BROWSER}"
fi
echo "🔍 Obteniendo transcript de YouTube"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " 📹 Video ID: $VIDEO_ID"
echo " 🌐 Idioma: $LANG"
echo " 🔑 Navegador: $BROWSER_ARG"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# Ejecutar yt-dlp
yt-dlp --cookies-from-browser "$BROWSER_ARG" \
--skip-download --write-auto-sub --write-sub \
--sub-lang "$LANG" --sub-format vtt \
-o "%(id)s.%(ext)s" \
"https://www.youtube.com/watch?v=$VIDEO_ID"
EXIT_CODE=$?
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Buscar archivos VTT generados
VTT_FILES=$(ls ${VIDEO_ID}*.vtt 2>/dev/null)
if [ -n "$VTT_FILES" ]; then
echo "✅ Éxito: Archivos VTT generados"
echo ""
for file in $VTT_FILES; do
LINES=$(wc -l < "$file")
SIZE=$(du -h "$file" | cut -f1)
echo " 📄 $file ($LINES líneas, $SIZE)"
done
# Mostrar preview del primer archivo
FIRST_VTT=$(echo "$VTT_FILES" | head -n 1)
echo ""
echo "📝 Preview de $FIRST_VTT:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
head -n 30 "$FIRST_VTT"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Crear archivo de texto plano
TXT_FILE="${VIDEO_ID}_transcript.txt"
grep -v "WEBVTT" "$FIRST_VTT" | grep -v "^$" | grep -v "^[0-9][0-9]:" | grep -v "^Kind:" | grep -v "^Language:" > "$TXT_FILE"
echo ""
echo "💾 Texto guardado en: $TXT_FILE"
exit 0
else
echo "❌ Error: No se generaron archivos VTT"
echo ""
echo "💡 Posibles soluciones:"
echo " 1. Verifica que estés logueado en YouTube en $BROWSER"
echo " 2. Prueba con otro navegador: chrome, firefox, brave"
echo " 3. Si usas múltiples perfiles, especifica el perfil:"
echo " $0 $VIDEO_ID $LANG chrome Profile1"
echo " 4. Cierra el navegador antes de ejecutar este script"
echo ""
exit 1
fi