LMSPlayer

class LMSTools.player.LMSPlayer(ref, server)

The LMSPlayer class represents an individual squeeze player connected to your Logitech Media Server.

Instances of this class are generated from the LMSServer object and it is not expected that you would create an instance directly. However, it is posible to create instances directly:

server = LMSServer("192.168.0.1")

# Get player instance with MAC address of player
player = LMSPlayer("12:34:56:78:90:AB", server)

# Get player based on index of player on server
player = LMSPlayer.from_index(0, server)

Upon intialisation, basic information about the player is retrieved from the server:

>>>player = LMSPlayer("12:34:56:78:90:AB", server)
>>>player.name
u'Living Room'
>>>player.model
u'squeezelite'
forward(seconds=10)
Parameters:seconds (int, float) – number of seconds to jump forwards in current track.

Jump forward in current track. Number of seconds will be converted to integer.

classmethod from_index(index, server)

Create an instance of LMSPlayer when the MAC address of the player is unknown.

This class method uses the index of the player (as registered on the server) to identify the player.

Return type:LMSPlayer
Returns:Instance of squeezeplayer
get_synced_players(refs_only=False)

Retrieve list of players synced to current player.

Parameters:refs_only (bool) – whether the method should return list of MAC references or list of LMSPlayer instances.
Return type:list
mode
Return type:str, unicode
Returns:curent mode (e.g. “play”, “pause”)
model
Return type:str, unicode
Returns:model name of the current player.
mute()

Mute player

muted

Muting

Getter:retrieve current muting status
Return type:bool
Returns:True if muted, False if not.
Setter:set muting status (True = muted)
name

Player name.

Getter:retrieve name of player
Return type:unicode, str
Returns:name of player
Setter:update name of player on server
>>>p.name
u"elParaguayo's Laptop"
>>>p.name = "New name"
>>>p.name
'New name'
next()

Play next item in playlist

parse_request(command, key)
Parameters:
  • command (str, list) – command to be sent to server
  • key (str) – key to retrieve desired info from JSON response
Returns:

value from JSON response

Send the request and extract the info from the JSON response.

This is the same as player.request(command).get(key)

pause()

Pause the player. This does not unpause the player if already paused.

percentage_elapsed(upper=100)
Parameters:upper (float, int) – (optional) scale - returned value is between 0 and upper (default 100)
Return type:float
Returns:current percentage elapsed
>>>player.percentage_elapsed()
29.784033576552005
>>>p.percentage_elapsed(upper=1)
0.31738374576051237
play()

Start playing the current item

playlist_add(item)

Add item to playlist

Parameters:item (str) – link to playable item
playlist_clear()

Clear the entire playlist. Will also stop the player.

playlist_delete(item)

Delete item

Parameters:item (str) – link to playable item
playlist_erase(index)

Remove item from playlist by index

Parameters:index – index of item to delete
playlist_get_current_detail(amount=None, taglist=None)
Parameters:
  • amount (int) – number of tracks to query
  • taglist (list) – list of tags (NEED LINK)
Return type:

list

Returns:

server result

If amount is None, all remaining tracks will be displayed.

If not taglist is provided, the default list is: [tags.ARTIST, tags.COVERID, tags.DURATION, tags.COVERART, tags.ARTWORK_URL, tags.ALBUM, tags.REMOTE, tags.ARTWORK_TRACK_ID]

>>>player.playlist_get_current_detail(amount=1)
[{u'album': u'Jake Bugg',
  u'artist': u'Jake Bugg',
  u'artwork_url': u'https://i.scdn.co/image/6ba50b26867613b100281669ff1a917c5a020534',
  u'coverart': u'0',
  u'coverid': u'-161090728',
  u'duration': u'144',
  u'id': u'-161090728',
  u'playlist index': 7,
  u'remote': 1,
  u'title': u'Lightning Bolt'}]
>>>player.playlist_get_current_detail(amount=1, taglist=[tags.DURATION])
[{u'duration': u'144',
  u'id': u'-161090728',
  u'playlist index': 7,
  u'title': u'Lightning Bolt'}]
playlist_get_detail(start=None, amount=None, taglist=None)
Parameters:
  • start (int) – playlist index of first track to query
  • amount (int) – number of tracks to query
  • taglist (list) – list of tags (NEED LINK)
Return type:

list

Returns:

server result

If start is None, results will start with the first track in the playlist.

If amount is None, all playlist tracks will be returned.

If not taglist is provided, the default list is: [tags.ARTIST, tags.COVERID, tags.DURATION, tags.COVERART, tags.ARTWORK_URL, tags.ALBUM, tags.REMOTE, tags.ARTWORK_TRACK_ID]

>>>player.playlist_get_detail(start=1, amount=1, taglist=[tags.URL])
[{u'id': u'-137990288',
 u'playlist index': 1,
 u'title': u"Mardy Bum by Arctic Monkeys from Whatever People Say I Am, That's What I'm Not",
 u'url': u'spotify://track:2fyIS6GXMgUcSv4oejx63f'}]
playlist_get_info(taglist=None, start=None, amount=None)
Parameters:
  • start (int) – playlist index of first track to query
  • amount (int) – number of tracks to query
  • taglist (list) – list of tags (NEED LINK)
Return type:

list

Returns:

server result

If start is None, results will start with the first track in the playlist.

If amount is None, all playlist tracks will be returned.

Unlike playlist_get_detail, no default taglist is provided.

>>>player.playlist_get_info(start=1, amount=1)
[{u'id': u'-137990288',
  u'playlist index': 1,
  u'title': u'Mardy Bum'}]
playlist_insert(item)

Insert item into playlist (after current track)

Parameters:item (str) – link to playable item
playlist_move(from_index, to_index)

Move items in playlist

Parameters:
  • from_index (int) – index of item to move
  • to_index (int) – new playlist position
playlist_play(item)

Play item

Parameters:item (str) – link to playable item
playlist_play_index(index)
Parameters:index (int) – index of playlist track to play (zero-based index)
playlist_position
Return type:int
Returns:position of current track in playlist
prev()

Play previous item in playlist

request(command)
Parameters:command (str, list) – command to be sent to server
Return type:dict
Returns:JSON response received from server

Send the request to the server.

rewind(seconds=10)
Parameters:seconds (int, float) – number of seconds to jump backwards in current track.

Jump backwards in current track. Number of seconds will be converted to integer.

seek_to(seconds)
Parameters:seconds (int, float) – position (in seconds) that player should seek to

Move player to specified position in current playlist item

stop()

Stop the player

sync(player=None, ref=None, index=None, master=True)

Synchronise squeezeplayers

Parameters:
  • player (LMSPlayer) – Instance of player
  • ref (str) – MAC address of player
  • index (int) – server index of squeezeplayer
  • master (bool) – whether current player should be the master player in sync group
Raises:

LMSPlayerError

You must provide one of player, ref or index otherwise an exception will be raised. If master is set to True then you must provide either player or ref.

time_elapsed
Return type:float
Returns:elapsed time in seconds. Returns 0.0 if an exception is encountered.
time_remaining
Return type:float
Returns:remaining time in seconds. Returns 0.0 if an exception is encountered.
toggle()

Play/Pause Toggle

track_album
Return type:unicode, str
Returns:name of album for current playlist item
>>>player.track_album
u'Kiasmos'
track_artist
Return type:unicode, str
Returns:name of artist for current playlist item
>>>player.track_artist
u'Kiasmos'
track_count
Return type:int
Returns:number of tracks in playlist
track_duration
Return type:float
Returns:duration of track in seconds
>>>player.track_duration
384.809
track_elapsed_and_duration
Return type:tuple (float, float)
Returns:tuple of elapsed time and track duration
>>>player.track_elapsed_and_duration
(4.86446976280212, 384.809)
track_title
Return type:unicode, str
Returns:name of track for current playlist item
>>>player.track_artist
u'Lit'
unmute()

Unmute player

unpause()

Unpause the player.

unsync()

Remove player from syncgroup.

update()

Retrieve some basic info about the player.

Retrieves the name, model and ip attributes. This method is called on initialisation.

volume

Volume information

Getter:Get current volume
Return type:int
Returns:current volume
Setter:change volume
>>>player.volume
95
>>>player.volume = 50

Min: 0, Max: 100

volume_down(interval=5)

Decrease volume

Parameters:interval (int) – amount to decrease volume (default 5)
volume_up(interval=5)

Increase volume

Parameters:interval (int) – amount to increase volume (default 5)
wifi_signal_strength
Return type:int
Returns:Wifi signal strength