Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/avahi_browse.py
diff options
context:
space:
mode:
Diffstat (limited to 'avahi_browse.py')
-rw-r--r--avahi_browse.py46
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()