Seite 1 von 1

Laufwerksnamen ermitteln

Verfasst: Dienstag 24. März 2009, 18:15
von py_lo
Hallo,

ich bin dabei ein kleines DVD-Backup programm zu schreiben.
Dabei wird der Inhalt der DVD in ein ISO-File geschrieben.

Nun könnte man ja einfach die aktuelle Zeit/Datum für den Dateinamen
verwenden, ich möchte aber gerne den Namen der DVD ermitteln.

Bin noch recht neu in python unterwegs und habe leider nichts
passendes gefunden :(

Vielleicht könnt Ihr mir ja weiterhelfen....

OS: Ubuntu 'Hardy'
Python 2.4

Verfasst: Dienstag 24. März 2009, 18:33
von Leonidas
Bei mir geht das einfach per Shell:

Code: Alles auswählen

hal-get-property --udi `hal-find-by-capability --capability volume.disc` --key info.product
Erst muss die Unique Device ID gefunden werden, und dann kann man unter dessen dem Schlüssel "info.product" das Label auslesen.

Verfasst: Dienstag 24. März 2009, 21:20
von py_lo
Super, danke!

leider bekomme ich das in python nicht umgesetzt.

Gedacht hab ich mir das irgenwie so:

Code: Alles auswählen

ret = commands.getoutput('hal-get-property --udi ?hal-find-bycapability? --key info.product').split('\n')
Nur so einfach geht das ja nicht, "hal-find-by-capability" ist ja ein eigener
Befehl, wie kann ich das also kombinieren.

:oops:

hat sich erledigt, funktioniert - hatte schreibfehler!!

Verfasst: Mittwoch 25. März 2009, 02:16
von lunar
Alternativ kannst du HAL auch direkt über DBus nutzen.

Verfasst: Mittwoch 25. März 2009, 07:07
von py_lo
Alternativ kannst du HAL auch direkt über DBus nutzen.
Yo, ähh Danke. Wie meinen?

Hab es jetzt halt so gelöst:

Code: Alles auswählen

dvdname = commands.getoutput("hal-get-property --udi `hal-find-by-capability --capability volume.disc` --key info.product").split('\n')
verzeichnis = "/media/film/" + dvdname[0]
   if os.path.exists(verzeichnis):
   ...
Aber Alternativ heisst ja auch nicht das es besser oder einfacher ist :wink:

Verfasst: Mittwoch 25. März 2009, 09:27
von Leonidas
Das ist recht hässlich und wird komische Effekte bringen falls 2 DVDs eingelegt sind. Wenn dann würde man in Python beide Befehle einzeln aufrufen: erst die UDI bestimmen, gucken wie viele gefunden worden sind und Fehler behandeln und dann auf ``info.product`` zugreifen.

Oder wie lunar meinte, HAL über DBus befragen, ist warscheinlich eine hübschere Lösung falls man das ``dbus``-Modul vorraussetzen kann.

Verfasst: Mittwoch 25. März 2009, 12:48
von lunar
py_lo hat geschrieben:
Alternativ kannst du HAL auch direkt über DBus nutzen.
Yo, ähh Danke. Wie meinen?
So ;)
Das benötigte dbus-Modul sollte es in den Paketquellen deiner Distribution geben, wahrscheinlich unter dem Namen "python-dbus" oder ähnlich.

Falls du die Lösung mit Unterprozessen beibehalten willst, würde ich zumindest das subprocess-Modul nutzen.