93 lines
3.2 KiB
Bash
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
|