automatisch Aktion nach einlegen einer CD ausführen

crotchmaster

happy BSD user
Moin Jungs,

ich bin gerade mal dabei einige (?) meiner CD's mittels abcde in ogg-Files zu wandeln. Das klappt auch gut. Ich tue dies auf meinem FreeBSD-Server, der ohne GK und Tastatur seine Dienste zu Hause verrichtet und auch die längste uptime meiner Rechner hat, insofern ist er dafür am besten geeignet, weil er sowieso läuft.

Das encoden läuft jetzt so ab, dass ich mein Desktopsystem laufen habe, mich per ssh-Verbindung eingelogge und abcde händisch anwerfe.

Gibt es eine Möglichkeit, das zu automatisieren?

Ich dachte daran, eine Audio-CD einzulegen, und der Rechner fängt dann elektrisch an die CD zu encoden und öffnet danach wieder die CD-Lade. Auf meinem Desktop-Rechner habe ich soetwas ähnliches mit KDE 3.5.5, dbus hald usw. laufen. Geht das auch anders, oder brauche ich das KDE-Gedöns?

Vielleicht hat jemand eine Anregung für mich.

Gruß c.
 
Mit dem neuen HAL aus den Ports wäre es machbar. Dieser gibt dir Rückmeldung, was am System passiert. Du müsstest als ein Programm oder ein Script schreiben, welches das Ereignis "Audio CD eingelegt" abfängt und endsprechende Aktionen ausführt. Die Frage ist allerdings, ob sich der Aufwand für dich lohnt, da es afaik keine fertige Software gibt.
 
Versuch's mal mit dem Programm "grip", das kann man, so glaube ich, so einstellen, daß es automatisch beim Einlegen anfängt zu rippen.
 
Da es nur einmalig ist, kannst du ja einen ueblen Hack scripten, sinngemaess sowas (ungetestet):

Code:
#!/bin/sh
wait_for_cd()
{
  while ! dd if=/dev/acd0 of=/dev/null bs=2352 count=10; do sleep 60; done
}

while :; do
  wait_for_cd >/dev/null 2>&1
  abcde ...
  cdcontrol -f /dev/acd0 eject
done
 
Moin Jungs,

vielen Dank für Eure Tipps. Ich muss ja sagen, die Sache mit dem hald hat mich nicht losgelassen. Ich habe nach etwas Forschung über hald folgendes gemacht:

1. ich habe im Verzeichnis /usr/local/etc/hal/fdi/policy ein Verzeichnis 95userpolicy angelegt und darin die Datei rippAudioCd.fdi erstellt, wobei der Name des Verzeichnisses und der Datei egal ist, solange die Datei auf .fdi endet.

2. Die Datei rippAudioCd.fdi hat folgenden Inhalt:
Code:
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

  <device>
    <match key="volume.is_disc" bool="true">
      <match key="volume.disc.has_audio" bool="true">
        <append key="info.callouts.add" type="strlist">hal-ripp-audio-cd</append>
      </match>
    </match>
  </device>

</deviceinfo>
Das bedeutet im Prinzip, wenn die CD Lade geschlossen wird, wird durch hald ein Eintrag für die CD (Volume) in der Deviceliste erstellt und hald sucht das Verzeichnis /usr/local/etc/hal/fdi nach fdi-Files durch und 'führt' die darin beschriebenen Tests und Aktionen aus. In diesem Fall prüft er, ob es eine CD ist (volume.is_disc), dann ob die CD eine Audio-CD ist (volume.disc.has_audio) und wenn ja, wird der Schlüssel info.callaouts.add dem Volume hinzugefügt. Der teilt ihm mit, das er die Datei hal-ripp-audio-cd im Verzeichnis /usr/local/libexec/hal/scripts ausführen soll.

3.) Ich habe ein ausführbares Shellscript /usr/local/libexec/hal/scripts/hal-ripp-audio-cd erstellt, das im Moment nur ein echo 'audio cd eingelegt!' enthält.

Soweit funktioniert auch alles. Beim Einlegen einer Audio-CD wird das Shellscript aufgerufen, allerdings zweimal :-(. Aber das ist das geringste Problem. Soetwas habe ich bei meinem Desktop-System mit FreeBSD auch, dort wird der Konqueror sogar viermal beim Einlegen einer Daten-CD aufgerufen.

Ich habe folgende brauchbare Quellen benutzt:
http://www.redhat.com/magazine/003jan05/features/hal/ und
http://gitweb.freedesktop.org/?p=hal.git;a=blob_plain;f=doc/spec/hal-spec.html


Vielleicht hat ja jemand Lust, weiter zu forschen. Ich werde das Shellscript jetzt schreiben und dann mit hald und dem Script meine Audio-CDs rippen.

Gruß c.

PS: Beim Installieren des hald wird das Tool lshal mitinstalliert, damit könnt ihr euch die Device Objektliste von hald anschauen, und damit Änderungen in der Liste nach Aktionen ansehen.
 
Zuletzt bearbeitet:
Zurück
Oben