Rip your DVDs and Blu-rays into a clean, Jellyfin/Plex-ready library. Point it at a disc — it identifies the movie or show via TMDB, works out which titles are the real episodes, and rips them with correct names, with a confirmation step so nothing lands in the wrong place.
Movies: Title (Year) [imdb-ttID]/Title (Year) [imdb-ttID] - 1080p.mkv
TV: Show (Year) [imdb-ttID]/Season N/Show (Year) - s01e01.mkv
Windows only for now.
- Drag-and-drop web UI (or a terminal CLI) — you always confirm before anything is ripped or moved.
- Recognizes known discs via TheDiscDb — if the community already catalogued your exact disc, the show, season, and per-episode title mapping are filled in automatically; you just review and rip. Unknown discs fall back to the normal flow.
- TMDB identification with a match picker (e.g. the 2005 vs 2024 Avatar).
- Handles messy TV Blu-rays — excludes "Play All" titles, extras, and duplicate playlists; orders episodes using the disc's own Play-All; resumes across multi-disc sets without clobbering what you already ripped.
- Optional per-title thumbnails pulled straight from the disc (no full rip), so you can eyeball which title is which.
- Never overwrites existing files.
For how each of these works under the hood, see HOW-IT-WORKS.md.
- Windows 10 / 11
- MakeMKV, Python 3.9+, and (optional, for thumbnails) ffmpeg with libbluray — all installed for you by the setup script below.
- A free TMDB API key (v3): https://www.themoviedb.org/settings/api
- Download or clone this repository.
- Double-click
setup.cmd(or runpowershell -ExecutionPolicy Bypass -File setup.ps1). It installs the prerequisites via winget, asks for your TMDB key and library paths, writesconfig.json, and verifies everything works. - Register MakeMKV — open the MakeMKV app once and enter your license, or the free beta key (rotates monthly, posted on the MakeMKV forum). The setup script can apply a key you paste, but can't provide one.
To reconfigure later, re-run setup (your current values become the defaults) or
edit config.json.
Manual setup (without the script)
- Install MakeMKV and Python 3.9+.
For thumbnails, also install an ffmpeg build with libbluray:
winget install Gyan.FFmpeg. - Copy
config.example.jsontoconfig.jsonand set at leasttmdb_api_key,tv_root,movie_root, and themakemkvcon/ffmpegpaths. See the config reference.
Keep the MakeMKV app closed while ripping — only one program can read the optical drive at a time.
py webapp.pyOpens http://127.0.0.1:8765. Pick the drive → Scan → confirm the show → drag any titles that need fixing onto the right episodes → Rip. The board flags duplicates, extras, and episodes you already have on the NAS.
If the disc is already in TheDiscDb, Scan jumps straight to a pre-filled board — a "Matched by TheDiscDb" banner, the right show/season selected, and every episode already assigned — so you usually just click Rip.
py diskrip.py # scan the disc, confirm, rip
py diskrip.py --dry-run # show the plan, rip nothing
py diskrip.py --list-drives # list optical drives
py diskrip.py --yes # unattended (no confirmation)The full flag list and the interactive commands are in HOW-IT-WORKS.md.
setup.cmd writes config.json for you. The keys you'll usually set are
tmdb_api_key, tv_root, and movie_root; everything else has sensible
defaults. See config.example.json and the
full reference.
Your
config.jsoncontains your TMDB key. It's git-ignored — don't commit it.
- "The MakeMKV app is open" / SCSI errors — close the MakeMKV window. Only one program can use the optical drive at a time.
- Scan hangs, then aborts — the disc is probably dirty or scratched; clean and reseat it. (The tool aborts after ~2 minutes rather than hanging forever.)
- No thumbnails — set
ffmpeginconfig.jsonto a libbluray build (winget install Gyan.FFmpeg). Details in HOW-IT-WORKS.md.
Uses MakeMKV for ripping, the TMDB API for metadata, and TheDiscDb (MIT) for community disc-to-episode mappings. This product uses the TMDB API but is not endorsed or certified by TMDB.