# Visitas al repo :3

![caca](https://count.ayaya.beauty/get/@:twtoyt)

# TwitchToYoutube

Utilidad hecha en bash para subir streams de twitch directamente a youtube. Usando [streamlink](https://github.com/streamlink/streamlink), [youtubeuploader](https://github.com/porjo/youtubeuploader), [tmux](https://github.com/tmux/tmux), [xh](https://github.com/ducaale/xh) y [jtc](https://github.com/ldn-softdev/jtc)

*Lo recomendado para usar este programa es tener un servidor o una PC que tenga un internet estable y este encendido 24/7.*

## Funciones

- Subir streams de forma continua y directa a Youtube (Si el VOD es borrado, estará subido).
- Inserta el Titulo, el nombre del streamer y la fecha del stream dentro del titulo de youtube, Incluyendo la hora exacta en la que se empezó stream dentro de la descripción.
- Detecta el stream de forma automática (usando la API de twitch), de forma que si el streamer empieza stream, lo detectara y empezara a subirlo a YouTube 


### Como usarlo [Sujeto a cambios]

***IMPORTANTE:
Este código solo funciona para Linux o Unix-Like OS como BSD***

Clonar el repo con:

```sh
git clone https://git.zzls.xyz/Fijxu/TwitchToYoutube
```

O descargando el .zip desde aca -> https://git.zzls.xyz/Fijxu/TwitchToYoutube/archive/main.zip

Luego descomprimes el .zip donde quieras


### Crear una Aplicación de twitch

-   Primero tienen que ingresar a la [pagina de devs de twitch](https://dev.twitch.tv/).
-   Darle a `Ingresar con Twitch` arriba a la derecha.
-   Luego de aceptar denle a `Tu consola`.
-   Click a `Registrar tu aplicación`.
-   En url tienen que poner `http://localhost`, el resto no es importante
-   Le dan a `Crear`
-   Después al botón junto con la aplicación que dice `Administrar`
-   Guardan el campo que dice `ID de cliente` y crean un nuevo secreto de cliente, esté también lo guardan para los siguientes pasos.

### Conseguir los tokens de twitch

-   Con los tokens que guardamos antes, ejecutar este comando remplazando `ID DE CLIENTE` y `SECRETO DE CLIENTE` por los valores que guardaron

```sh
curl --request POST 'https://id.twitch.tv/oauth2/token' \
--header 'Content-Type: application/json' \
--data-raw '{
    "client_id":"ID DE CLIENTE",
    "client_secret":"SECRETO DE CLIENTE",
    "grant_type":"client_credentials"
}'
```

-   Les va a responder algo como `{"access_token":"TOKEN",...}`, ese access_token es el que tienen que poner en el campo `twitchauth` del archivo `.env` y en `clientid` ponen el id de cliente que usaron antes tal que quede algo así dentro del archivo:

```bash
#!/bin/bash

# Autorización de twitch (https://dev.twitch.tv/docs/authentication)
export twitchauth="u7vgESCjSchPAQHxFpMDhHD76iIAMr"
# ID del cliente de twitch
export clientid="hIvIJE6G1vQQhIIYfCg5hiw1wyXCXB"
```

### Configurar youtubeuploader

1.   Descargar la ultima versión de [youtubeuploader](https://github.com/porjo/youtubeuploader)

2.   **Descomprimir el archivo descargado**

```sh
tar -xzvf youtubeuploader_22.04_Linux_x86_64.tar.gz
```

3.   **Mover el binario (youtubeuploader) a la carpeta `~/.local/bin`**

```sh
mv youtubeuploader ~/.local/bin
```

4. Abre otra consola y asegúrate de que youtubeuploader se pueda ejecutar correctamente con el comando `youtubeuploader` en la consola, si dice que el comando es desconocido, copia esto dentro de el archivo `.bashrc` o `.zshrc` que se encuentra en el directorio home (/home/TUNOMBREDEUSUARIO):

```bash
if [ -d "$HOME/.local/bin" ] ;
  then PATH="$HOME/.local/bin:$PATH"
fi
```
(**Que hacen estas lineas?**: Si el directorio `~/.local/bin` existe, lo cargara en la variable `$PATH` y eso hará que los programas que estén dentro de esa carpeta puedan ser usados solo con usar el nombre del programa en la consola)


5.   Seguir [estas](https://github.com/porjo/youtubeuploader#Youtube-API) instrucciones. (Si piensas que esto necesita documentación o más información en español dentro de este repositorio, abre una Incidencia/Issue)

6.   Una vez ya tengas el archivo `client_secrets.json` guardarlo en la misma carpeta donde se encuentra `twtoyt.sh`

-   La herramienta `youtubeuploader` no esta del todo pulida y para que funcione tienen que primero intentar subir un video a youtube con ella. Se les abre el navegador y tienen que autorizar a la aplicación con la **misma** cuenta que agregaron en el paso anterior (el video se sube en privado por defecto)
-   Para eso, ejecuten este comando, cambien `tuVideo` por el nombre del video que quieran subir

```sh
youtubeuploader -filename tuVideo.mp4
```

-   Se les va a generar un archivo `request.token` en el directorio actual, guárdenlo en la carpeta donde se ubican `twtoyt.sh` y `config.sh`.

### Ejecutar

Con esto ya deberían de tener todo lo necesario para correr el script. Ejecuta este comando de abajo para darle permisos al script para que se pueda ejecutar.

```sh
chmod +x twtoyt.sh
```

Y ahora lo tienes que hacer, es crear varias copias del mismo archivo `twtoyt.sh` dentro de la carpeta [canales](./canales/) con un nombre cualquiera y ejecutar el script [start.sh](./start.sh) con:

```sh
./start.sh
```

**Es necesario modificar la variable `TWITCH_USER` dentro de las copias del script `twtoyt.sh`, ahí se coloca el nombre del streamer de twitch y este se usara para el titulo y el nombre de la playlist**

**Luego cambia la descripción dentro de la variable `VIDEO_DESCRIPTION` si es que lo consideras necesario.**

#### Autor y repo original

[jenslys/autovod](https://github.com/jenslys/autovod/)