RipTop: Ein altes Laptop rippt CDs vollautomatisch als FLACs und MP3s, sauber getaggt, ohne Interaktion – einfach warten, bis die CD ausgeworfen wird und die nächste einwerfen, fertig. Unter Linux könnt Ihr das in drei einfachen Schritten realisieren und so auch größere CD-Sammlungen mit minimalem Aufwand archivieren.

Ich höre schon die Lästerer – CDs rippen, das ist sowas von 90er … Aber sei’s drum, viele dürften noch beachtliche Bestände in den Regalen stehen haben – und allen, die in den 90ern Lichtdatenträger angesammelt haben sei gesagt: Es geht zu Ende mit Euren CDs – selbst Kauf-CDs werden langsam aber sicher immer schlechter lesbar. Stellt sich die Frage: Wie lassen sich Hunderte CDs mit minimalem Aufwand rippen und somit retten? Mit Linux geht das komplett automatisch: CD einlegen, warten bis sie ausgeworfen wird, fertig. Und als Ergebnis habt Ihr sauber getaggte FLAC- und MP3-Dateien. Das ganze bekommt Ihr mit drei einfachen Schritten.

Natürlich könnt Ihr auch nur FLACs oder MP3s oder sonst ein Format wählen. Der grundsätzliche Workflow ist recht simpel: Per UDEV lasst Ihr bei CD-Einwurf ein Skript starten, welches wiederum den CD-Ripper abcde startet. Eigentlich sollte das auch ohne Umweg über das Skript gehen, aber zumindest hier gab es immer wieder Rechteprobleme und mit Skript sollte es überall funktionieren.

Das ganze ist übrigens für den eigenen Bedarf entstanden: Gut 800 CDs warten im Regal darauf, verlustfrei (FLAC) und portabel (MP3) gerippt zu werden. Nun steht ein altes Laptop im Regal und ich kann einfach eine CD nach der anderen einschieben, ohne weiter tätig zu werden – fertig ist mein RipTop. Hier läuft der Workflow unter Ubuntu mit XFCE völlig reibungslos.

Den Workflow zäumen wir hier von hinten auf, da es unschön ist, ein Skript in UDEV anzusprechen, dass es noch gar nicht gibt – also: abcde konfigurieren, Skript anlegen, UDEV konfigurieren.

1. abcde konfigurieren
Die Linux-Welt ist wundervoll: abcde steht für „a better cd encoder“. Das Coole daran: abcde läuft komplett im Terminal, die Konfiguration läuft über eine Textdatei und somit lässt sich wunderbar automatisieren. Installiert also abcde und öffnet dann die Textdatei .abcde.conf in /etc/. Folgende Einstellungen solltet Ihr setzen bzw. auskommentieren:

Keine Nutzerinteraktionen:

INTERACTIVE=n

Einstellungen für MP3/FLAC (können natürlich auch manuell gewählt werden):

LAMEOPTS="--preset extreme"
FLACOPTS="--verify --best"

Ausgabeverzeichnisse für die temporären WAV-Dateien und das finale Ergebnis:

OUTPUTDIR=/home/NUTZERNAME/abcde-ripped/
WAVOUTPUTDIR=/home/NUTZERNAME/abcde-ripped/temp

Welche Typen sollen aus den WAVs konvertiert werden:

OUTPUTTYPE="flac,mp3"

Auswerfen nach Abschluss:

EJECTCD=y

2. Skript anlegen
Das Skript dient lediglich dazu, abcde mit den passenden Rechten zu starten.

#!/bin/sh
export DISPLAY=:0.0;
sudo -u NUTZERNAME xterm -e /usr/bin/abcde;
exit $?

Inhaltlich wichtig ist nur die sudo-Zeile, die den Terminal mit Eurem Nutzernamen startet, der wiederum abcde startet, der Rest muss der Form halber rein (export sorgt dafür, dass das Fenster auch tatsächlich auf Eurem Display erscheint).

3. UDEV einrichten
Über UDEV könnt Ihr Regeln anlegen, was passieren soll, wenn ein bestimmter Datenträger oder in unserem Fall Datenträgertyp (CD) eingelegt wird. Nun könntet Ihr einfach eigene Regel-Dateien anlegen, wie eigentlich angedacht, aber auch das führte hier immer wieder zu Problemen, daher: Ihr könnt Eure Regel auch einfach in eine vorhandene Regel-Datei schreiben; auf dem hiesigen System ist das die 80-persistent-cd.rules im Verzeichnis /etc/udev/rules.d. Die Datei sieht inhaltlich ungefähr wie folgt aus:

# This file maintains persistent names for CD/DVD reader and writer devices.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-cd-aliases-generator.rules
# file; however you are also free to add your own entries provided you
# add the ENV{GENERATED}=1 flag to your own rules as well.
# ODD-DVD_SD-R6372 (pci-0000:00:1f.1-scsi-1:0:0:0)

SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-1:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1",  RUN="/usr/bin/sudo /home/NUTZERNAME/test.sh"

# SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-1:0:0:0", SYMLINK+="cdrw", ENV{GENERATED}="1"
# SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-1:0:0:0", SYMLINK+="dvd", ENV{GENERATED}="1"
# SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-1:0:0:0", SYMLINK+="dvdrw", ENV{GENERATED}="1"
# U3_Contour (pci-0000:00:1d.7-usb-0:3:1.0-scsi-0:0:0:1)
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="SanDisk_U3_Contour_00001619C174122D-0:1", SYMLINK+="cdrom1", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="SanDisk_U3_Contour_00001619C174122D-0:1", SYMLINK+="cdrw1", ENV{GENERATED}="1"

Relevant ist hier die erste SUBSYSTEM-Zeile: Bis zum RUN-Kommando ist alles UDEV-Standard, achtet lediglich auf den SYMLINK „cdrom“. Anschließend wird einfach das Skript über sudo (-> Root-Rechte) gestartet. Wie gesagt: Hier über sudo/Root-Rechte zu gehen, ist nicht wirklich schön, aber es trägt dazu bei, dass das Konzept überall funktioniert – Feintuning könnt Ihr selbst übernehmen. (Im übrigen: Das Risiko ist in diesem Szenario doch überschaubar.)

Und das war es auch schon: Legt Ihr ab sofort eine CD ins Laufwerk, startet UDEV das Skript und das Skript startet abcde – abcde rippt, taggt, konvertiert und wirft die CD dann wieder aus. Kleines Manko: FLACs und MP3s landen im selben Verzeichnis. Wollt Ihr diese automatisch trennen, könnt Ihr das über ein Skript lösen – beispielsweise so:

#!/bin/sh
a=$(pwd | rev | awk -F \/ '{print $1}' | rev) && mkdir $a && mv *.flac $a/
exit $?
[UPDATE] Wir mir hilfreicherweise mitgeteilt wurde, geht das auch besser:
a=$( basename "$PWD") && mkdir "$a" && mv *.flac "$a"

Dann dürfen die Ordner auch Leerzeichen enthalten. (Andererseits: Ordner DÜRFEN NIEMALS Leerzeichen enthalten – das tut man einfach nicht!)

Führt Ihr das im Verzeichnis eines Albums aus, liest das Skript den Ordnernamen aus, erstellt darin einen Ordner, der genauso heißt und verschiebt dann alle FLACs in diesen Ordner. Liegen also die Alben in der Form „Musik/Album1/“ vor und das Skript liegt in „Musik“, dann könnt Ihr im Terminal in den Album1-Ordner wechseln und das Skript per

nutzer@ubuntu:~/Musik/Album1$  sh ../mp3-flac-trenn-skript.sh

aufrufen. Für noch mehr Komfort müsstet Ihr dann am Skript rumschrauben, um es auf alle Alben/Ordner auf einmal loszulassen, die FLAC-Ordner gegebenenfalls umzubenennen und so weiter. Aber das ist wieder ein anderes Thema.

Über den Autor

Mirco Lang

Mirco Lang

Am Anfang war der C-64 des großen Bruders des besten Freundes in der Grundschule ...

Der echte Technikwahn kam dann mit einer Ausbildung bei Saturn - als Computer noch erklärt werden mussten, Soundkarten benötigten, ein gutes Monatsgehalt kosteten und das Internet nur bei Nerds und mit 38 kbp/s lief, bestenfalls.

Ein Studium der Informationswirtschaft und ein paar Jahre als Redakteur bei Data Becker später, sitzt hier ein freier Journalist, der auf Old-School-Computing (cli ftw!), Free Software, Frickelei, Kodi und "Hundedinger" steht - und Grauseligkeiten wie Bild und Heftig.co zutiefst verabscheut.

Und sonst so? Sauerländer, BSI-Mitarbeiter, untalentierter Musikinstrumentebesitzer und seit 24 Jahren Skateboarder, ein ziemlich alter. Und manchmal kommt das abgebrochene Philo-Studium wieder durch ...

Sag' Deine Meinung

Kommentare

  • Mist , jetz habe ich kein Linux, sondern nur Windows. Kann ich dir alle meine CD`s zusenden zum rippen, hihi.
    Nein nur Spass, ich lese gerne deinen Block, ist so erfrischend ehrlich

    Gruss

    Claus

      • Ich wüsste keinen udev-Ersatz und auch für die Ripperei nach FLAC und MP3 gleichzeitig fiele mir spontan nichts ein; letzteres ließe sich zwar mit Skripten lösen, aber umständlich und immer noch nicht vollautomatisch. Wirklich lohnenswert ist das eh nur für große CD-Bestände oder Leute, die jeden Tag CDs kaufen – da bietet sich eh ein separates Gerät an, auf das dann eben auch genausogut LInux drauf kann. Auf dem Win-Produktiv-Rechner müsste man sich ansonsten zusätzlich noch um die Regulierung der Prozessor-Auslastung kümmern, da der Konverter das System sonst ständig ausbremsen würde.

  • Hi, erst mal danke für die Idee überhaupt, ich bin zufällig drauf gestossen und hab nur deshalb in den letzten zwei Tagen ein nutzlos rumliegendes Atom D420 Board reaktiviert, xubuntu + abcde installiert und das rippen läuft prima!
    Bis auf den letzten entscheidenden Teil, die Automatisierung mit udev. Mein Verzeichnis /etc/udev/rules.d war leer, also hab ich die hier gezeigte „80-persistent-cd.rules“ kopiert und die CDROM Laufwerksdaten gemäß meinem /sys/block/sr0 angepasst, aber es tut sich nichts beim Einlegen einer CD. Vlt. könnte man den Artikel um das genaue Vorgehen zur udev Konfiguration ergänzen? Grüße – Frank

    • Udev hat mich hier auch lange genervt … Sofern Du auch den Pfad zum Skript angepasst hast, fällt mir da spontan leider auch nichts ein, zumal ich mich seitdem von Udev ferngehalten (und den Rechner nicht mehr geupdated) habe. Meinem Browser-Verlauf nach zu urteilen, habe ich mich damals unter folgender Adresse schlau gemacht:
      http://www.reactivated.net/writing_udev_rules.html#syntax

      Immer wieder gut – die Ubuntu-Users:
      https://wiki.ubuntuusers.de/udev/

      Vielleicht hilft davon etwas weiter?!

      • Danke! Überraschenderweise ist die Lösung viel einfacher: ich hab einfach mal das Script unter „Removable Driver and Media“ -> „Multimedia“ -> „Play Audio CDs when inserted“ eingetragen und es funktioniert bis jetzt einwandfrei – ein Sieg der Faulheit! 😉