SoCo (Sonos Controller) ist eine Python-Bibliothek, mit der Sie Sonos-Lautsprecher programmgesteuert steuern können. Es wurde ursprünglich beim Music Hack Day Sydney von Rahim Sonawalla erstellt und wird jetzt von einem Team in seinem GitHub-Repository entwickelt
Weitere Hintergrundinformationen zum Projekt finden Sie in Rahims Blogbeitrag.
Besuchen Sie die SoCo-Dokumentation für einen detaillierteren Überblick über die Funktionalität.
Sonos hat die Art und Weise geändert, wie Kontoinformationen für Musikdienste verfügbar sind. Dies bedeutet, dass derzeit bei einer Gruppe von Musikdiensten Authentifizierungsprobleme auftreten und diese überhaupt nicht verwendet werden können . Bekannte Mitglieder dieser Gruppe sind: Google Play Music, Apple Music, Amazon Music, Spotify und Napster.
Problem Nr. 557 ist ein Meta-Problem für dieses Problem und Sie können es verwenden, um den Fortschritt bei der Lösung der Probleme zu verfolgen. Bitte posten Sie dort jedoch keine „Ich auch“-Kommentare . Es besteht auch keine Notwendigkeit, hierzu eine weitere gesonderte Ausgabe zu eröffnen. Wenn Sie einen anderen Musikdienst haben, der auf der Liste stehen sollte, kommentieren Sie ihn unter #557
Ab Version 0.26.0 wurde die Unterstützung neuer Musikdienste mit einigen bekannten Problemen wieder aufgenommen. Tests und Problemberichte wären willkommen.
SoCo erfordert Python 3.6 oder neuer.
Pip verwenden:
pip install soco
SoCo ist auf eine Reihe von Python-Paketen angewiesen. Wenn Sie Soco mit pip installieren, werden die Abhängigkeiten automatisch für Sie installiert. Wenn nicht, können Sie die Anforderungen in der Datei „requirements.txt“ überprüfen.
Sie können über ein SoCo-Objekt mit einem Sonos Zone Player interagieren. Wenn Sie die IP-Adresse eines Zone Players kennen, können Sie direkt ein SoCo-Objekt erstellen:
>> > 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
Der vielleicht einfachste Weg ist jedoch die Verwendung der Erkennungsfunktion auf Modulebene. Dadurch werden alle Zone Player in Ihrem Netzwerk gefunden und ein Python-Set zurückgegeben, das sie enthält:
>> > from soco import discover
>> > for zone in discover ():
... print ( zone . player_name )
Living Room
Kitchen
Wenn Sie eine Liste einem Set vorziehen:
>> > zone_list = list ( discover ())
>> > zone_list
[ SoCo ( "192.168.1.101" ), SoCo ( "192.168.1.102" )]
>> > zone_list [ 0 ]. mute = True
Natürlich können Sie auch Musik abspielen!
#!/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 ()
Wenn Sie Unterstützung für SoCo benötigen, können Sie Ihre Frage gerne im SoCo Gitter Room posten.
Um zu zeigen, was mit SoCo möglich ist, ist im examples
eine einfache Webanwendung enthalten.
Screenshot der Web-App
SoCo unterstützt unter anderem folgende Kontrollen:
SoCo unterstützt auch den Zugriff auf niedrigerer Ebene von Python auf alle Sonos-Dienste (z. B. ContentDirectory oder RenderingControl).
Socos ist ein Befehlszeilentool zur Steuerung von Sonos-Geräten. Es wird in Zusammenarbeit mit Soco entwickelt, jedoch in einem separaten Repository.
SoCo-CLI (soco-cli) ist ein leistungsstarkes und voll ausgestattetes Befehlszeilentool, das für die Verwendung in Skripten, geplanten Aufgaben usw. geeignet ist. Es unterstützt zeitbasierte und zustandsbasierte Aktionen sowie wiederholte Befehle mithilfe von Schleifen. Audiodateien im lokalen Dateisystem können über die Befehlszeile direkt auf Sonos abgespielt werden. Es werden Sonos-Systeme für mehrere Haushalte unterstützt.
Sind Sie eher ein Ruby-Fan? Kein Problem, Sam Soffes baut ein fantastisches Ruby-Juwel auf.
Suchen Sie eine GUI, die mehr als nur ein Beispielprojekt ist? Joel Björkman erstellt eine Sonos Controller-GUI – ideal für Leute unter Linux, für die es keine offizielle Sonos Controller-Anwendung gibt! Hier können Sie es finden, forken und dazu beitragen: https://github.com/labero/SoCo-Tk.
Es gibt einen SoCo-Gitter-Diskussionsraum. Für Unterstützung, Ideen oder lockere Gespräche rund um SoCo können Sie gerne vorbeikommen.
SoCo wird unter der MIT-Lizenz veröffentlicht.