Raspberry Pi als automatischer CD-Kopierer

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi Leute,

    jetzt da ich ja endlich meinen raspberry pi habe möcht ich mein erstes Projekt in Angriff nehmen.

    Ich habe die ganzen Sachen die ich angeplant habe nochmal über den Haufen geworfen und habe jetzt was gefunden das wirklich sinnvoll für mich ist:

    Ich möchte den Raspberry Pi die Songs einer CD automatisch auf die externe Festplatte kopieren lassen, sobald eine CD eingelegt wird. Als CD-Laufwerk dient hierbei ein Usb-Laufwerk von ebay welches noch gekauft wird.

    Wenn möglich soll der Raspberry Pi für jede Cd einen Ordner anlegen, noch besser wäre natürlich wenn er diesem den Name der CD geben würde.

    Ist sowas für mich als absoluten Programmierneuling (abgesehen js) möglich und gut machbar, oder sollte ich mit was einfacherem anfangen? Wenn ihr denkt das ist machbar, wie starte ich dann?

    Und was noch viel wichtiger ist: Hat Windows so eine Funktion? Mit kopieren einfügen etc ist klar, aber es soll automatisch gehen sobald eine Cd im Laufwerk einliegt. Denn dann wäre es sinnlos mich an der Rpi zu setzen und mich damit zu befassen, dann gehe ich gleich eine meiner anderen Ideen an :).

    Also Machts gut und danke für eure Hilfe.

    Starri

  • Wieso beschäftigst Du Dich mit derart unwichtigem Krams, wenn doch bald die Apokalypse kommt und Du Überlebensvorbereitungen treffen musst? :D

    CD-Unterstützung ist leider sehr stiefmütterlich, das mußte ich auch schon feststellen.
    Den Raspberry als CD-Player zu benutzen (ohne angeschlossenen Bildschirm) ist schon nahezu unmöglich, da es nicht wirklich Programme dafür gibt. Mit Rippen dürfte es ähnlich aussehen.

    Und als Noob - sowieso schon mal schlechte Karten.

  • Das Rippen von Audio CDs und das ablegen auf der HD ist, wenn ich mich recht entsinne im Raspbmc nativ enthalten.
    Ich weiß natürlich nicht, ob dies nur bei CDs ohne Kopierschutz, also älteren, funktioniert.

  • Du könntest es auch mit " abcde " probieren:

    Code
    apt-get install abcde

    Da es sowohl umfangreich zu konfigurieren geht und ein commandline Tool ist, wäre vermutlich das einzige um das was man sich kümmern müsste, regelmässig zu prüfen ob eine neue CD eingelegt wurde um dann abcde auszuführen...


    Weitere Tools sind auch hier gelistet: http://wiki.ubuntuusers.de/CDs_rippen#Terminal
    (da gibts auch nen Link zu ner Beschreibung von abcde)


  • ...
    Und was noch viel wichtiger ist: Hat Windows so eine Funktion? Mit kopieren einfügen etc ist klar, aber es soll automatisch gehen sobald eine Cd im Laufwerk einliegt. Denn dann wäre es sinnlos mich an der Rpi zu setzen und mich damit zu befassen, dann gehe ich gleich eine meiner anderen Ideen an :).

    Also Machts gut und danke für eure Hilfe.

    Starri

    Hallo Starri,

    soweit ich mich erinnere, kam bei Windows doch immer ein Dialog hoch:
    "Es wurde ein Datenträger Audio CD eingelegt ... wie soll verfahren werden ..."

    Programm (Ripper) schreiben ... diesen dort eintragen ... gut ist ;) ....

    cu,
    -ds-

    • Offizieller Beitrag

    soll aber gehen ;)

    Zitat von http://www.linuxquestions.org/questions/linux-software-2/using-udev-to-automatically-run-a-script-on-optical-disc-mount-792428/


    Once that was solved the UDEV command was easy; it will launch my script when a disc is mounted by the optical drive. Also, the rule file had to run last with the name "99-my.rule" in order to function.

    Code
    SUBSYSTEM=="block", KERNEL=="sr0", ENV{DKD_MEDIA_AVAIABLE}=="1", RUN+="/usr/local/bin/detectdisc"
  • Hier ein kleines C++ Script was man dafür nutzen kann um es von UDEV aufrufen zu lassen, und bei eingelegter AudioCD kann dann der ripper ausgeführt werden:

    Oder ein Bash Script was permanent im Kreis läuft und prüft ob /dev/cdrom gemounted ist:


    Problematisch dabei ist allerdings festzustellen ob es sich um eine AudioCD handelt - dafür ist das obige C++ besser da dafür die sehr umfangreiche /usr/include/linux/cdrom.h genutzt werden kann

    /EDIT: Das C++ Programm mit entsprechender Zeile zum ausführen von abcde
    (die Options müsste man entsprechend noch anpassen, oder die abcde.conf anpassen)

    Die Ausgabe könnte man auch noch in ein Logfile umleiten, was zB im /var/www/ liegt sodass man dann auch noch prüfen könnte ob das Rippen erfolgreich war...

    Script in zB audiocd.cpp copy&pasten (dateiendung ist wichtig) und zum kompilieren:

    Code
    g++ -o /bin/audiocd audiocd.cpp

    Danach steht die ausführbare Binary als /bin/audiocd bereit, also zum testen einfach audiocd eingeben

  • Hallo zusammen,

    ich nehme mal die von dbv oben gepostete udev Regel mit angepasstem Skriptaufruf:

    Code
    SUBSYSTEM=="block", KERNEL=="sr0", ENV{DKD_MEDIA_AVAIABLE}=="1", RUN+="/home/pi/copydisk"

    Das Skript (/home/pi/copydisk) könnte dann so aussehen:

    Bash
    #!/bin/bash
    ACTTIME="$(date +%F-%H%m%S)"
    mkdir /home/pi/CD-${ACTTIME} && cd /home/pi/CD-${ACTTIME} && cdparanoia -BXw && eject

    Ich verwende gerne "cdparanoia" - das wirst Du vermutlich noch installieren müssen. Nach dem Kopiervorgang wird die CD ausgeworfen (eject), das kann man natürlich auch weglassen.

    meigrafd: Das von Dir zitierte bashscript wird für AudioCDs eher nicht funktionieren, da es nach "mount" abfragt, eine AudioCd aber nicht gemounted sein wird.

    Gruß, mmi

  • zu dem Bash Script sagte ich ja selber dass das eher nicht gehen würde

    habe mittlerweile das C++ Script und abcde erfolgreich getestet - das erkennt dann nämlich auch ob es sich um eine AudioCD handelt sodass man auch problemlos noch DatenCDs einlegen kann ohne haufenweise Fehlermeldungen zu produzieren :)
    abcde kann man auch sehr umfangreich über /etc/abcde.conf konfigurieren und es erzeugt eben auch ein unterordner mit dem Artist usw

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!