Hi Mike and everyone,
I am currently working on a Linux shell script to fully automate the backup of TV Series Blu-rays. The script analyzes the disc structure based on MPLS numbers, audio track counts, and languages to automatically identify the "correct" episodes and filter out "Play All" playlists or duplicates (e.g., Japanese versions with fewer audio tracks).
The Problem: When backing up a TV series, I often identify ~12 specific Title IDs out of ~30 available on the disc that I want to keep. Currently, makemkvcon forces me to choose between two inefficient methods:
Use all: makemkvcon mkv disc:0 all ...
Pros: Fast (Disc is read once).
Cons: It rips everything, including the "Play All" title (which duplicates the episodes) and unwanted junk titles. Even with selection rules (e.g., -sel:all,+sel:(deu|eng)), MakeMKV still creates MKV files for the unwanted IDs (sometimes empty or video-only), which requires massive I/O and cleanup afterwards.
Loop over IDs: for ID in $LIST; do makemkvcon mkv disc:0 $ID ...; done
Pros: Clean output. Only the desired episodes are created.
Cons: Extremely slow. MakeMKV has to re-open, re-scan, and re-authenticate the disc for every single episode. For a 12-episode disc, this adds significant overhead (10-15 minutes of just "opening disc" time).
The Analysis Example: Here is the output of my analysis script for Friends Season 2 Disc 1. My script correctly identifies the "Cluster" of episodes (IDs 0-25) and detects ID 20 as a "Fake/Play-All" playlist (because of the MPLS number gap), and IDs 5-18 as junk (low audio count/wrong language).
Plaintext
MPLS FILE | ID | DURATION | TRACKS | LANG | STATUS
------------+----+----------+--------+------+------------------
00071.mpls | 4 | 0:22:48 | 5 | YES | MASTER (Episode)
00072.mpls | 3 | 0:22:51 | 5 | YES | MASTER (Episode)
00073.mpls | 2 | 0:22:50 | 5 | YES | MASTER (Episode)
...
00081.mpls | 11 | 0:22:45 | 5 | YES | MASTER (Episode)
00082.mpls | 19 | 0:22:47 | 5 | YES | MASTER (Episode)
00201.mpls | 20 | 0:22:48 | 5 | YES | 🗑 FAKE/PLAY-ALL (Ignored due to MPLS gap)
00401.mpls | 7 | 0:22:48 | 2 | NO | 🗑 JUNK/DUPLICATE
...
The Request: I would love to be able to pass a list of IDs to makemkvcon so it can process them in one session without closing the disc, similar to how all works, but selective.
Something like this syntax would be perfect: makemkvcon mkv disc:0 0,1,2,3,4,11,19,21,22,23,24,25 /target/dir/
Or perhaps via an argument: makemkvcon mkv disc:0 all --titles="0 1 2 3 4" /target/dir/
This would make creating automated ripping stations for TV series much faster and more efficient (saving mechanical stress on the drive and time).
Thanks for the great work on MakeMKV!