mirror of
https://github.com/badaix/snapcast.git
synced 2025-08-06 10:09:33 +02:00
Position uses length from metadata
This commit is contained in:
parent
53e27e0d8b
commit
d90c3fc29c
1 changed files with 18 additions and 16 deletions
|
@ -335,9 +335,23 @@ class SnapcastWrapper(object):
|
||||||
logger.info(f'new meta {new_meta}')
|
logger.info(f'new meta {new_meta}')
|
||||||
|
|
||||||
def __update_properties(self, props):
|
def __update_properties(self, props):
|
||||||
|
if props is None:
|
||||||
|
props = {}
|
||||||
logger.info(f'Properties: "{props}"')
|
logger.info(f'Properties: "{props}"')
|
||||||
|
# store the last receive time stamp for better position estimation
|
||||||
|
if 'position' in props:
|
||||||
props['received'] = time.time()
|
props['received'] = time.time()
|
||||||
changed_properties = self.update_properties(props)
|
|
||||||
|
changed_properties = {}
|
||||||
|
for key, value in props.items():
|
||||||
|
if not key in self._properties:
|
||||||
|
changed_properties[key] = [None, value]
|
||||||
|
elif value != self._properties[key]:
|
||||||
|
changed_properties[key] = [self._properties[key], value]
|
||||||
|
for key, value in self._properties.items():
|
||||||
|
if not key in props:
|
||||||
|
changed_properties[key] = [value, None]
|
||||||
|
self._properties = props
|
||||||
logger.info(f'Changed properties: "{changed_properties}"')
|
logger.info(f'Changed properties: "{changed_properties}"')
|
||||||
for key, value in changed_properties.items():
|
for key, value in changed_properties.items():
|
||||||
if key in property_mapping:
|
if key in property_mapping:
|
||||||
|
@ -467,23 +481,11 @@ class SnapcastWrapper(object):
|
||||||
def properties(self):
|
def properties(self):
|
||||||
return self._properties
|
return self._properties
|
||||||
|
|
||||||
def update_properties(self, new_properties):
|
|
||||||
changed_properties = {}
|
|
||||||
for key, value in new_properties.items():
|
|
||||||
if not key in self._properties:
|
|
||||||
changed_properties[key] = [None, value]
|
|
||||||
elif value != self._properties[key]:
|
|
||||||
changed_properties[key] = [self._properties[key], value]
|
|
||||||
for key, value in self._properties.items():
|
|
||||||
if not key in new_properties:
|
|
||||||
changed_properties[key] = [value, None]
|
|
||||||
self._properties = new_properties
|
|
||||||
return changed_properties
|
|
||||||
|
|
||||||
def position(self):
|
def position(self):
|
||||||
|
logger.info(f'Position props: {self._properties}, meta: {self._metadata}')
|
||||||
if not 'position' in self._properties:
|
if not 'position' in self._properties:
|
||||||
return 0
|
return 0
|
||||||
if not 'duration' in self._properties:
|
if not 'mpris:length' in self._metadata:
|
||||||
return 0
|
return 0
|
||||||
position = self._properties['position']
|
position = self._properties['position']
|
||||||
if 'received' in self._properties:
|
if 'received' in self._properties:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue