lay295 / TwitchDownloader

Twitch VOD/Clip Downloader - Chat Download/Render/Replay
MIT License
2.51k stars 257 forks source link
Logo

Twitch Downloader

Twitch VOD/Clip/Chat Downloader and Chat Renderer

Report Bug

This document is also available in:

Chat Render Example

https://user-images.githubusercontent.com/1060681/197653099-c3fd12c2-f03a-4580-84e4-63ce3f36be8d.mp4

What can it do?

GUI

Windows WPF

See the full WPF documentation here

Functionality

The Windows WPF GUI implements all of the main functions of the program along with some extra quality of life functions:

Multi-language Support

The Windows WPF GUI is available in multiple languages thanks to community translations. See the Localization section of the WPF README for more details.

Theming

The Windows WPF GUI comes bundled with both light and dark themes, along with an option to update live according the current Windows theme. It also supports user created themes! See the Theming section of the WPF README for more details.

Video Demonstration

https://www.youtube.com/watch?v=0W3MhfhnYjk (older version, same concept)

Linux?

Check twitch-downloader-gui on github or on the AUR for a Linux GUI wrapper for the CLI.

MacOS?

No GUI is available for MacOS yet :(

CLI

See the full CLI documentation here

The CLI is cross-platform and implements the main functions of the program. It works on Windows, Linux, and MacOS*.

*Only Intel Macs have been tested

With the CLI, it is possible to automate video processing using external scripts. For example, you could copy-paste the following code into a .bat file on Windows to download a VOD and its chat, and then render the chat, all from a single input.

@echo off
set /p vodid="Enter VOD ID: "
TwitchDownloaderCLI.exe videodownload --id %vodid% --ffmpeg-path "ffmpeg.exe" -o %vodid%.mp4
TwitchDownloaderCLI.exe chatdownload --id %vodid% -o %vodid%_chat.json -E
TwitchDownloaderCLI.exe chatrender -i %vodid%_chat.json -h 1080 -w 422 --framerate 30 --update-rate 0 --font-size 18 -o %vodid%_chat.mp4

Windows - Getting started

  1. Go to Releases and download the latest version for Windows or build from source.
  2. Extract TwitchDownloaderCLI.exe.
  3. Browse to where you extracted the executable:
cd C:\folder\containing\TwitchDownloaderCLI
  1. If you do not have FFmpeg, you can install it via Chocolatey package manager, or you can get it as a standalone file from ffmpeg.org or by using TwitchDownloaderCLI:
TwitchDownloaderCLI.exe ffmpeg --download
  1. You can now start using TwitchDownloaderCLI, for example:
TwitchDownloaderCLI.exe videodownload --id <vod-id-here> -o out.mp4

You can find more example commands in the CLI README.

Linux – Getting started

  1. Some distros, like Linux Alpine, lack fonts for some languages (Arabic, Persian, Thai, etc.) If this is the case for you, install additional fonts families such as Noto or check your distro's wiki page on fonts as it may have an install command for this specific scenario, such as the Linux Alpine font page.
  2. Ensure both fontconfig and libfontconfig1 are installed. apt-get install fontconfig libfontconfig1 on Ubuntu.
  3. Go to Releases and download the latest binary for Linux, grab the AUR Package for Arch Linux, or build from source.
  4. Extract TwitchDownloaderCLI.
  5. Browse to where you extracted the binary:
cd directory/containing/TwitchDownloaderCLI
  1. Give the binary executable rights:
sudo chmod +x TwitchDownloaderCLI
  1. a) If you do not have FFmpeg, you should install it system-wide via your distro package manager, however you can also get it as a standalone file from ffmpeg.org or by using TwitchDownloaderCLI:
./TwitchDownloaderCLI ffmpeg --download
  1. b) If downloaded as a standalone file, you must also give it executable rights with:
sudo chmod +x ffmpeg
  1. You can now start using TwitchDownloaderCLI, for example:
./TwitchDownloaderCLI videodownload --id <vod-id-here> -o out.mp4

You can find more example commands in the CLI README.

MacOS – Getting started

  1. If your device has an Apple Silicon M-series processor, ensure that you download the arm64 binary, however if you would like to use the x64 binary on Apple Silicon it must be run via a terminal session running under Rosetta 2:
arch -x86_64 zsh
  1. Go to Releases and download the latest binary for MacOS or build from source.
  2. Extract TwitchDownloaderCLI.
  3. Browse to where you extracted the binary:
cd directory/containing/TwitchDownloaderCLI
  1. Give the binary executable rights in the terminal:
chmod +x TwitchDownloaderCLI
  1. a) If you do not have FFmpeg, you can install it system-wide via the Homebrew package manager, or you can get it as a standalone file from ffmpeg.org or by using TwitchDownloaderCLI:
./TwitchDownloaderCLI ffmpeg --download
  1. b) If downloaded as a standalone file, you must also give it executable rights with:
chmod +x ffmpeg
  1. You can now start using TwitchDownloaderCLI, for example:
./TwitchDownloaderCLI videodownload --id <vod-id-here> -o out.mp4

You can find more example commands in the CLI README.

Building from source

Requirements

Build Instructions

  1. Clone the repository:
git clone https://github.com/lay295/TwitchDownloader.git
  1. Navigate to the solution folder:
cd TwitchDownloader
  1. Restore the solution:
dotnet restore
  1. a) Build the GUI:
dotnet publish TwitchDownloaderWPF -p:PublishProfile=Windows
  1. b) Build the CLI:
dotnet publish TwitchDownloaderCLI -p:PublishProfile=<Profile>
  1. a) Navigate to the GUI build folder:
cd TwitchDownloaderWPF/bin/Release/net6.0-windows/publish/win-x64
  1. b) Navigate to the CLI build folder:
cd TwitchDownloaderCLI/bin/Release/net6.0/publish

Third Party Credits

Chat Renders are rendered with SkiaSharp and HarfBuzzSharp © Microsoft Corporation.

Chat Renders are encoded and Video Downloads are finalized with FFmpeg © The FFmpeg developers.

Chat Renders may use Noto Color Emoji © Google and contributors.

Chat Renders may use Twemoji © Twitter and contributors.

Bundled FFmpeg binaries are fetched from gyan.dev © Gyan Doshi.

FFmpeg binaries fetched are runtime are downloaded using Xabe.FFmpeg.Downloader © Xabe.

Chat Html exports utilize the Inter typeface hosted by the Google Fonts API © Google.

For a full list of utilized external libraries, see THIRD-PARTY-LICENSES.txt.

License

MIT

TwitchDownloader is in no way associated with Twitch Interactive, Inc. or its affiliates.