SoCo (Sonos Controller) คือไลบรารี Python ที่ให้คุณควบคุมลำโพง Sonos โดยทางโปรแกรม เดิมทีถูกสร้างขึ้นที่ Music Hack Day Sydney โดย Rahim Sonawalla และปัจจุบันได้รับการพัฒนาโดยทีมงานที่พื้นที่เก็บข้อมูล GitHub
หากต้องการทราบความเป็นมาเพิ่มเติมเกี่ยวกับโครงการ โปรดดูบล็อกโพสต์ของ Rahim
ไปที่เอกสาร SoCo เพื่อดูภาพรวมโดยละเอียดเพิ่มเติมของฟังก์ชันการทำงาน
Sonos ได้เปลี่ยนวิธีการใช้ข้อมูลบัญชีบริการเพลง ซึ่งหมายความว่า ในปัจจุบันกลุ่มบริการเพลงจะมีปัญหาในการตรวจสอบสิทธิ์และไม่สามารถใช้งานได้เลย สมาชิกที่รู้จักของกลุ่มนี้คือ: Google Play Music, Apple Music, Amazon Music, Spotify และ Napster
ปัญหา #557 เป็นปัญหา meta สำหรับปัญหานี้ และคุณสามารถใช้เพื่อติดตามความคืบหน้าในการแก้ปัญหาได้ แต่ โปรดอย่าโพสต์ความคิดเห็น "ฉันด้วย" ในนั้น อีกทั้งไม่จำเป็นต้องเปิดประเด็นแยกต่างหากเกี่ยวกับเรื่องนี้อีกต่อไป หากคุณมีบริการเพลงอื่นที่ควรอยู่ในรายการ แสดงความคิดเห็นใน #557
ในเวอร์ชัน 0.26.0 การสนับสนุนบริการเพลงที่เพิ่งเกิดขึ้นใหม่ได้รับการคืนสถานะแล้ว โดยมีปัญหาที่ทราบบางประการ การทดสอบและการรายงานปัญหาจะได้รับการชื่นชม
SoCo ต้องใช้ Python 3.6 หรือใหม่กว่า
ใช้ปิ๊ป:
pip install soco
SoCo ขึ้นอยู่กับแพ็คเกจ Python จำนวนหนึ่ง หากคุณใช้ pip เพื่อติดตั้ง Soco การขึ้นต่อกันจะถูกติดตั้งให้คุณโดยอัตโนมัติ หากไม่เป็นเช่นนั้น คุณสามารถตรวจสอบข้อกำหนดได้ในไฟล์ Requirements.txt
คุณสามารถโต้ตอบกับ Sonos Zone Player ผ่านวัตถุ SoCo ได้ หากคุณทราบที่อยู่ IP ของ Zone Player คุณสามารถสร้างออบเจ็กต์ 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
แต่บางทีวิธีที่ง่ายที่สุดคือการใช้ฟังก์ชันการค้นพบระดับโมดูล สิ่งนี้จะค้นหา Zone Players ทั้งหมดบนเครือข่ายของคุณและส่งคืนชุดหลามที่มี:
>> > from soco import discover
>> > for zone in discover ():
... print ( zone . player_name )
Living Room
Kitchen
หากคุณต้องการรายการมากกว่าชุด:
>> > zone_list = list ( discover ())
>> > zone_list
[ SoCo ( "192.168.1.101" ), SoCo ( "192.168.1.102" )]
>> > zone_list [ 0 ]. mute = True
แน่นอน คุณยังสามารถเล่นเพลงได้!
#!/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 ()
หากคุณต้องการความช่วยเหลือสำหรับ SoCo โปรดโพสต์คำถามของคุณได้ที่ SoCo Gitter Room
เพื่อแสดงให้เห็นว่า SoCo สามารถทำอะไรได้บ้าง เว็บแอปพลิเคชันแบบธรรมดาจะรวมอยู่ในโฟลเดอร์ examples
ภาพหน้าจอของเว็บแอป
SoCo รองรับการควบคุมต่อไปนี้:
SoCo ยังรองรับการเข้าถึงระดับล่างจาก Python ไปยังบริการ Sonos ทั้งหมด (เช่น ContentDirectory หรือ RenderingControl)
Socos เป็นเครื่องมือบรรทัดคำสั่งสำหรับควบคุมอุปกรณ์ Sonos ได้รับการพัฒนาร่วมกับ Soco แต่อยู่ในพื้นที่เก็บข้อมูลแยกต่างหาก
SoCo-CLI (soco-cli) เป็นเครื่องมือบรรทัดคำสั่งที่ทรงพลังและมีฟีเจอร์ครบถ้วน เหมาะสำหรับใช้ในสคริปต์ งานที่กำหนดเวลาไว้ ฯลฯ โดยรองรับการดำเนินการตามเวลาและสถานะ และคำสั่งซ้ำโดยใช้ลูป ไฟล์เสียงบนระบบไฟล์ในเครื่องสามารถเล่นได้โดยตรงบน Sonos จากบรรทัดคำสั่ง รองรับระบบ Sonos สำหรับหลายครัวเรือน
เป็นแฟน Ruby มากกว่านี้ไหม? ไม่มีปัญหา Sam Soffes กำลังสร้างอัญมณี Ruby ที่ยอดเยี่ยมขึ้นมา
กำลังมองหา GUI ที่เป็นมากกว่าโครงการตัวอย่างอยู่ใช่ไหม? Joel Björkman กำลังสร้าง Sonos Controller GUI ซึ่งเหมาะสำหรับผู้ใช้ Linux ที่ไม่มีแอปพลิเคชัน Sonos Controller อย่างเป็นทางการ! ค้นหา แยก และมีส่วนร่วมได้ที่นี่: https://github.com/labero/SoCo-Tk
มีห้องสนทนา SoCo Gitter อย่าลังเลที่จะแวะมาเพื่อรับการสนับสนุน แนวคิด หรือการสนทนาสบายๆ ที่เกี่ยวข้องกับ SoCo
SoCo เปิดตัวภายใต้ใบอนุญาต MIT