I’ve got a shelf of discs, a MakeMKV box, and a Sonarr/Radarr setup. Getting the ripped files from one to the other has always been tedious. Especially multi-episode discs where you have to figure out which title maps to which episode before you can rename anything.

So I built Discarr: a local Node.js web UI (no npm deps) that handles that pipeline.

Scan a VIDEO_TS/BDMV/ISO directory, get a list of titles with duration and chapter info, map them to Sonarr episodes or Radarr movies, queue the HEVC encode (ffmpeg or HandBrake, local or SSH to a remote encode box), and have it notify Sonarr/Radarr when done.

System deps: Node.js 18+, ffmpeg + ffprobe. HandBrake optional.

Docker image (latest) includes ffmpeg and openssh-client. For HandBrake support use the :handbrake tag.

# Default (ffmpeg)
docker run -d -p 8603:8603 \
  -v ~/.config/media-postprocessor:/root/.config/media-postprocessor:ro \
  -v /path/to/media:/media \
  pyr0ball/discarr:latest

# HandBrake variant
docker run -d -p 8603:8603 \
  -v ~/.config/media-postprocessor:/root/.config/media-postprocessor:ro \
  -v /path/to/media:/media \
  pyr0ball/discarr:handbrake

Also optional: qBittorrent hook so disc rips downloaded as torrents auto-queue; Tdarr notify after encode.

Forgejo: https://git.opensourcesolarpunk.com/Circuit-Forge/discarr GitHub: https://github.com/pyr0ball/discarr

By dev @pyr0ball@reddthat.com