1.9 KiB
1.9 KiB
Perun YouTube Podcast Downloader
A Python script that automatically downloads the latest video from the Perun YouTube channel, converts it to MP3 with metadata, removes sponsor segments, and uploads it to a podcast server.
Features
- Automatic Detection: Checks for new episodes by comparing with Audiobookshelf library
- Audio Conversion: Downloads and converts YouTube videos to MP3 format
- Sponsor Removal: Uses SponsorBlock API to remove sponsored segments
- Metadata Injection: Adds title, artist, track number, date, and description to MP3 files
- SFTP Upload: Automatically uploads to remote podcast server
- Push Notifications: Sends notification when new episode is available
Prerequisites
- Python 3.8+
- yt-dlp
- ffmpeg (for audio conversion)
- SSH key-based authentication configured
- Audiobookshelf server with API access
Installation
pip install -r requirements.txt
Install ffmpeg:
# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
Usage
Run the script manually:
python get_episode.py
Or schedule with cron and use the provided grabEpisode.sh (Monday at 7 AM):
0 7 * * 1 /path/to/script/grabEpisode.sh
Youtube blocks a lot of server IPs so running this locally is just easier.
Configuration
Create a .env file with the following variables:
# YouTube channel to monitor
YOUTUBE_CHANNEL_URL=https://www.youtube.com/@PerunAU/videos
# Audiobookshelf API
PODCAST_API_URL=https://your-audiobookshelf.com/api/items/{item-id}
PODCAST_AUTHORIZATION_TOKEN=your_token_here
# SFTP upload destination
REMOTE_HOSTNAME=your_ssh_host_alias
REMOTE_PATH=/path/to/podcast/folder
# Backend notification service
BACKEND_API_URL=http://backend:8101/internal/receive-notifications
BACKEND_API_KEY=your_api_key
Output
MP3 files are named: perun-YYYY-MM-DD.mp3
Example: perun-2025-10-19.mp3