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

