Archive your favorite Twitch.tv streams to YouTube
VOD Squirrel streamlines the process of downloading Twitch VODs and uploading them to YouTube for archival purposes. It is designed to be fast, efficient, and easy to use.
The app downloads the VOD in parallel chunks, ensuring that the download process is as quick as possible. Once the download is complete, it automatically "joins" the chunks and uploads the VOD to YouTube.
An ffmpeg installation is required.
You will need to get a Google OAuth token with https://www.googleapis.com/auth/youtube.upload scope.
The easiest way of doing it is to utilize the Google OAuth 2.0 Playground
Click to see detailed instructions
- Visit the Google OAuth 2.0 Playground
- On the left navbar, select the
YouTube Data API v3->https://www.googleapis.com/auth/youtube.uploadscope - Click on Authorize APIs
- Login / select your Google account and allow the app to access your YouTube account
- Once redirected back to the playground, click on "Exchange authorization code for tokens" button
- Copy the
Access tokenstring. (You might need renavigate to theStep 2tab to see the access token)
Once you have an access token, set it as the environment variable OAUTH_TOKEN.
Download the latest release from the releases page or development build via commit workflows.
If you are on Mac / Linux, allow the app to be run by chmod +x vod-squirrel.
Run the app with the VOD ID / URL you want to archive as an argument
$ ./vod-squirrel https://twitch.tv/videos/123456789Important
Archiving a long video might fail due to error Too many files open. You can fix this by increasing your system's ulimit for the maximum number of open files (ulimit -n 10240).
You might want to check the OS' global maximum number of open files before setting the ulimit value above (cat /proc/sys/fs/file-max).
You can use the --help flag to get a list of all available options:
$ ./vod-squirrel --help
Downloads a Twitch.tv Video (VOD) and uploads it to YouTube for archival purposes
Usage: vod-squirrel [OPTIONS] <VOD>
Arguments:
<VOD> Twitch video ID / URL to process
Options:
-c, --cleanup Cleanups the remnant of the clips afterward [default: true]
-p, --parallelism <PARALLELISM> The amount of parallel downloads [default: 20]
--temp-dir <TEMP_DIR> Directory where videos are processed (defaults to system's temporary directory)
-h, --help Print help
-V, --version Print versionWork in progress.
This project uses Rust and Cargo.
You do not need to have OpenSSL installed to build the project as the project uses the rustls crate to provide TLS support.
To build the project, clone the repository and run cargo build --release.
git clone https://github.com/angeloanan/vod-squirrel.git
cd vod-squirrel
cargo build --release- Twitch VOD expires after 60 days (or lesser for non-partners!)
- Twitch is implementing a 100 hours storage limit on highlights & upload
- Twitch has slow CDN from where I live
- Manually downloading & uploading VODs is annoying
- VOD channels usually take some time before they upload a new VOD