SoCo (Sonos Controller) est une bibliothèque Python qui vous permet de contrôler les haut-parleurs Sonos par programme. Il a été créé à l'origine lors du Music Hack Day Sydney par Rahim Sonawalla et est maintenant développé par une équipe de personnes sur son référentiel GitHub.
Pour plus d'informations sur le projet, veuillez consulter le blog de Rahim.
Visitez la documentation SoCo pour un aperçu plus détaillé des fonctionnalités.
Sonos a modifié la façon dont les informations sur les comptes de services musicaux sont disponibles. Cela signifie qu'actuellement , un groupe de services musicaux posera des problèmes d'authentification et ne pourra pas être utilisé du tout . Les membres connus de ce groupe sont : Google Play Music, Apple Music, Amazon Music, Spotify et Napster.
Le numéro 557 est un méta-problème pour ce problème et vous pouvez l'utiliser pour suivre les progrès dans la résolution des problèmes, mais veuillez vous abstenir de publier des commentaires « moi aussi » . De plus, il n’est pas nécessaire d’ouvrir un autre problème distinct à ce sujet. Si vous avez un autre service de musique qui devrait figurer sur la liste, commentez dans #557
Depuis la version 0.26.0, la prise en charge naissante des services de musique a été rétablie, avec quelques problèmes connus. Des tests et des rapports de problèmes seraient appréciés.
SoCo nécessite Python 3.6 ou version ultérieure.
Utilisez pip :
pip install soco
SoCo dépend d'un certain nombre de packages Python. Si vous utilisez pip pour installer Soco, les dépendances seront installées automatiquement pour vous. Sinon, vous pouvez inspecter les exigences dans le fichier exigences.txt.
Vous pouvez interagir avec un Sonos Zone Player via un objet SoCo. Si vous connaissez l'adresse IP d'un Zone Player, vous pouvez créer directement un objet SoCo :
>> > 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
Mais le moyen le plus simple consiste peut-être à utiliser la fonction de découverte au niveau du module. Cela trouvera tous les lecteurs de zone de votre réseau et renverra un ensemble python les contenant :
>> > from soco import discover
>> > for zone in discover ():
... print ( zone . player_name )
Living Room
Kitchen
Si vous préférez une liste à un ensemble :
>> > zone_list = list ( discover ())
>> > zone_list
[ SoCo ( "192.168.1.101" ), SoCo ( "192.168.1.102" )]
>> > zone_list [ 0 ]. mute = True
Bien sûr, vous pouvez aussi jouer de la musique !
#!/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 vous avez besoin d'aide pour SoCo, n'hésitez pas à poster votre question dans le SoCo Gitter Room.
Pour montrer ce qui peut être réalisé avec SoCo, une simple application Web est incluse dans le dossier examples
.
Capture d'écran de l'application Web
SoCo prend en charge entre autres les contrôles suivants :
SoCo prend également en charge l'accès de niveau inférieur depuis Python à tous les services Sonos (par exemple ContentDirectory ou RenderingControl).
Socos est un outil en ligne de commande permettant de contrôler les appareils Sonos. Il est développé en collaboration avec Soco, mais dans un référentiel séparé.
SoCo-CLI (soco-cli) est un outil de ligne de commande puissant et complet, adapté à une utilisation dans des scripts, des tâches planifiées, etc. Il prend en charge les actions basées sur le temps et l'état, ainsi que les commandes répétées à l'aide de boucles. Les fichiers audio sur le système de fichiers local peuvent être lus directement sur Sonos à partir de la ligne de commande. Les systèmes Sonos multi-foyers sont pris en charge.
Vous êtes plutôt fan de Ruby ? Pas de problème, Sam Soffes est en train de créer un superbe joyau Ruby.
Vous recherchez une interface graphique qui soit plus qu'un simple exemple de projet ? Joel Björkman est en train de créer une interface graphique Sonos Controller, idéale pour les utilisateurs de Linux où il n'existe pas d'application Sonos Controller officielle ! Trouvez, forkez et contribuez-y ici : https://github.com/labero/SoCo-Tk.
Il existe une salle de discussion SoCo Gitter. N'hésitez pas à venir nous voir pour obtenir de l'aide, des idées ou une conversation informelle liée à SoCo.
SoCo est publié sous la licence MIT.