Aller au contenu

soco-cli

https://github.com/avantrec/soco-cli

Installation

On crée un environnement virtuel:

~/Documents/venv master* ⇡
❯ python3 -m venv soco-cli

On l'active:

~/Documents/venv master* ⇡
❯ source soco-cli/bin/activate

On met à jour pip et setuptools:

~/Documents/venv/soco-cli/bin master* ⇡
soco-cli  pip3 install -U pip setuptools

On installe soco-cli:

~/Documents/venv/soco-cli/bin master*  10s
soco-cli  pip3 install -U soco-cli

soco et soco-cli sont disponibles, ainsi que leurs alias sonos et sonos-discover.

~/Documents/venv/soco-cli master* ⇡
soco-cli  ls bin
Activate.ps1        easy_install        python          sonos-discover
activate        easy_install-3.8    python3         tabulate
activate.csh        pip         soco
activate.fish       pip3            soco-discover
chardetect      pip3.8          sonos

On peut linker sonos dans /usr/local/bin pour avoir la commande directement

~/Documents/venv master* ⇡
❯ ln -s /Users/bruno/Documents/venv/soco-cli/bin/sonos /usr/local/bin

et créer un alias pour sonos-discover dans .zshrc ou .bashrc

alias sonos-discover="/Users/bruno/Documents/venv/soco-cli/bin/sonos-discover -t 256 -n 1.0 -m 24"

Commande sonos-discover

Permet de découvrir les appareils Sonos sur le réseau:

 sonos-discover -t 256 -n 1.0 -m 24

Networks searched: [IPv4Network('192.168.1.0/24')]

Sonos Household: Sonos_MmiahLD8Lavgm9ypGrX1Zx99sy

Room/Zone Name    IP Address    Device Model    Visibility    SW Version

----------------  ------------  --------------  ------------  ------------

Salon             192.168.1.17  One             Visible       12.1

1 Sonos Household(s) found
1 Sonos device(s) found

Saved speaker data at: /Users/bruno/.soco-cli/speakers_v2.pickle

Commande sonos (ou soco)

$ sonos <enceinte> <commande>

Enceintes et Système Sonos Info:

Afficher les alarmes:

❯ sonos Salon alarms

Speaker    Start Time    Duration    Title     Volume   Enabled    Play Mode    Recurrence    Include Grouped

---------  ------------  ----------  -------  --------  ---------  -----------  ------------  -----------------

Salon      06:00         01:00       Unknown     25     Yes        SHUFFLE      WEEKDAYS      No

Infos sur l'enceinte (IP, version...)

 sonos Salon info
  balance = (100, 100)
  bass = 0
  cross_fade = False
  display_version = 12.1
  grouped_or_paired = False
  hardware_version = 1.26.1.7-2.2
  household_id = Sonos_MmiahLD8Lavgm9ypGrX1Zx99sy
  ip_address = 192.168.1.17
  is_coordinator = True
  is_playing_line_in = False
  is_playing_radio = True
  is_playing_tv = False
  is_soundbar = False
  is_visible = True
  loudness = True
  mac_address = 48-A6-B8-F0-26-62
  model_name = Sonos One
  model_number = S18
  mute = True
  night_mode = None
  player_icon = /img/icon-S18.png
  player_name = Salon
  serial_number = 48-A6-B8-F0-26-62:G
  software_version = 60.3-81140
  state = PLAYING
  status_light = True
  title = franceinter-midfi.mp3?ID=76zqey582k
  treble = 0
  uid = RINCON_48A6B8F0266201400
  volume = 21
  zone_name = Salon

Afficher tous les groupes du système Sonos:

 sonos Salon groups
[Salon] : Salon (192.168.1.17)

Liste des partages:

 sonos Salon shares
 1: //DS916/music

# shares, libraries

Tableau d'info sur toutes les enceintes du système:

 sonos Salon sysinfo

Report generated on: 2020-11-01 12:08 UTC (Sunday)

Zone Name    IP Address    Visible    CoOrd    CoOrd IP     Vol.   Mute    State    Model Name    Model No.    HW Version    SW Version

-----------  ------------  ---------  -------  ----------  ------  ------  -------  ------------  -----------  ------------  -----------------

Salon        192.168.1.17  Yes        Yes                    21    True    PLAYING  One           S18          1.26.1.7-2.2  60.3-81140 (12.1)

Sonos model numbers present: S18.
Device counts: 1 total Sonos device(s), 1 unique model(s).

Radios:

On peut jouer des radios en les ajoutant aux Favoris Sonos

 sonos Salon play_fav "france inter"

# play_fav, play_favourite, pf

ou en les ajoutant à la playlist "My Radio Stations" de Tune-In

 sonos Salon play_favourite_radio_station "france inter"

# play_favourite_radio_station, pfrs

Liste des radios favorites:

 sonos Salon favourite_radio_stations

    1: France Inter 95.9 (Émissions-débats France)
    2: K6 FM 101.6 (Musique Locale)
    3: RTL 104.2 (Monde)

# favourite_radio_stations, frs, lfrs

Favoris et playlists:

Afficher les Favoris Sonos:

 sonos Salon list_favs

    1: France Inter 95.9 (Émissions-débats France)
    2: K6 FM 101.6 (Musique Locale)
    3: Les Introuvables
    4: RTL 104.2 (Monde)
    5: Rire et Chansons 91.8 (Comédie)
    6: Shaka Ponk
    7: franceinfo 101.2 (Émissions-débats France)

Afficher toutes les pistes de toutes les playlist Sonos:

 sonos Salon list_all_playlist_tracks

  Sonos Playlist: plex 1
  ======================

      1: Artist: Renaud | Album: Boucan d'enfer | Title: Docteur Renaud Mister Renaud
      2: Artist: Renaud | Album: Boucan d'enfer | Title: Petit pede

Afficher les playlist Sonos:

 sonos Salon list_playlists

    1: plex 1

# list_playlists, playlists, lp

Musiques:

Liste des albums:

 sonos Salon list_albums

  Sonos Music Library Albums
  ===========================

      1: Album: ¡Dos! | Artist: Green Day
      2: Album: "Portrait d'artiste" | Artist: Lynda Lemay
      3: Album: (No Reason To Cry) | Artist: Eric Clapton
      4: Album: 10 | Artist: Stranglers
      5: Album: 100th Window | Artist: Massive Attack
            ...

# list_albums, albums

Liste des artistes:

 sonos Salon list_artists

  Sonos Music Library Artists
  ============================

      1: AaRON
      2: Aaron Copland
      3: Adam - C de Roquemaure
      4: Adele
      5: Afro-Cuban Project

# list_artists, artists

Rechercher un artiste:

 sonos Salon search_artists pink

  Sonos Music Library Albums including Artist: Pink Floyd
  =======================================================

      1: Album: A Momentary Lapse Of Reason | Artist: Pink Floyd
      2: Album: A Saucerful of Secrets | Artist: Pink Floyd
      3: Album: Animals | Artist: Pink Floyd
      4: Album: Atom heart mother | Artist: Pink Floyd
      5: Album: Echoes - The Best Of Pink Floyd | Artist: Pink Floyd
      6: Album: Eclipse - Live in London | Artist: Pink Floyd
      7: Album: Meddle | Artist: Pink Floyd
      8: Album: Music From The Film More | Artist: Pink Floyd
      9: Album: Obscured By Clouds | Artist: Pink Floyd
     10: Album: The Best Of Pink Floyd - A Foot In The Door | Artist: Pink Floyd
     11: Album: The Best Of Pink Floyd: A Foot In The Door (2011 Remastered Version) | Artist: Pink Floyd
     12: Album: The Dark Side of the Moon | Artist: Pink Floyd
     13: Album: The Division Bell | Artist: Pink Floyd
     14: Album: The Final Cut | Artist: Pink Floyd
     15: Album: The Later Years: 1987-2019 | Artist: Pink Floyd
     16: Album: The Piper at the Gates of Dawn | Artist: Pink Floyd
     17: Album: The Wall CD1 | Artist: Pink Floyd
     18: Album: The Wall CD2 | Artist: Pink Floyd
     19: Album: Ummagumma - Live Album | Artist: Pink Floyd
     20: Album: Ummagumma - Studio Album | Artist: Pink Floyd
     21: Album: Wish You Were Here | Artist: Pink Floyd


  Sonos Music Library Albums including Artist: Pink Martini
  =========================================================

      1: Album: Sympathique | Artist: Pink Martini

Note: multiple artists found ... search not saved

# search_artists, sart

Rechercher un album:

 sonos Salon search_albums "The Wall"

  Sonos Music Library Album Search: The Wall
  ==========================================

      1: Album: The Wall CD1 | Artist: Pink Floyd
      2: Album: The Wall CD2 | Artist: Pink Floyd

# search_albums, salb

Rechercher dans la bibliothèque:

 sonos Salon search_library "The Wall"

  Sonos Music Library Album Search: The Wall
  ==========================================

      1: Album: The Wall CD1 | Artist: Pink Floyd
      2: Album: The Wall CD2 | Artist: Pink Floyd


  Sonos Music Library Track Search: The Wall
  ==========================================

      1: Artist: Music | Album: The Music | Title: The Walls Get Smaller
      2: Artist: Dave Weckl | Album: Heads Up | Title: Against the Wall
      3: Artist: Roger Waters | Album:  | Title: Another Brick In The Wall
      4: Artist: Pink Floyd | Album: Echoes - The Best Of Pink Floyd | Title: Another Brick In The Wall (Part 2)
      5: Artist: Pink Floyd | Album: The Wall CD1 | Title: Another Brick In The Wall Pt.1
      6: Artist: Pink Floyd | Album: The Best Of Pink Floyd - A Foot In The Door | Title: Another Brick In The Wall Pt.2
      7: Artist: Pink Floyd | Album: The Wall CD1 | Title: Another Brick In The Wall Pt.2
      8: Artist: Pink Floyd | Album: The Wall CD1 | Title: Another Brick In The Wall Pt.3
      9: Artist: Green Day | Album: Revolution Radio | Title: Bouncing Off The Wall
     10: Artist: Radiohead | Album: OK Computer | Title: Climbing Up the Walls
     11: Artist: Collectif | Album: Pulp Fiction | Title: Flowers On The Wall / The Statler Brothers
     12: Artist: Kaiser Chiefs | Album: The Future is Medieval | Title: Fly On The Wall
     13: Artist: Pink Floyd | Album: The Wall CD2 | Title: Outside The Wall

# search_library, sl

Recherche une piste:

 sonos Salon search_tracks "Keep the car running"

  Sonos Music Library Track Search: Keep the car running
  ======================================================

      1: Artist: Arcade Fire | Album: Neon Bible | Title: Keep the Car Running

# search_tracks, st

Afficher les pistes d'un album:

 sonos Salon tracks_in_album "Neon bible"

  Sonos Music Library Tracks in Album: Neon Bible
  ===============================================

      1: Artist: Arcade Fire | Album: Neon Bible | Title: Black Mirror
      2: Artist: Arcade Fire | Album: Neon Bible | Title: Keep the Car Running
      3: Artist: Arcade Fire | Album: Neon Bible | Title: Neon Bible
      4: Artist: Arcade Fire | Album: Neon Bible | Title: Intervention
      5: Artist: Arcade Fire | Album: Neon Bible | Title: Black Wave/Bad Vibrations
      6: Artist: Arcade Fire | Album: Neon Bible | Title: Ocean of Noise
      7: Artist: Arcade Fire | Album: Neon Bible | Title: Well and the Lighthouse
      8: Artist: Arcade Fire | Album: Neon Bible | Title: (Antichrist Television Blues)
      9: Artist: Arcade Fire | Album: Neon Bible | Title: Windowsill
     10: Artist: Arcade Fire | Album: Neon Bible | Title: No Cars Go
     11: Artist: Arcade Fire | Album: Neon Bible | Title: My Body Is a Cage

# tracks_in_album, tia, lta

Volume et EQ:

Couper / remettre le son:

 sonos Salon mute <on|off>

Retourner le niveau du volume:

 sonos Salon volume
11

# volume 11/100
# volume, vol

Régler le niveau du volume:

 sonos Salon volume 12

# volume réglé à 12/100
# volume, vol

Jouer:

Jouer une piste:

 sonos Salon clear_queue : Salon queue_track "Black Mirror" : Salon play_from_queue 1

Jouer la prochaine piste:

 sonos Salon queue_track "Intervention" next : Salon play

Aller à la piste suivante:

 sonos Salon next

# next

Aller à la piste précédente:

 sonos Salon previous

# previous, prev

Mettre en pause:

 sonos Salon pause

❯ sonos Salon pause_all
# Toutes les enceintes du groupe

Jouer:

 sonos Salon play

# play, start

Arrêter:

 sonos Salon stop

# stop

Met en veille dans :

 sonos Salon sleep_timer 1.5m
❯ sonos Salon sleep_timer 00:01:30

# sleep_timer, sleep <duration|off|cancel> (s/m/h)
# Met en veille dans 90s

Met en veille à :

 sonos Salon sleep_at 17:52

# sleep_at

Info sur la piste jouée actuellement:

 sonos Salon track
  Album: Neon Bible
  Artist: Arcade Fire
  Duration: 0:04:19
  Playlist_position: 1
  Position: 0:01:39
  Title: Intervention

# track

Queue:

Effacer la file d'attente:

 sonos Salon clear_queue

# clear_queue, cq

Afficher les pistes dans la file d'attente:

 sonos Salon list_queue

      1: Artist: Francis Cabrel | Album: In Extremis | Title: Azincourt
      2: Artist: Renaud | Album: Boucan d'enfer | Title: Baltique
      3: Artist: Arcade Fire | Album: Neon Bible | Title: Windowsill
      4: Artist: Arcade Fire | Album: Neon Bible | Title: Black Mirror
      5: Artist: Renaud | Album: Boucan d'enfer | Title: Manhattan-Kaboul

# list_queue, lq, q

Jouer la file d'attente:

 sonos Salon play_from_queue

# play_from_queue, pfq, pq
# joue la piste 1

Jouer une piste de la file:

 sonos Salon play_from_queue 21

# play_from_queue, pfq, pq
# joue la piste 21

Afficher la piste en position 2 de la file:

 sonos Salon list_queue 2

      2: Artist: Francis Cabrel | Album: In Extremis | Title: Azincourt

# list_queue, lq, 

Ajouter une piste à la file d'attente:

 sonos Salon queue_track "Black Mirror"
1 sonos Salon queue_track "Manhattan-Kaboul"
2

# queue_track, qt
# retourne la position dans la file
 sonos Salon queue_track "Azincourt" play_next
1
# la piste est mise en dernière position de la file => prochaine piste à être lue.

# play_next | next

Ajouter un album à la file d'attente:

 sonos Salon queue_album "Wake Up And Smell The Coffee" play_next
8

# queue_album, qa <play_next|next>

Sauver la file d'attente comme playlist Sonos:

 sonos Salon save_queue "Ma playlist"

# save_queue, sq, create_playlist_from_queue

Supprimer la piste courante de la file:

 sonos Salon remove_current_track_from_queue

# remove_current_track_from_queue, rltfq
# la piste est retirée  de la file, la piste suivante est jouée

Supprimer des pistes de la file:

# range sonos Salon remove_from_queue 15-17

# séquence sonos Salon remove_from_queue 3,9

#piste sonos Salon remove_from_queue 14

# remove_from_queue, rfq, rq

Divers:

Chainer 2 commandes:

 sonos Salon volume 10 : Salon play

# avec le séparateur ' : '

Insérer des délais:

 sonos Salon play : wait 3m : Salon stop

# wait <duration> (10s, 30m, 1.5h, 2:30, 0:1:25) sonos Salon play : wait_until 18:35:00 : Salon stop

# wait_until <time> (HH:MM, HH:MM:SS)

Attendre que la lecture ait démarré / stoppé:

 sonos Salon wait_stop : Salon volume 15

# attend que la lecture s'arrête puis règle le volume à 15 sonos Salon wait_start : Salon volume 13

# attend que la lecture démarre (appui sur le bouton >|| ) puis règle le volume à 13

Attendre arrêté pendant :

 sonos Salon wait_stopped_for 30m : Salon play

# wait_stopped_for, wsf <duration>

Boucles:

loop
loop <iterations>
loop_for <duration>
loop_until <time>
loop_to_start

Conditions:

 sonos Salon if_stopped volume 15

# Ajuste le volume à 15 seulement quand Salon sera arrêté. sonos Salon if_playing volume 15

# Ajuste le volume à 15 seulement si Salon joue.
sfi sonos Salon play_fav "france inter"
ss sonos Salon stop

Dernière mise à jour: February 4, 2021