Skip to content

Commit b6a2364

Browse files
authored
Merge pull request #56 from bushvin/fix/playlists
Fix/playlists
2 parents a20e35e + 4edec0d commit b6a2364

File tree

4 files changed

+399
-415
lines changed

4 files changed

+399
-415
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.1.3",
13+
"version": "2.2.0",
1414
"zeroconf": [
1515
{
1616
"type": "_mopidy-http._tcp.local."

custom_components/mopidy/media_player.py

Lines changed: 25 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
)
6060

6161
from .speaker import (
62-
MopidyMedia,
6362
MopidyLibrary,
6463
MopidySpeaker,
6564
)
@@ -197,12 +196,12 @@ def youtube_uri_from_media_id(self, media_id):
197196
"""Parse the youtube media_id and return a usable resource"""
198197
url = urlparse.urlparse(media_id)
199198
if "youtube" in self.speaker.supported_uri_schemes:
200-
_LOGGER.debug("youtube detected")
201199
query_parsed = parse_qs(url.query)
202200
media_id = f"youtube:video:{query_parsed['v'][0]}"
201+
203202
elif "yt" in self.speaker.supported_uri_schemes:
204-
_LOGGER.debug("yt detected")
205203
media_id = f"yt:{media_id}"
204+
206205
else:
207206
raise MissingMopidyExtension("No Mopidy Extensions found for Youtube. If this incorrect, please open an issue.")
208207

@@ -340,87 +339,51 @@ def _attr_is_volume_muted(self):
340339

341340
@property
342341
def _attr_media_album_artist(self):
343-
if self.media is None:
344-
return None
345-
else:
346-
return self.media.album_artist
342+
return self.speaker.queue.current_track_album_artist
347343

348344
@property
349345
def _attr_media_album_name(self):
350-
if self.media is None:
351-
return None
352-
else:
353-
return self.media.album_name
346+
return self.speaker.queue.current_track_album_name
354347

355348
@property
356349
def _attr_media_artist(self):
357-
if self.media is None:
358-
return None
359-
else:
360-
return self.media.artist
350+
return self.speaker.queue.current_track_artist
361351

362352
@property
363353
def _attr_media_content_id(self):
364-
if self.media is None:
365-
return None
366-
else:
367-
return self.media.uri
354+
return self.speaker.queue.current_track_uri
368355

369356
@property
370357
def _attr_media_duration(self):
371-
if self.media is None:
372-
return None
373-
else:
374-
return self.media.duration
358+
return self.speaker.queue.current_track_duration
375359

376360
@property
377361
def _attr_media_image_url(self):
378-
if self.media is None:
379-
return None
380-
else:
381-
return self.media.image_url
362+
return self.speaker.queue.current_track_image_url
382363

383364
@property
384365
def _attr_media_image_remotely_accessible(self):
385-
if self.media is None:
386-
return None
387-
else:
388-
return self.media.image_remotely_accessible
366+
return self.speaker.queue.current_track_image_remotely_accessible
389367

390368
@property
391369
def _attr_media_playlist(self):
392-
if self.media is None:
393-
return None
394-
else:
395-
return self.media.playlist_name
370+
return self.speaker.queue.current_track_playlist_name
396371

397372
@property
398373
def _attr_media_position(self):
399-
if self.media is None:
400-
return None
401-
else:
402-
return self.media.position
374+
return self.speaker.queue.current_track_position
403375

404376
@property
405377
def _attr_media_position_updated_at(self):
406-
if self.media is None:
407-
return None
408-
else:
409-
return self.media.position_updated_at
378+
return self.speaker.queue.current_track_position_updated_at
410379

411380
@property
412381
def _attr_media_title(self):
413-
if self.media is None:
414-
return None
415-
else:
416-
return self.media.title
382+
return self.speaker.queue.current_track_title
417383

418384
@property
419385
def _attr_media_track(self):
420-
if self.media is None:
421-
return None
422-
else:
423-
return self.media.track_number
386+
return self.speaker.queue.current_track_number
424387

425388
@property
426389
def _attr_repeat(self):
@@ -487,17 +450,17 @@ def extra_state_attributes(self) -> dict[str, Any]:
487450
"""Return entity specific state attributes"""
488451
attributes: dict[str, Any] = {}
489452

490-
if self.speaker.queue_position is not None:
491-
attributes["queue_position"] = self.speaker.queue_position
453+
if self.speaker.queue.position is not None:
454+
attributes["queue_position"] = self.speaker.queue.position
492455

493-
if self.speaker.queue_size is not None:
494-
attributes["queue_size"] = self.speaker.queue_size
456+
if self.speaker.queue.size is not None:
457+
attributes["queue_size"] = self.speaker.queue.size
495458

496459
if self.speaker.consume_mode is not None:
497460
attributes["consume_mode"] = self.speaker.consume_mode
498461

499-
if self.media.extension is not None:
500-
attributes["mopidy_extension"] = self.media.extension
462+
if self.speaker.queue.current_track_extension is not None:
463+
attributes["mopidy_extension"] = self.speaker.queue.current_track_extension
501464

502465
if self.speaker.snapshot_taken_at is not None:
503466
attributes["snapshot_taken_at"] = self.speaker.snapshot_taken_at
@@ -514,10 +477,10 @@ def library(self) -> MopidyLibrary:
514477
"""Return the library object from the speaker"""
515478
return self.speaker.library
516479

517-
@property
518-
def media(self) -> MopidyMedia:
519-
"""Return the media object from the speaker"""
520-
return self.speaker.media
480+
# @property
481+
# def media(self) -> MopidyMedia:
482+
# """Return the media object from the speaker"""
483+
# return self.speaker.media
521484

522485
@property
523486
def name(self) -> str:
@@ -538,37 +501,6 @@ def update(self) -> None:
538501
_LOGGER.error(f"{self.entity_id} is unavailable")
539502
return
540503

541-
if False:
542-
_LOGGER.debug("is_volume_muted: %s", self._attr_is_volume_muted)
543-
_LOGGER.debug("repeat: %s", self._attr_repeat)
544-
_LOGGER.debug("shuffle: %s", self._attr_shuffle)
545-
_LOGGER.debug("source_list: %s", self._attr_source_list)
546-
_LOGGER.debug("supported_features: %s", self._attr_supported_features)
547-
_LOGGER.debug("volume_level: %s", self._attr_volume_level)
548-
_LOGGER.debug("media_artist: %s", self._attr_media_artist)
549-
_LOGGER.debug("media_album_artist: %s", self._attr_media_album_artist)
550-
_LOGGER.debug("media_album_name: %s", self._attr_media_album_name)
551-
_LOGGER.debug("media_content_id: %s", self._attr_media_content_id)
552-
_LOGGER.debug("media_duration: %s", self._attr_media_duration)
553-
_LOGGER.debug("media_image_url: %s", self._attr_media_image_url)
554-
_LOGGER.debug("media_playlist: %s", self._attr_media_playlist)
555-
_LOGGER.debug("media_position: %s", self._attr_media_position)
556-
_LOGGER.debug(
557-
"media_position_updated_at: %s",
558-
self._attr_media_position_updated_at
559-
)
560-
_LOGGER.debug("media_title: %s", self._attr_media_title)
561-
_LOGGER.debug("media_track: %s", self._attr_media_track)
562-
563-
_LOGGER.debug("state: %s", self._attr_state)
564-
_LOGGER.debug(
565-
"image_remotely_accessible: %s",
566-
self._attr_media_image_remotely_accessible
567-
)
568-
_LOGGER.debug("track_list: %s", self.speaker.tracklist_uris)
569-
_LOGGER.debug("track_list_index: %s", self.speaker.queue_position)
570-
_LOGGER.debug("self.speaker.api.wsclient.wsthread.is_alive(): %s", self.speaker.api.wsclient.wsthread.is_alive())
571-
572504
async def async_browse_media(
573505
self,
574506
media_content_type=None,
@@ -701,7 +633,7 @@ def _media_library_payload(self, payload):
701633
i = self.library.get_images(uri_set)
702634
for img_uri in i:
703635
if len(i[img_uri]) > 0:
704-
CACHE_ART[img_uri] = self.media.expand_url(mopidy_info["source"], i[img_uri][0].uri)
636+
CACHE_ART[img_uri] = self.speaker.queue.expand_url(mopidy_info["source"], i[img_uri][0].uri)
705637
else:
706638
CACHE_ART[img_uri] = None
707639

0 commit comments

Comments
 (0)