TubeScript-API/test-endpoint-stream.sh
2026-01-29 22:49:00 -07:00

206 lines
7.2 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Script para probar el endpoint /stream/ y generar comandos FFmpeg
echo "═══════════════════════════════════════════════════════════"
echo " 🧪 Test del Endpoint /stream/ y Generación de FFmpeg"
echo "═══════════════════════════════════════════════════════════"
echo ""
# Colores
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_info() {
echo -e "${BLUE} $1${NC}"
}
# Verificar que la API esté corriendo
API_URL="http://localhost:8080"
echo "🔍 Verificando API en $API_URL..."
if curl -s -f "$API_URL/" > /dev/null 2>&1; then
print_success "API está corriendo"
else
print_error "API no está corriendo en $API_URL"
echo ""
print_info "Inicia la API con uno de estos comandos:"
echo " docker-compose up -d tubescript-api"
echo " docker run -d --name tubescript_api -p 8080:8000 tubescript-api"
exit 1
fi
echo ""
# Pedir video ID
echo "📺 Ingresa el ID del video de YouTube en vivo:"
echo " (Ejemplo: dQw4w9WgXcQ para https://www.youtube.com/watch?v=dQw4w9WgXcQ)"
read -p "> " VIDEO_ID
if [ -z "$VIDEO_ID" ]; then
print_error "No ingresaste un video ID"
exit 1
fi
echo ""
echo "🔄 Obteniendo URL m3u8 del video $VIDEO_ID..."
echo ""
# Llamar al endpoint
RESPONSE=$(curl -s -w "\n%{http_code}" "$API_URL/stream/$VIDEO_ID")
HTTP_CODE=$(echo "$RESPONSE" | tail -n 1)
BODY=$(echo "$RESPONSE" | sed '$d')
if [ "$HTTP_CODE" -eq 200 ]; then
print_success "URL m3u8 obtenida correctamente"
echo ""
# Extraer datos con jq (si está disponible)
if command -v jq &> /dev/null; then
STREAM_URL=$(echo "$BODY" | jq -r '.stream_url')
URL_TYPE=$(echo "$BODY" | jq -r '.url_type')
echo "────────────────────────────────────────────────────────"
echo "📊 INFORMACIÓN DEL STREAM"
echo "────────────────────────────────────────────────────────"
echo ""
echo "Video ID: $VIDEO_ID"
echo "URL Type: $URL_TYPE"
echo "YouTube URL: https://www.youtube.com/watch?v=$VIDEO_ID"
echo ""
echo "Stream URL:"
echo "$STREAM_URL"
echo ""
# Generar comandos FFmpeg
echo "────────────────────────────────────────────────────────"
echo "🎬 COMANDOS FFMPEG PARA TRANSMITIR"
echo "────────────────────────────────────────────────────────"
echo ""
echo "1⃣ YouTube:"
echo "────────────────────────────────────────────────────────"
cat << EOF
ffmpeg -re \\
-i "$STREAM_URL" \\
-c copy \\
-f flv \\
rtmp://a.rtmp.youtube.com/live2/TU_STREAM_KEY_YOUTUBE
EOF
echo ""
echo "2⃣ Facebook:"
echo "────────────────────────────────────────────────────────"
cat << EOF
ffmpeg -re \\
-i "$STREAM_URL" \\
-c copy \\
-f flv \\
rtmps://live-api-s.facebook.com:443/rtmp/TU_STREAM_KEY_FACEBOOK
EOF
echo ""
echo "3⃣ Twitch:"
echo "────────────────────────────────────────────────────────"
cat << EOF
ffmpeg -re \\
-i "$STREAM_URL" \\
-c copy \\
-f flv \\
rtmp://live.twitch.tv/app/TU_STREAM_KEY_TWITCH
EOF
echo ""
echo "4⃣ X (Twitter):"
echo "────────────────────────────────────────────────────────"
cat << EOF
ffmpeg -re \\
-i "$STREAM_URL" \\
-c copy \\
-f flv \\
rtmps://fa.contribute.live-video.net/app/TU_STREAM_KEY_TWITTER
EOF
echo ""
echo "────────────────────────────────────────────────────────"
echo "💡 SCRIPT PARA MÚLTIPLES PLATAFORMAS"
echo "────────────────────────────────────────────────────────"
echo ""
cat << 'EOF'
#!/bin/bash
# Reemplaza estas variables con tus stream keys
YOUTUBE_KEY="tu_stream_key_youtube"
FACEBOOK_KEY="tu_stream_key_facebook"
TWITCH_KEY="tu_stream_key_twitch"
TWITTER_KEY="tu_stream_key_twitter"
EOF
echo "STREAM_URL=\"$STREAM_URL\""
echo ""
cat << EOF
# Transmitir a YouTube
ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\
rtmp://a.rtmp.youtube.com/live2/\$YOUTUBE_KEY &
# Transmitir a Facebook
ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\
rtmps://live-api-s.facebook.com:443/rtmp/\$FACEBOOK_KEY &
# Transmitir a Twitch
ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\
rtmp://live.twitch.tv/app/\$TWITCH_KEY &
# Transmitir a Twitter
ffmpeg -re -i "\$STREAM_URL" -c copy -f flv \\
rtmps://fa.contribute.live-video.net/app/\$TWITTER_KEY &
echo "Transmisiones iniciadas. Presiona Ctrl+C para detener."
wait
EOF
echo ""
echo "────────────────────────────────────────────────────────"
print_info "Copia el comando que necesites y reemplaza TU_STREAM_KEY"
echo "────────────────────────────────────────────────────────"
else
# Si no hay jq, mostrar JSON raw
print_warning "jq no está instalado, mostrando respuesta raw:"
echo ""
echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY"
fi
else
print_error "Error al obtener URL (HTTP $HTTP_CODE)"
echo ""
print_info "Respuesta del servidor:"
echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY"
echo ""
print_info "Posibles causas:"
echo " 1. El video no está EN VIVO"
echo " 2. El video ID es incorrecto"
echo " 3. YouTube está bloqueando la petición"
echo " 4. yt-dlp necesita actualizarse"
fi
echo ""
echo "═══════════════════════════════════════════════════════════"