Hallo!
Ich suche schon seit längeren ein Modul, mit dem man Audio-CDs auslesen kann, also die Daten von der CD kopieren kann. Das ganze sollte sich sowohl mit Linux, als auch mit Windows vertragen.
Ich habe bereits http://sourceforge.net/projects/cddb-py/ gefunden, was sich jedoch nicht auf meinem Linux [OpenSuse 12.1] installieren lässt
Gibts sowas?? - oder muss ich auf ein anderes Programm zurückgreifen, dass ich mit [z.B.] os.system() benutzen muss??
Danke schoneinmal im Vorraus!
akhof
Audio-CD auslesen
Eigentlich ist CDDB ja dafür bekannt Leuten, die sich CDs in Eigenarbeit rippen, korrekte Tags zu liefern. Für Rippen selbst braucht man was ganz anderes.
edit:
edit:
This is actually a set of three modules to access the CDDB and FreeDB online databases of audio CD track titles and information. It includes a C extension module to fetch track lengths under Linux, FreeBSD, OpenBSD, Mac OS X, Solaris, and Win32, which is easily ported to other operating systems.
Unter Linux gibt's die Tools "cdda2wav" und "cdparanoia".
Dafür Frontends wie "abcde" und "grip".
Ist aber alles ohne Python.
Dafür Frontends wie "abcde" und "grip".
Ist aber alles ohne Python.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Die könnte man aber ja z.B. über `subprocess` ansprechen.problembär hat geschrieben:Unter Linux gibt's die Tools "cdda2wav" und "cdparanoia".
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
hey, danke!
@akhof: Kann das heute nicht eigentlich jeder Audio-Player, sowohl unter Linux als auch unter Windows? Wieso möchtest Du das noch selbst implementieren?
-
- User
- Beiträge: 185
- Registriert: Montag 12. Oktober 2015, 21:24
- Wohnort: Landsberg am Lech
- Kontaktdaten:
Hallo,
ok, lang lang ist es her, dass sich hier jemand zu diesem Thema geäußert hat.
Ja, jeder Audioplayer kann heute wohl eine Audio-CD wiedergeben.
Nein, eine Audio-CD Rippen kann auch heute noch nicht jeder Audioplayer, zumindest nicht so einfach, dass man es jemanden zumuten kann.
Ich will hier ein Beispiel zeigen, wie man vorgehen muss, um mit dem bekannten VLC media player eine Audio-CD zu rippen:
Das ist ziemlich umständlich, weshalb selbst vom VideoLAN-Team empfohlen wird, dafür einen speziellen CD-Ripper wie zum Beispiel CDex zu verwenden.
So einfach ist allerdings die Sache mit dem speziellen CD-Ripper auch nicht, besonders, wenn man sicherheitsbewusst ist, denn mit solchen Programmen bekommt man gerne etwas untergeschoben.
Es könnte also durchaus interessant sein, so etwas über Python zu lösen, wobei es nur um die Ansteuerung geht, im Prinzip das, was diese Batchdatei auch macht. Das Rippen selbst erledigt der VLC ausgezeichnet.
Über Python könnte man das optische Laufwerk, den Zielordner und das Zielformat (WAV oder MP3) abfragen und dann den VLC mit einem Kommandozeilenstring für jedes Audiostück auf der CD aufrufen.
MfG, kodela
ok, lang lang ist es her, dass sich hier jemand zu diesem Thema geäußert hat.
Ja, jeder Audioplayer kann heute wohl eine Audio-CD wiedergeben.
Nein, eine Audio-CD Rippen kann auch heute noch nicht jeder Audioplayer, zumindest nicht so einfach, dass man es jemanden zumuten kann.
Ich will hier ein Beispiel zeigen, wie man vorgehen muss, um mit dem bekannten VLC media player eine Audio-CD zu rippen:
Code: Alles auswählen
@ECHO OFF
REM im VieoLAN-Forum: https://forum.videolan.org/viewtopic.php?f=2&t=126878&p=426574#p426574
REM Diese Batchdatei ermoeglicht das Rippen aller Tracks einer Audio-CD nach MP3 oder WAV.
REM Sie muss jedoch an die individuellen Gegebenheiten angepast und
REM in der Codierung OEM850 gespeichert werden.
REM Die Pfade fuer die vlc.exe, das optische Laufwerk und den Zielordner muessen angepasst werden.
REM Wichtig für das richtige Auslesen der Tracks.
SETLOCAL ENABLEDELAYEDEXPANSION
REM Laufende Nummer auf Null setzen.
SET /a n=0
SET f=""
REM ### Zielordner anpassen - der Pfadname darf keine Leerstellen enthalten ###
SET p=D:\VLC\Musik\Neu\
REM Alle Tracks der CD bearbeiten.
REM ### Den Pfad fuer das optische Laufwerk anpassen (G:\). ###
FOR /R G:\ %%T IN (*.cda) DO (CALL :sub_transcode "%%T")
REM Nach Beendigung des Jobs zum Ende springen.
GOTO :eof
:sub_transcode
REM Hier beginnt die Bearbeitung eines Tracks.
REM Naechste laufende Nummer festlegen.
CALL SET /a n=n+1
REM Bearbeitung des naechsten Stueckes anzeigen.
ECHO transcodiere %1
REM Vornull fuer einstellige laufende Nummer beruecksichtigen.
IF !n! GTR 9 GOTO :without_zero
REM Wenn laufende Nummer einstellig ist:
CALL SET f=%p%Track0!n!
GOTO :transcode
REM Laufende Nummer ist zweistellig:
:ohne_Null
CALL SET f=%p%Track!n!
:transcode
REM ### Pfad fuer auszuefuehrende vlc.exe anpassen. ###
REM Standard-Interface wird nicht angezeigt.
REM Soll das Standard-Interface angezeigt werden, den Parameter "-I http" entfernen.
REM Transkodierung nach MP3
CALL vlc -I http cdda:///G:/ --cdda-track=!n! :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:std{access="file",mux=raw,dst=!f!.mp3} vlc://quit
REM Transkodierung nach WAV
REM CALL vlc -I http cdda:///G:/ --cdda-track=!n! :sout=#transcode{vcodec=none,acodec=s16l,ab=224,channels=2,samplerate=48000}:std{access="file",mux=wav,dst=!f!.wav} vlc://quit
:eof
So einfach ist allerdings die Sache mit dem speziellen CD-Ripper auch nicht, besonders, wenn man sicherheitsbewusst ist, denn mit solchen Programmen bekommt man gerne etwas untergeschoben.
Es könnte also durchaus interessant sein, so etwas über Python zu lösen, wobei es nur um die Ansteuerung geht, im Prinzip das, was diese Batchdatei auch macht. Das Rippen selbst erledigt der VLC ausgezeichnet.
Über Python könnte man das optische Laufwerk, den Zielordner und das Zielformat (WAV oder MP3) abfragen und dann den VLC mit einem Kommandozeilenstring für jedes Audiostück auf der CD aufrufen.
MfG, kodela
Vielleicht kann das nicht jeder, aber eigentlich jeder Standardplayer der vom System ”empfohlen” wird. Selbst der windowseigene Windows Media Player kann das.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
... und der kann das IMHO sogar ziemlich gut und schnell. Jedenfalls steckt der Win Mediaplayer Rhythmbox (unter Ubuntu der Standard) in Sachen MP3 rippen in die Tasche. Aber das ist ein anderes ThemaSelbst der windowseigene Windows Media Player kann das.
Gruß, noisefloor
Wer sich selbst zumutet mit CDs zu hantieren statt Spotify zu verwenden wie Leute die in 2015 angekommen sind, wird darüber wohl hinweg kommen.kodela hat geschrieben:Nein, eine Audio-CD Rippen kann auch heute noch nicht jeder Audioplayer, zumindest nicht so einfach, dass man es jemanden zumuten kann.
@DasIch: Äh, wer in 2015 angekommen ist muss DRM-Kram streamen? Da möchte ich dann nicht ankommen! Ich habe meine Musik lieber ohne DRM und wenn streamen dann von meinem Server, lieber aber die Daten direkt mitnehmen um auch dann hören zu können wenn kein oder nur schlechtes Netz da ist. Selbst bei gutem Empfang will ich unterwegs kein Datenvolumen für Musik verbraten.
DRM ist prinzipiell nicht schön aber wenn man etwas streamt oder leiht ist DRM meiner Meinung nach schon akzeptabel. Anders als bei Musik die ich kaufe, habe ich hier ja nicht die Erwartung dass ich unbegrenzt darauf Zugriff habe.BlackJack hat geschrieben:@DasIch: Äh, wer in 2015 angekommen ist muss DRM-Kram streamen?
Sowohl Spotify als auch Apple Music erlauben dir Musik auch Offline zu hören.Ich habe meine Musik lieber ohne DRM und wenn streamen dann von meinem Server, lieber aber die Daten direkt mitnehmen um auch dann hören zu können wenn kein oder nur schlechtes Netz da ist. Selbst bei gutem Empfang will ich unterwegs kein Datenvolumen für Musik verbraten.
@DasIch: Es gibt auch 2015 noch Leute die Musik nicht leihen wollen. Ich höre kostenloses Internetradio für die Sachen die ich nicht dauerhaft haben möchte, und das was ich mir in X Jahren gerne noch einmal anhören möchte, kaufe ich. DRM-frei ist da nach wie vor auch 2015 noch die CD das Medium für. Was heisst noch — das ist im Grunde das Medium das gewähleistet das die Konsumenten eine DRM-freie Alternative haben, denn wenn es nur noch Downloads gäbe, würde man legal wohl nix DRM-freies von den grossen Anbietern bekommen. Und die CD muss man dann halt rippen wenn man nicht tatsächlich mit CDs hantieren will.
Ich weiß nicht wie es bei anderen Anbietern aussieht aber bei iTunes bekommst du Musik schon seit Jahren nur noch ohne DRM. DRM gibt es nur bei Büchern, Videos (wobei ich es auch hier bei ausgeliehenen Videos akzeptabel finde) und Musik die du über Apple Music beziehst.BlackJack hat geschrieben:Was heisst noch — das ist im Grunde das Medium das gewähleistet das die Konsumenten eine DRM-freie Alternative haben, denn wenn es nur noch Downloads gäbe, würde man legal wohl nix DRM-freies von den grossen Anbietern bekommen.
-
- User
- Beiträge: 185
- Registriert: Montag 12. Oktober 2015, 21:24
- Wohnort: Landsberg am Lech
- Kontaktdaten:
Hallo @BlackJack:
Mit Dir gibt es, wie ich Deinen Beiträgen hier entnehme, doch noch mindestens einen jüngeren hier in diesem Forum, der sich vorstellen kann, dass auch eine Audio-CD Quelle für das Hören von Musik sein kann, zumindest als Quelle für eine eigene digitale Sammlung, die man sich aus seiner (alten) CD-Sammlung zusammenstellen möchte. Es ging hier ja um das Rippen, nicht um das Hören. Das scheint @DasIch übersehen zu haben.
Deshalb die Frage, wie kann man über Python feststellen, ob auf einem System ein optisches Laufwerk zur Verfügung steht und wenn ja, welche Bezeichnung das Laufwerk hat?
MfG, kodela
Mit Dir gibt es, wie ich Deinen Beiträgen hier entnehme, doch noch mindestens einen jüngeren hier in diesem Forum, der sich vorstellen kann, dass auch eine Audio-CD Quelle für das Hören von Musik sein kann, zumindest als Quelle für eine eigene digitale Sammlung, die man sich aus seiner (alten) CD-Sammlung zusammenstellen möchte. Es ging hier ja um das Rippen, nicht um das Hören. Das scheint @DasIch übersehen zu haben.
Deshalb die Frage, wie kann man über Python feststellen, ob auf einem System ein optisches Laufwerk zur Verfügung steht und wenn ja, welche Bezeichnung das Laufwerk hat?
MfG, kodela
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Windows, Linux oder MacOS?ob auf einem System ein optisches Laufwerk zur Verfügung steht und wenn ja, welche Bezeichnung das Laufwerk hat?
Gruß, noisefloor
@Kodela: Unter Linux könnte man den `udisks-daemon` via `dbus` befragen:
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
from functools import partial
import dbus
UDISKS_SERVICE = UDISKS_IFACE = 'org.freedesktop.UDisks'
UDISKS_DEVICE_IFACE = UDISKS_IFACE + '.Device'
def main():
bus = dbus.SystemBus()
udisks = bus.get_object(UDISKS_SERVICE, '/org/freedesktop/UDisks')
for path in udisks.EnumerateDevices(dbus_interface=UDISKS_IFACE):
device = bus.get_object(UDISKS_SERVICE, path)
properties_iface = dbus.Interface(device, dbus.PROPERTIES_IFACE)
device_get = partial(properties_iface.Get, UDISKS_DEVICE_IFACE)
if device_get('DeviceIsDrive'):
compatible_media = device_get('DriveMediaCompatibility')
if any(media.startswith('optical') for media in compatible_media):
print(device_get('DeviceFile'), ':', device_get('DriveModel'))
if __name__ == '__main__':
main()
-
- User
- Beiträge: 185
- Registriert: Montag 12. Oktober 2015, 21:24
- Wohnort: Landsberg am Lech
- Kontaktdaten:
Hallo,
ich habe nun etwas gebastelt, womit im System alle Laufwerke abgefragt und darauf überprüft werden, ob es sich um ein optisches Laufwerk mit eingelegter Audio-CD handelt. Hier meine Lösung:
Gehe ich richtig in der Annahme, dass diese Lösung auch unter Linux und OS X funktioniert?
MfG, kodela
ich habe nun etwas gebastelt, womit im System alle Laufwerke abgefragt und darauf überprüft werden, ob es sich um ein optisches Laufwerk mit eingelegter Audio-CD handelt. Hier meine Lösung:
Code: Alles auswählen
# coding=utf-8
import os
from string import ascii_uppercase
gefunden = False
for c in ascii_uppercase:
path = c + ':'
try:
props = os.stat(path)
except WindowsError:
continue
if os.path.isdir(path):
props = os.stat(path)
if props[6] == 0:
# Größe des Objekts in Bytes - bei Audio CDs: 0
print 'Im Laufwerk ' + path + ' ist eine Audio-CD eingelegt.'
gefunden = True
if not gefunden:
print 'Es wurde kein Laufwerk mit eingelegter Audio-CD gefunden.'
MfG, kodela