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ą.

iPod detection actually works

Autor wtyczki poinformował mnie przy okazji, że planowane jest jej włączenie do podstawowego kodu Quod Libet.

Technorati Tags: , , , , ,