diff options
Diffstat (limited to 'avahi_browse.py')
-rw-r--r-- | avahi_browse.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/avahi_browse.py b/avahi_browse.py new file mode 100644 index 0000000..ecc4f8a --- /dev/null +++ b/avahi_browse.py @@ -0,0 +1,46 @@ +# http://avahi.org/wiki/PythonBrowseExample +import dbus, gobject, avahi +from dbus import DBusException +from dbus.mainloop.glib import DBusGMainLoop + +# Looks for iTunes shares + +TYPE = "_http._tcp" + +def service_resolved(*args): + print 'service resolved' + print 'name:', args[2] + print 'address:', args[7] + print 'port:', args[8] + print args + +def print_error(*args): + print 'error_handler' + print args[0] + +def myhandler(interface, protocol, name, stype, domain, flags): + print "Found service '%s' type '%s' domain '%s' " % (name, stype, domain) + + if flags & avahi.LOOKUP_RESULT_LOCAL: + # local service, skip + pass + + server.ResolveService(interface, protocol, name, stype, + domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), + reply_handler=service_resolved, error_handler=print_error) + +loop = DBusGMainLoop() + +bus = dbus.SystemBus(mainloop=loop) + +server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, '/'), + 'org.freedesktop.Avahi.Server') + +sbrowser = dbus.Interface(bus.get_object(avahi.DBUS_NAME, + server.ServiceBrowserNew(avahi.IF_UNSPEC, + avahi.PROTO_UNSPEC, TYPE, 'local', dbus.UInt32(0))), + avahi.DBUS_INTERFACE_SERVICE_BROWSER) + +sbrowser.connect_to_signal("ItemNew", myhandler) + +gobject.MainLoop().run() |