112 lines
3.1 KiB
Markdown
112 lines
3.1 KiB
Markdown
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:
|
|
|
|
```yaml
|
|
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.
|