SoCo (Sonos Controller) es una biblioteca de Python que le permite controlar los altavoces Sonos mediante programación. Fue creado originalmente en Music Hack Day Sydney por Rahim Sonawalla y ahora está desarrollado por un equipo de personas en su repositorio GitHub.
Para obtener más información sobre el proyecto, consulte la publicación del blog de Rahim.
Visite la documentación de SoCo para obtener una descripción más detallada de la funcionalidad.
Sonos ha cambiado la forma en que está disponible la información de la cuenta del servicio de música. Esto significa que actualmente un grupo de servicios de música dará problemas de autenticación y no podrá usarse en absoluto . Los miembros conocidos de este grupo son: Google Play Music, Apple Music, Amazon Music, Spotify y Napster.
El número 557 es un metaproblema para este problema y puede usarlo para realizar un seguimiento del progreso en la resolución de los problemas, pero absténgase de publicar comentarios de "yo también" allí. Además, no es necesario abrir ningún tema más por separado sobre esto. Si tienes otro servicio de música que debería estar en la lista, comenta en el #557
A partir de la versión 0.26.0, se restableció el soporte del incipiente servicio de música, con algunos problemas conocidos. Se agradecerían las pruebas y los informes de problemas.
SoCo requiere Python 3.6 o posterior.
Usar pipa:
pip install soco
SoCo depende de varios paquetes de Python. Si usa pip para instalar Soco, las dependencias se instalarán automáticamente. De lo contrario, puede inspeccionar los requisitos en el archivo requisitos.txt.
Puedes interactuar con un Sonos Zone Player a través de un objeto SoCo. Si conoce la dirección IP de un Zone Player, puede crear un objeto SoCo directamente:
>> > from soco import SoCo
>> > my_zone = SoCo ( '192.168.1.101' )
>> > my_zone . player_name
Kitchen
>> > my_zone . status_light = True
>> > my_zone . volume = 6
Pero quizás la forma más sencilla sea utilizar la función de descubrimiento a nivel de módulo. Esto encontrará todos los Zone Players en su red y devolverá un conjunto de Python que los contiene:
>> > from soco import discover
>> > for zone in discover ():
... print ( zone . player_name )
Living Room
Kitchen
Si prefiere una lista a un conjunto:
>> > zone_list = list ( discover ())
>> > zone_list
[ SoCo ( "192.168.1.101" ), SoCo ( "192.168.1.102" )]
>> > zone_list [ 0 ]. mute = True
¡Por supuesto, también puedes reproducir música!
#!/usr/bin/env python
from soco import SoCo
if __name__ == '__main__' :
sonos = SoCo ( '192.168.1.102' ) # Pass in the IP of your Sonos speaker
# You could use the discover function instead, if you don't know the IP
# Pass in a URI to a media file to have it streamed through the Sonos
# speaker
sonos . play_uri (
'http://ia801402.us.archive.org/20/items/TenD2005-07-16.flac16/TenD2005-07-16t10Wonderboy.mp3' )
track = sonos . get_current_track_info ()
print ( track [ 'title' ])
sonos . pause ()
# Play a stopped or paused track
sonos . play ()
Si necesita soporte para SoCo, no dude en publicar su pregunta en SoCo Gitter Room.
Para mostrar lo que se puede hacer con SoCo, se incluye una sencilla aplicación web en la carpeta de examples
.
Captura de pantalla de la aplicación web
SoCo admite los siguientes controles, entre otros:
SoCo también admite acceso de nivel inferior desde Python a todos los servicios de Sonos (por ejemplo, ContentDirectory o RenderingControl).
Socos es una herramienta de línea de comandos para controlar dispositivos Sonos. Se desarrolla junto con Soco, pero en un repositorio separado.
SoCo-CLI (soco-cli) es una herramienta de línea de comandos potente y con todas las funciones adecuada para usar en scripts, tareas programadas, etc. Admite acciones basadas en tiempo y estado, y comandos repetidos mediante bucles. Los archivos de audio del sistema de archivos local se pueden reproducir directamente en Sonos desde la línea de comandos. Se admiten sistemas Sonos multihogar.
¿Más fanático de Ruby? No hay problema, Sam Soffes está construyendo una increíble joya Ruby.
¿Busca una GUI que sea más que un simple proyecto de muestra? Joel Björkman está creando una interfaz gráfica de usuario de Sonos Controller, ideal para usuarios de Linux donde no existe una aplicación oficial de Sonos Controller. Búsquelo, bifurque y contribuya aquí: https://github.com/labero/SoCo-Tk.
Hay una sala de debate sobre SoCo Gitter. No dude en visitarnos para recibir apoyo, ideas o conversaciones informales relacionadas con SoCo.
SoCo se publica bajo la licencia MIT.