Monitor and download live streams from YouTube.
- Monitor your favorite YouTube channels and download streams when it starts
 - Email/Slack notifications when the stream starts or finish downloading
 - Writing streamer metadata (author/channel name, description, year) via FFmpeg
 - Keywords filter: only download streams that match specific keywords (or regular expressions) in the title
 - Download subtitles if available
 - Convert TS to MP4 automatically after downloading
 - URL guessing: this script will try its best to guess what you pass to it, the following URLs/URIs should all work:
 
Tested on macOS up to 11.2.3, should be working on Ubuntu and RHEL. Running live-dl inside a container is recommended.
latest: the latest tagged releasenightly: the nightly build with latest youtube-dl and streamlink bundles
The simplest way to use live-dl is executing it inside a container. The following command will print the help message of live-dl:
docker run --rm -it sparanoid/live-dl:latestRun live-dl in interactive mode:
docker run --rm -it --init \
  -v $(pwd)/downloads:/app/downloads \
  sparanoid/live-dl:latest \
  'UC1opHUrw8rvnsadT-iGp7Cg'Run live-dl as a Docker daemon:
docker run --rm -itd --init \
  -v $(pwd)/downloads:/app/downloads \
  sparanoid/live-dl:latest \
  'UC1opHUrw8rvnsadT-iGp7Cg'Run live-dl with host volume mounted:
# Mount host volume for custom config.yml:
docker run --rm -itd --init \
  -v $(pwd)/downloads:/app/downloads \
  -v $(pwd)/config.yml:/app/config.yml \
  sparanoid/live-dl:latest \
  'UC1opHUrw8rvnsadT-iGp7Cg'
# Mount host volume for custom cookies.txt:
docker run --rm -itd --init \
  -v $(pwd)/downloads:/app/downloads \
  -v $(pwd)/youtube.com_cookies.txt:/app/cookies.txt \
  sparanoid/live-dl:latest \
  'UC1opHUrw8rvnsadT-iGp7Cg'You can extract your current cookies simply via Get cookies.txt Google Chrome extension.
version: '3'
x-defaults: &defaults
  image: sparanoid/live-dl:latest
  restart: always
  volumes:
    - ./config.yml:/app/config.yml
    - ./youtube.com_cookies.txt:/app/cookies.txt
    - ./downloads:/app/downloads
services:
  minatoaqua:
    <<: *defaults
    command: https://www.youtube.com/channel/UC1opHUrw8rvnsadT-iGp7Cg --debug
  uruharushia:
    <<: *defaults
    command: https://www.youtube.com/channel/UCl_gCybOJRIgOXw6Qb4qJzQ --debugRun ./live-dl without any parameter to print help message.
You can run this script in background with nohup:
# Start process
nohup bash live-dl https://www.youtube.com/channel/UC1opHUrw8rvnsadT-iGp7Cg &>/tmp/live-dl-minatoaqua.log &
# View processes
ps aux | grep live-dl
501 94552   964   0  9:38PM ttys009    0:00.06 bash live-dl https://www.youtube.com/channel/UC1opHUrw8rvnsadT-iGp7Cg
501 94765   964   0  9:39PM ttys009    0:00.00 grep live-dl
# Stop process
kill 94552All configurations are defined in config.yml file. Some options can be overwritten by command line arguments.
Run ./live-dl without any parameter to print the help message.
It's recommended to use Docker for development and testing. You should simply mount all your files to the container.
# Method 1: Use compose file
docker compose up [--build]
# Method 2: Use Dockerfile
docker build -t sparanoid/live-dl:local .
docker run -it -v $(pwd):/app sparanoid/live-dl:localIf you'd like to run it locally. You need to install all the dependencies defined in live-dl.
AGPL-3.0