An automated ripper/encoder, which sucks content off of physical media and onto your hard drive.
Go to file
Neale Pickett f739a18c23 Working to get completion percentage 2022-01-09 16:26:12 -07:00
scripts Working to get completion percentage 2022-01-09 16:26:12 -07:00
www Add http status thingy 2022-01-06 17:33:25 -07:00
.gitlab-ci.yml Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist 2022-01-06 19:29:48 +00:00
Dockerfile Working to get completion percentage 2022-01-09 16:26:12 -07:00
LICENSE Add LICENSE 2022-01-06 19:52:33 +00:00
README.md Update README with ports 2022-01-06 17:37:34 -07:00
TODO.md Working to get completion percentage 2022-01-09 16:26:12 -07:00
abcde.conf Nicer mp3 filenames 2022-01-06 18:09:25 -07:00
httpd.conf Add http status thingy 2022-01-06 17:33:25 -07:00

README.md

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.
  • Rip video DVDs, transcode them to mkv

How To Run This

First you have to build it. It will build on a raspberry pi.

docker build --tag=media-sucker .

You'll need a place to store all your precious media:

incoming=/path/to/incoming
mkdir -P $incoming
chown 911:911 $incoming

Then you can run it:

docker run -d --restart=unless-stopped \
  --name=sucker \
  --device cdrom --device dvd --device sr0 \
  -v $incoming:/incoming \
  -p 5880:8080 \
  media-sucker

Or you can put it in a docker-compose.yaml file:

services:
  sucker:
    image: media-sucker
    volumes:
      - type: bind
        source: /path/to/incoming
        target: /incoming
    ports:
      - published: 5880
        target: 8080

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:5880/

A note on filenames and tags

This program does the absolute minimum to try and tag your media properly.

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.

If CDDB can't find a match for an audio CD, this program will append the datestamp of the rip to the album name, in the hopes that you can remember about what time you put each CD in the drive. So for stuff like multi-CD audiobooks, that's pretty helpful.

But the end result in almost every case is that you're going to have to manually edit the metadata.

Answers

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. I spent about two days trying to get a Docker container built for it, and another day trying to get it to actually read my drive. I got it reading the drive exactly once, and then never again.

That's when I gave up and created my own thing, which is pretty janky, but works a lot better for me, in that it actually does 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.