An automated ripper/encoder, which sucks content off of physical media and onto your hard drive.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Neale Pickett 9195bbc839
Remove gitlab CI thing
7 months ago
.vscode Refactor. CD maybe working? 10 months ago
doc Refactor. CD maybe working? 10 months ago
src Move container image to my registry 7 months ago
www Move container image to my registry 7 months ago
.gitignore Possibly working? 1 year ago
Dockerfile Move container image to my registry 7 months ago
LICENSE Add LICENSE 1 year ago Audio CDs are working well! 10 months ago Maybe fix audio tracks 10 months ago
abcde.conf Nicer mp3 filenames 1 year ago Move container image to my registry 7 months ago
httpd.conf Add http status thingy 1 year ago Move container image to my registry 7 months ago

The Media Sucker

This program watches your CD/DVD drive. When you put a CD or DVD in, it will suck the content off, eject the drive, and then re-encode the content to a compressed format.

What It Supports

At the time I'm writing this README, it will:

  • Rip audio CDs, look them up in cddb, encode them to VBR MP3, then tag them.
    • It also writes a shell script you can modify to quickly change the tags, since this is a pretty common thing to want to do.
  • Rip video DVDs, transcode them to mkv


The requirements are fairly light: a few CD tools, cdparanoia, HandBrakeCLI, and some DVD libraries.

Most notably, you do not need a relational database (SQLite, Postgres, MySQL). You just need a file system.

For a complete list of requirements, look at the Dockerfile to see what Debian packages it installs.

How To Run This

You need a place to store your stuff. Mine is /srv/ext/incoming.

docker run \
    --name=sucker \
    -d --restart=always \
    -p 8080:8080 \
    --device /dev/sr0 \
    -v /srv/ext/incoming:/incoming \

I can't get it to work with docker swarm, which doesn't support --device.

Stick a video DVD or audio CD in, and the drive should spin up for a while, then spit your media back out. Then, eventually, you'll have a new .mkv file (for video) or a new directory of .mp3 files (for audio).

You can watch what it's doing at http://localhost:8080/

A note on filenames and tags

This program does the absolute minimum to try and tag your media properly. Partly because I'm a lazy programmer, but mostly because the computer can only guess at things that you, the operator, can just read off the box.

For DVDs, that means reading the "title" stored on the DVD, which I've seen vary from very helpful (eg. "Barbie A Fashion Fairytale") to ridiculously unhelpful (eg. "FBWTF2"). But at least it's usually unique for each DVD and at least somewhat related to the DVD contents.

For CDs, the situation is even worse. Audio CDs do not store any metadata, so CDDB takes the length of every track in seconds and tries to match that against something a user has uploaded in the past. This is wrong a whole lot of the time.

But the end result in almost every case is that you're going to have to rename the movie file, or re-tag the audio files. This is why you get a file with every audio CD rip.


I'm skipping the part where I make up questions I think people might have.

Why I Wrote This

The automatic-ripping-machine looks really badass. But after multiple attempts across multiple months to get it running, I decided it would probably be faster just to write my own.

media-sucker isn't as cool as the automatic-ripping-machine. But, at least for me, it's more useful, in that I can get it to actually do something.

Why You Should Run This

The only reason I can think of that anybody would want to use this is if they, like me, are too dumb to get the automatic-ripping-machine to work.

What Kind Of Hardware I Use

I run it on a Raspberry Pi 4, with a Samsung DVD drive from the stone age.