HandyMKV - A MakeMKV + HandBrake Productivity Tool

Hey everyone! I wrote a piece of software recently that I use frequently to make my usual MakeMKV → HandBrake → my homelab media library process a little quicker, less error prone, and just generally more efficient. I have up on GitHub for anyone to use if they are so inclined. I hope that people find it useful. I am also hoping to get some constructive criticism or other helpful comments about it.

Here is an excerpt from the README on the project’s GitHub


HandyMKV is a tool that is designed to automate the process of ripping discs using MakeMKV and then encoding the resulting files using Handbrake.

Why I Created HandyMKV

I found the process of manually ripping using MakeMKV and then encoding using HandBrake to be time consuming, disjointed, and error prone. I wanted a tool that would automate the process and provide a more user-friendly experience. Additionally, I wanted to offload the process from my main desktop computer to my home server which is headless and does not have a GUI. HandyMKV was created to address these needs.

As I developed HandyMKV, I found that I was able to add features that I found useful and that made the process faster and easier. I hope that others will find HandyMKV useful and that it will save them time and effort.


Please read the README for more details about prerequisites, features, and instructions. This software is in Beta so please adjust expectations accordingly. Thanks and I look forward to discussing the project more!

5 Likes

I might look into this…

But uh, from what I can tell from the overview, this sounds a lot like Automatic Ripping Machine:

Did you try this and if so what are the pros and cons for yours?

Side note: Something like this is probably good to ship in a Docker container. A lot of people are using appliance-type NAS OSes like TrueNAS or Proxmox or Unraid where running things natively isn’t really supported, all 3 of them run Docker just fine though.

1 Like

I had not heard of this project but after checking it out it seems really cool. It has automatic title name matching… that’s pretty awesome. Ill have to look into that. With that said I think that there are some design philosophy differences here.

1.) Interactive - HandyMKV is designed to be interactive and give you at a glance feedback about the progress of the job. You select the titles that you want to rip (across one or many disc drives) and then the process starts. It seems like ARM is designed to be completely non-interactive. That is probably great for some users but for me that level of automation would probably not be worth it.

2.) Ease of Use - HandyMKV is designed to be dead simple to configure. I created a simplified set of configuration options that are created after the user answers a series of prompts. You can also use HandBrake presets for more specific use cases. It seems like ARM is a little bit more powerful and feature rich but it seems like its more complicated to setup. Their documentation even says this - “Configuring ARM is not for the faint of heart.”

3.) Cross Platform - HandyMKV runs on multiple platforms - Windows, Mac, Linux.

As for deploying this as a Docker container, that is an interesting idea. Off the top of my head some challenges would be around passing through the hardware (disc drives + GPU’s for certain encoders). Still those may be solvable problems. I know through using Ollama that passing through GPUs is a thing you can do. Thanks for the suggestion!

1 Like

It does but I haven’t used it so I don’t know how well it really works. I’m assuming it’s just using the discs title and tries to guess a good match, cause to my knowledge there is no database to uniquely match discs to movies or shows.

OK yeah that’s probably the biggest difference then, I understood that it was automated as well.
When you say user selection, does the title list also list the length of each title? Because otherwise it’s probably impossible to tell what titles are the correct ones.

Heh yeah, when I first set it up I was going through the config file for a good half hour probably and then still had to test if everything was working the way I wanted.

In theory passing the /dev/sr0 and /dev/sg0(?) devices for each drive should be enough but it seems to vary from drive to drive. Safe bet is just using --privileged on the container.

Yup here is an example title prompt.


Reading titles from disc 0...

The following titles were read from the disc - MY_MOVIE

ID: 0, Title Name: title_t00.mkv, Size: 26.4 GB, Length: 2:16:17

ID: 1, Title Name: title_t01.mkv, Size: 2.6 GB, Length: 0:41:44

ID: 2, Title Name: title_t02.mkv, Size: 169.3 MB, Length: 0:05:30

ID: 3, Title Name: title_t03.mkv, Size: 3.9 GB, Length: 2:02:50

ID: 4, Title Name: title_t04.mkv, Size: 3.9 GB, Length: 2:02:50

Enter the IDs of the titles to process (0,1,2...) or enter 'all' to process all titles:

Usually the titlenames and discnames are more descriptive but this is just an example.

I am gonna give this a try. It would be nice to provide a container that has all prerequisites installed/configured. Ideally users would just provide a MakeMKV license then they’re good to go.

1 Like

That’s what ARM does as well, although in their config file. If none is provided, it retrieves the current beta key automatically.