Implementación de Python UPnP / IGD Client?

Estoy buscando una implementación de código abierto de un cliente UPnP en Python, y más específicamente de su parte de dispositivo de puerta de enlace a Internet (IGD).

Por ahora, solo he podido encontrar implementaciones de UPnP Media Server, en proyectos como PyMediaServer , PyMedS , BRisa o Coherence .

Estoy seguro de que podría usar esas bases de código como un comienzo, pero la parte del Servidor de Medios introducirá una complejidad innecesaria.

Entonces, ¿puedes recomendar una biblioteca Python de UPnP (y con suerte IGD) de cliente? Una alternativa sería enviar llamadas a una biblioteca de C como MiniUPnP , pero preferiría una implementación pura de Python.

Actualización: un tipo interesante de discusión relacionada sobre SSDP y UPnP está disponible en StackOverflow .

    El código fuente de MiniUPnP contiene un código de ejemplo de Python que utiliza la biblioteca C como un módulo de extensión (consulte testupnpigd.py ), que considero una solución adecuada para mi problema.

    Razón: esta no es la solución de Python pura que estaba buscando, pero:

    • Se ha invertido un esfuerzo significativo en esta biblioteca,
    • es ligero (no aborda los problemas del servidor de medios),
    • IGD normalmente solo se usa en la configuración de la conexión, por lo que no integrarlo más estrechamente con el código Python no parece ser un problema,
    • como beneficio adicional, también proporciona una implementación NAT-PNP (el concurrente de Apple de IGD, parte de Bonjour ).

    Creo que realmente deberías considerar a BRisa. Recientemente se convirtió en un framework UPnP de python puro, no enfocado solo en el servidor de medios.

    Proporciona muchos módulos y funciones utilitarias para que usted construya y despliegue su dispositivo UPnP.

    El proyecto también carece de retroalimentación :-). Le sugiero que utilice el último código svn, si está dispuesto a probar BRisa.

    También puede contactar a los desarrolladores en #brisa en irc.freenode.org, ya sea que estemos en línea o inactivos.