TwitchToYoutube/twtoyt.sh

55 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# Carga la configuracion desde ./config.sh
source ./config.sh
echo "Auth de twitch: $twitchauth"
echo "Client-Id de twitch: $clientid"
# Coloca aca el nombre del streamer de twitch
TWITCH_USER=""
while true; do
TIME_DATE=[$(date +"%d/%m/%y")] # Ejemplo de como saldria: [31/12/22]
VIDEO_VISIBILITY="public" #* Opciones: unlisted, private, public
VIDEO_DESCRIPTION="Hosteado por Fijxu. https://twitch.tv/$TWITCH_USER \n Fecha y hora: $(date +"%H:%M %d/%m/%y") \n Donaciones: https://ko-fi.com/fijxu" # Descripción del video
VIDEO_DURATION="11:59:30" # Duración del video, si dura mas de XX:XX:XX, se subira en partes divididas (Youtube solo tiene hasta videos de maximo 12 horas)
STREAMLINK_OPTIONS="best --hls-duration $VIDEO_DURATION --stream-segment-timeout 30 --hls-playlist-reload-attempts 10 --hls-live-restart --twitch-disable-hosting --twitch-disable-reruns -O --loglevel error" # https://streamlink.github.io/cli.html#twitch
echo "Checkqueando si $TWITCH_USER esta en vivo"
# Checkea si el streamer esta en vivo usando la API de twitch
checkstream=$(curl -sS -X GET "https://api.twitch.tv/helix/streams?user_login=$TWITCH_USER" -H "Authorization: Bearer $twitchauth" -H "Client-Id: $clientid" | jq -r '.data[].type')
# Si el streamer esta en vivo, empieza a subir a youtube
if [[ $checkstream = *live* ]]; then
STREAMER_NAME=$TWITCH_USER
VIDEO_PLAYLIST="$STREAMER_NAME VODs"
TWITCH_USER_ID=$(curl -sS -X GET "https://api.twitch.tv/helix/users?login=$TWITCH_USER" -H "Authorization: Bearer $twitchauth" -H "Client-Id: $clientid" | jq -r '.data[].id')
TWITCH_TITLE=$(curl -sS -X GET "https://api.twitch.tv/helix/channels?broadcaster_id=$TWITCH_USER_ID" -H "Authorization: Bearer $twitchauth" -H "Client-Id: $clientid" | jq -r '.data[].title')
TWITCH_TITLE_CUT=$(echo "$TWITCH_TITLE" | colrm 72 | tr "><" " ")
echo "$TWITCH_TITLE_CUT"
echo "Using Twitch user: $TWITCH_USER | ID: $TWITCH_USER_ID"
echo "Titulo del stream: $TWITCH_TITLE"
echo "Titulo del stream cortado: $TWITCH_TITLE_CUT"
echo ""
# NOMBRE DEL STREAMER (TWITCH) - NOMBRE DEL TITULO CORTADO (por limitaciones de caracteres de youtube) - FECHA
VIDEO_TITLE="$STREAMER_NAME - $TWITCH_TITLE_CUT ~ $TIME_DATE"
# Crea el archivo JSON usado por youtube uploader para agregar la información del VOD para Youtube
echo '{"title":"'"$VIDEO_TITLE"'","privacyStatus":"'"$VIDEO_VISIBILITY"'","description":"'"$VIDEO_DESCRIPTION"'","playlistTitles":["'"${VIDEO_PLAYLIST}"'"]}' >/tmp/input."$STREAMER_NAME"
echo "Titulo actualizado: $VIDEO_TITLE"
echo "En vivo, subiendo a YouTube"
streamlink https://twitch.tv/"$STREAMER_NAME" "$STREAMLINK_OPTIONS" | youtubeuploader -metaJSON /tmp/input."$STREAMER_NAME" -filename -
else
echo "No hay streams disponibles, reintentando en 10 seg"
fi
sleep 10s
done