Kolejny raz prosty skrypt, tym razem z prośbą o przetestowanie. Chodzi o automatyczne wykrywanie podłączonego iPoda. Zależy mi dodaniu automatycznej obsługi tych urządzeń do programów, które w tej chwili wymagają ręcznego podania nazwy urządzenia i punktu montowania (gtkpod, Quod Libet z wtyczką do iPoda). W tym celu muszę się upewnić, że wykrywanie działa prawidłowo.
Wymagania
- dbus
- hal
- python
- python-dbus
Skrypt
#!/usr/bin/python import dbus class IPodSeek (object): def findPod(self): bus = dbus.SystemBus() try: hal_manager_obj = bus.get_object('org.freedesktop.Hal', '/org/freedesktop/Hal/Manager') hal_manager = dbus.Interface(hal_manager_obj, 'org.freedesktop.Hal.Manager') dev_udi_list = hal_manager.FindDeviceStringMatch ('portable_audio_player.type', 'ipod') for udi in dev_udi_list: vol_udi_list = hal_manager.FindDeviceStringMatch ('info.parent', udi) for vol_udi in vol_udi_list: vol_obj = bus.get_object ('org.freedesktop.Hal', vol_udi) vol = dbus.Interface (vol_obj, 'org.freedesktop.Hal.Device') if not vol.GetProperty('volume.is_mounted'): continue; return (vol.GetProperty('block.device'), vol.GetProperty('volume.mount_point')) except None: print 'HAL is down.' return ('', '') def __init__(self): (dev, mount) = self.findPod() print 'dev = %s; mount = %s' % (dev, mount) IPodSeek()
Instrukcja obsługi
Wystarczy zapisać plik jako ipodseek.py
i nadać mu prawa do wykonania (chmod +x ipodseek.py
).
Prosiłbym o podanie w komentarzach, czy skrypt działa prawidłowo (iPod musi być zamontowany), konkretnego modelu iPoda i dystrybucji użytej do testowania. Jeśli wszystko pójdzie zgodnie z planem, przygotuję patche na źródła programów. Zgodnie z filozofią Apple, chciałbym żeby iPod po prostu działał.
Sprawdzone urządzenia
- iPod Nano (PLD 3.0; Gentoo — Maciej
Tas
Litwiniuk) - iPod Shuffle (Ubuntu Dapper 6.06 — Maciej
byte
Chojnacki)
Implementacja
Na początek, przygotowałem patch dla wtyczki do Quod Libeta, jest do pobrania na stronie z wtyczką.
Autor wtyczki poinformował mnie przy okazji, że planowane jest jej włączenie do podstawowego kodu Quod Libet.