https://github.com/0jc1/py-autovod
Automatically download livestreams, clip with AI, and upload in realtime
https://github.com/0jc1/py-autovod
docker ffmpeg kick llava streamlink twitch twitch-api twitch-bot whisper youtube youtube-api youtube-downloader
Last synced: 2 months ago
JSON representation
Automatically download livestreams, clip with AI, and upload in realtime
- Host: GitHub
- URL: https://github.com/0jc1/py-autovod
- Owner: 0jc1
- License: mit
- Created: 2025-03-07T17:49:46.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-09-04T04:21:28.000Z (9 months ago)
- Last Synced: 2025-09-04T06:23:51.514Z (9 months ago)
- Topics: docker, ffmpeg, kick, llava, streamlink, twitch, twitch-api, twitch-bot, whisper, youtube, youtube-api, youtube-downloader
- Language: Python
- Homepage:
- Size: 378 KB
- Stars: 14
- Watchers: 4
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Py-AutoVOD
[](./LICENSE)
[](#)
[](https://github.com/0jc1/py-autovod/issues)
[](https://github.com/0jc1/py-autovod/commits/main)
[](https://github.com/0jc1/py-autovod/stargazers)
Py-AutoVOD is a Python3 program that automates the downloading and uploading of livestreams from multiple streaming services. It has many configurable features for stream VODs, such as formatting, transcribing, and AI-powered clipping.
This project was originally based on [AutoVOD](https://github.com/jenslys/AutoVOD).
## Features
- ( :heavy_check_mark: ) Auto download livestreams (Twitch.tv, Kick.tv, Youtube Live) from multiple streamers concurrently
- ( :heavy_check_mark: ) Audio transcription with timestamps
- ( :heavy_check_mark: ) Auto upload to RClone, YouTube, and more
- ( :heavy_check_mark: ) Smart AI video clipping
- ( :heavy_check_mark: ) Youtube shorts formatting
- ( :x: ) Archive both video and chat logs
- ( :heavy_check_mark: ) Platform independent and Docker supported
## Installation & Setup
1. Manually install ffmpeg and [streamlink](https://github.com/streamlink/streamlink). Alternatively, you can do the installation automatically with `install.sh`.
2. Python 3.10+ is required. Set up a Python virtual environment, then install the required packages:
```bash
python -m venv env
. env/bin/activate
pip install -r requirements.txt
```
3. Install from source using pip.
```bash
pip install -e .
```
4. Configure the streamers you want to monitor in `config.ini`:
```ini
[streamers]
streamers = streamer1, streamer2, streamer3
```
5. Create a configuration file for each streamer where the file name is the streamer's username. The default configuration file `default.ini` will be used otherwise.
6. Configure the main configuration file `config.ini`. Downloaded VODs are processed into clips by default.
7. Copy the `.env.example` file to a new file called `.env`. Fill in the .env file with your API keys.
8. Run the command to start AutoVOD:
```bash
autovod
```
## Uploading
Auto uploading for YouTube works with [youtubeuploader](https://github.com/porjo/youtubeuploader), but it requires additional setup and configuration.
## Clip Generation
You can generate clips from a video file directly using a script.
Download an example video file from YouTube:
```bash
python src/download_yt.py https://www.youtube.com/watch?v=dQw4w9WgXcQ
```
Run this command with the path to the video:
```bash
python3 src/process_vid.py
```
### Shorts Format
With ffmpeg you can convert mp4 into Youtube shorts format (9:16 aspect ratio):
```bash
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" -c:a copy output.mp4
```
Add background music:
```bash
ffmpeg -i input.mp4 -i music.mp3 -filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2[v];[1:a]volume=0.3[a1];[0:a][a1]amix=inputs=2[a]" -map "[v]" -map "[a]" -shortest output.mp4
```
## Transcription
Audio transcription is done with OpenAI's Whisper ASR. This feature can be configured in `config.ini`
## Contribution
Contributors are welcome! Please feel free to submit a PR or issue.