# How to use it

This code only works for Linux, and maybe for MacOs.

First of all clone the repo (you have to have `git` installed) with:

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

The rest of this guide is separated in different parts

1. [Create a twitch application](#create-a-twitch-application)
2. [Get the twitch tokens](#get-twitch-tokens)
3. [Configure youtubeuploader](#configure-youtubeuploader)
4. [Run](#run)

## Create a twitch Application

- First you have to go to the [twitch devs page](https://dev.twitch.tv/).
- Click on `Log in with Twitch` on the top right.
- After accepting click on `Your console`.
- Click on `Register your application`.
- In url you have to put `http://localhost`, the rest is not important.
- Click on `Create`.
- Then click on the button next to the application that says `Manage`.
- They save the field that says `Customer ID` and create a new customer secret, they also save it for the following steps

## Get the twitch tokens

- With the tokens we saved earlier, run this command replacing `CUSTOMER ID` and `CUSTOMER SECRET` with the values you saved

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

- you will get something like `{"access_token": "TOKEN",...}`, that access_token is the one you have to put in the `twitchauth` field of the `config.sh` file and in `clientid` put the client id you used before

## Configure youtubeuploader

- Download the latest release of [youtubeuploader](https://github.com/porjo/youtubeuploader) for your system. (unless you have linux on a mac or something weird, you have to download the one ending with Linux_x86_64.tar.gz )

- Unzip the downloaded file

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

- Move the binary to the `~/.local/bin` folder

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

- Create the configuration folder

```sh
mkdir ~/.config/youtubeuploader
```

- Follow [these](https://github.com/porjo/youtubeuploader#Youtube-API) instructions and save the `client_secrets.json` file in the `~/.config/youtubeuploader/` folder we created before (don't forget to add **the account you want to use for uploading videos** as test user)

- The `youtubeuploader` tool is not fully polished and for it to work you have to first try to upload a video to youtube with it. The browser opens and you have to authorize the application with the **same** account you added in the previous step (the video is uploaded in private by default).
- To do that, run this command, change `yourVideo` for the name of the video you want to upload

```sh
youtubeuploader -filename yourVideo.mp4
```

- It will generate a `request.token` file in the current directory, save it in the folder of this repo together with the `twtoyt.sh` and `config.sh` files. If you want to use it on a server where you don't have a monitor (99% of the cases) you will have to copy the `request.token` and `client_secrets.json` files to the server in the corresponding folders.

## Execute

With this you should now have everything you need to run the script, simply give the script run permissions with

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

and run it with

```sh
./twtoyt.sh
```