Python UPnP/IGD Client Implementation?

oparisy picture oparisy · Nov 16, 2008 · Viewed 7.9k times · Source

I am searching for an open-source implementation of an UPnP client in Python, and more specifically of its Internet Gateway Device (IGD) part.

For now, I have only been able to find UPnP Media Server implementations, in projects such as PyMediaServer, PyMedS, BRisa or Coherence.

I am sure I could use those code bases as a start, but the Media Server part will introduce unneeded complexity.

So can you recommend a client UPnP (and hopefully IGD) Python library? An alternative would be to dispatch calls to a C library such as MiniUPnP, but I would much prefer a pure Python implementation.

Update: an interesting, kind of related discussion of SSDP and UPnP is available on StackOverflow.

Answer

oparisy picture oparisy · Nov 18, 2008

MiniUPnP source code contains a Python sample code using the C library as an extension module (see testupnpigd.py), which I consider as a proper solution to my problem.

Rationale: this is not the pure Python solution I was looking for, but:

  • significant effort has already been invested in this library,
  • it is lightweight (it does not address Media Server issues),
  • IGD is typically only used at connection setup, so not integrating it tighter with the Python code does not seem like an issue,
  • as a bonus, it also provides a NAT-PNP implementation (the Apple concurrent of IGD, part of Bonjour).