Skip to content

Commit 843d7e3

Browse files
authored
Merge pull request #58 from bushvin/fix/expand_url
Multiple fixes
2 parents b6a2364 + c354d24 commit 843d7e3

File tree

4 files changed

+45
-28
lines changed

4 files changed

+45
-28
lines changed

custom_components/mopidy/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"requirements": [
1111
"mopidyapi>=1.0.0"
1212
],
13-
"version": "2.2.0",
13+
"version": "2.2.1",
1414
"zeroconf": [
1515
{
1616
"type": "_mopidy-http._tcp.local."

custom_components/mopidy/media_player.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -450,18 +450,18 @@ def extra_state_attributes(self) -> dict[str, Any]:
450450
"""Return entity specific state attributes"""
451451
attributes: dict[str, Any] = {}
452452

453-
if self.speaker.queue.position is not None:
454-
attributes["queue_position"] = self.speaker.queue.position
455-
456-
if self.speaker.queue.size is not None:
457-
attributes["queue_size"] = self.speaker.queue.size
458-
459453
if self.speaker.consume_mode is not None:
460454
attributes["consume_mode"] = self.speaker.consume_mode
461455

462456
if self.speaker.queue.current_track_extension is not None:
463457
attributes["mopidy_extension"] = self.speaker.queue.current_track_extension
464458

459+
if self.speaker.queue.position is not None:
460+
attributes["queue_position"] = self.speaker.queue.position
461+
462+
if self.speaker.queue.size is not None:
463+
attributes["queue_size"] = self.speaker.queue.size
464+
465465
if self.speaker.snapshot_taken_at is not None:
466466
attributes["snapshot_taken_at"] = self.speaker.snapshot_taken_at
467467

custom_components/mopidy/speaker.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,12 @@ def expand_url(self, extension, url):
230230
parsed_url = urlparse.urlparse(url)
231231
if parsed_url.netloc == "":
232232
url = f"{self.local_url_base}{url}"
233+
234+
# Force the browser to reload the image once per day
233235
query = dict(urlparse.parse_qsl(parsed_url.query))
234-
if query.get("t") is None:
236+
if query.get("mopt") is None:
235237
url_parts = list(urlparse.urlparse(url))
236-
query["t"] = int(time.time() * 1000)
238+
query["mopt"] = datetime.datetime.now().strftime("%Y%m%d")
237239
url_parts[4] = urlencode(query)
238240
url = urlparse.urlunparse(url_parts)
239241

@@ -267,16 +269,16 @@ def parse_track_info(self, track, tlid=None, current=False):
267269
self.__set_track_info(tlid, track_info)
268270
if current:
269271
self._current_track_tlid = tlid
270-
self._current_track_uri = track_info.get("uri")
271-
self._current_track_album_artist = track_info.get("album_artist")
272-
self._current_track_album_name = track_info.get("album_name")
273-
self._current_track_artist = track_info.get("artist")
274-
self._current_track_duration = track_info.get("duration")
275-
self._current_track_extension = track_info.get("source")
276-
self._current_track_playlist_name = track_info.get("playlist_name")
277-
self._current_track_title = track_info.get("title")
278-
self._current_track_is_stream = track_info.get("is_stream")
279-
self._current_track_number = track_info.get("number")
272+
self._current_track_uri = self.queue[tlid].get("uri")
273+
self._current_track_album_artist = self.queue[tlid].get("album_artist")
274+
self._current_track_album_name = self.queue[tlid].get("album_name")
275+
self._current_track_artist = self.queue[tlid].get("artist")
276+
self._current_track_duration = self.queue[tlid].get("duration")
277+
self._current_track_extension = self.queue[tlid].get("source")
278+
self._current_track_playlist_name = self.queue[tlid].get("playlist_name")
279+
self._current_track_title = self.queue[tlid].get("title")
280+
self._current_track_is_stream = self.queue[tlid].get("is_stream")
281+
self._current_track_number = self.queue[tlid].get("number")
280282

281283
return track_info
282284

@@ -385,7 +387,7 @@ def update_queued_tracks(self, media_id, media_type, **kwargs):
385387
"playlist_name": res.name,
386388
"playlist_uri": res.uri,
387389
}
388-
self.__set_track_info(tl_track.tlid, **track_info)
390+
self.__set_track_info(tl_track.tlid, track_info)
389391

390392
def update_queue_information(self, updater=None):
391393
"""Get the Mopidy Instance queue information"""
@@ -478,6 +480,11 @@ def current_track_uri(self):
478480
"""Return the mopidy uri of the current track"""
479481
return self._current_track_uri
480482

483+
@property
484+
def uri_list(self):
485+
"""Return a list of uris of the current queue"""
486+
return [ self.queue[x]["uri"] for x in self.queue ]
487+
481488
@property
482489
def size(self):
483490
"""Return the size of the current queue"""
@@ -549,6 +556,7 @@ def __init__(self,
549556
self.entity = None
550557
self.queue.api = self.api
551558
self.library.api = self.api
559+
self._attr_snapshot_at = None
552560

553561
def __clear(self):
554562
"""Reset all Values"""
@@ -561,7 +569,6 @@ def __clear(self):
561569
self._attr_state = None
562570
self._attr_repeat = None
563571
self._attr_shuffle = None
564-
self._attr_snapshot_at = None
565572
self._attr_is_available = False
566573

567574
def __connect(self):
@@ -802,14 +809,14 @@ def play_media(self, media_type, media_id, **kwargs):
802809

803810
elif enqueue == MediaPlayerEnqueue.NEXT:
804811
# Add media uris to queue after current playing track
805-
index = self.queue_position
812+
index = self.queue.position
806813
queued = self.queue_tracks(media_uris, at_position=index+1)
807814
if self.state != MediaPlayerState.PLAYING:
808815
self.media_play()
809816

810817
elif enqueue == MediaPlayerEnqueue.PLAY:
811818
# Insert media uris before current playing track into queue and play first of new uris
812-
index = self.queue_position
819+
index = self.queue.position
813820
queued = self.queue_tracks(media_uris, at_position=index)
814821
self.media_play(index)
815822

@@ -841,13 +848,13 @@ def restore_snapshot(self):
841848
return
842849
self.media_stop()
843850
self.clear_queue()
844-
self.queue_tracks(self.snapshot.get("tracklist",[]))
851+
self.queue_tracks(self.snapshot.get("queue_list",[]))
845852
self.set_volume(self.snapshot.get("volume"))
846853
self.set_mute(self.snapshot.get("muted"))
847854
if self.snapshot.get("state", MediaPlayerState.IDLE) in [MediaPlayerState.PLAYING, MediaPlayerState.PAUSED]:
848855
current_tracks = self.api.tracklist.get_tl_tracks()
849856
self.api.playback.play(
850-
tlid=current_tracks[self.snapshot.get("tracklist_index")].tlid
857+
tlid=current_tracks[self.snapshot.get("queue_index")].tlid
851858
)
852859

853860
count = 0
@@ -930,13 +937,13 @@ def take_snapshot(self):
930937
self.update()
931938
self._attr_snapshot_at = dt_util.utcnow()
932939
self.snapshot = {
933-
"mediaposition": self.media.position,
940+
"mediaposition": self.queue.current_track_position,
934941
"muted": self.is_muted,
935942
"repeat_mode": self.repeat,
936943
"shuffled": self.is_shuffled,
937944
"state": self.state,
938-
"tracklist": self.tracklist_uris,
939-
"tracklist_index": self.queue_position,
945+
"queue_list": self.queue.uri_list,
946+
"queue_index": self.queue.position,
940947
"volume": self.volume_level,
941948
}
942949

mopidy-CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [2.2.1] - 2023-11-13
8+
9+
### Fixed
10+
11+
- expanding the url will add a timestamp based on the day instead of epoch, causing it to reload daily instead of every time the image is refreshed (which is every 10 seconds)
12+
- correct snapshotting variables/methods
13+
- alphabetize `extra_state_attributes` variables
14+
- retrieve the correct current track information
15+
- fix queue variables for `media_play`
16+
717
## [2.2.0] - 2023-11-11
818

919
### Changed

0 commit comments

Comments
 (0)