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.
- ( ✔️ ) Auto download livestreams (Twitch.tv, Kick.tv, Youtube Live) from multiple streamers concurrently
- ( ✔️ ) Audio transcription with timestamps
- ( ✔️ ) Auto upload to RClone, YouTube, and more
- ( ✔️ ) Smart AI video clipping
- ( ✔️ ) Youtube shorts formatting
- ( ❌ ) Archive both video and chat logs
- ( ✔️ ) Platform independent and Docker supported
-
Manually install ffmpeg and streamlink. Alternatively, you can do the installation automatically with
install.sh. -
Python 3.10+ is required. Set up a Python virtual environment, then install the required packages:
python -m venv env . env/bin/activate pip install -r requirements.txt -
Install from source using pip.
pip install -e . -
Configure the streamers you want to monitor in
config.ini:[streamers] streamers = streamer1, streamer2, streamer3
-
Create a configuration file for each streamer where the file name is the streamer's username. The default configuration file
default.iniwill be used otherwise. -
Configure the main configuration file
config.ini. Downloaded VODs are processed into clips by default. -
Copy the
.env.examplefile to a new file called.env. Fill in the .env file with your API keys. -
Run the command to start AutoVOD:
autovod
Auto uploading for YouTube works with youtubeuploader, but it requires additional setup and configuration.
You can generate clips from a video file directly using a script.
Download an example video file from YouTube:
python src/download_yt.py https://www.youtube.com/watch?v=dQw4w9WgXcQRun this command with the path to the video:
python3 src/process_vid.py <path/to/video>With ffmpeg you can convert mp4 into Youtube shorts format (9:16 aspect ratio):
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" -c:a copy output.mp4Add background music:
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.mp4Audio transcription is done with OpenAI's Whisper ASR. This feature can be configured in config.ini
Contributors are welcome! Please feel free to submit a PR or issue.