Skip to content

Commit

Permalink
fix/ocp_playlist (#256)
Browse files Browse the repository at this point in the history
* fix/ocp_playlist

fix Playlist objects

* fix
  • Loading branch information
JarbasAl authored Jun 21, 2024
1 parent 9b56eac commit e6b416e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 9 deletions.
27 changes: 20 additions & 7 deletions ovos_utils/ocp.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from typing import Optional, Tuple, List, Union

import orjson

from ovos_utils.log import LOG, deprecated

OCP_ID = "ovos.common_play"
Expand Down Expand Up @@ -312,16 +313,29 @@ def from_dict(track: dict) -> 'PluginStream':
@dataclass
class Playlist(list):
title: str = ""
artist: str = ""
position: int = 0
length: int = 0 # in seconds
image: str = ""
match_confidence: int = 0 # 0 - 100
skill_id: str = OCP_ID
skill_icon: str = ""
playback: PlaybackType = PlaybackType.UNDEFINED
media_type: MediaType = MediaType.GENERIC

def __init__(self, *args, **kwargs):
super().__init__(**kwargs)
list.__init__(self, *args)
super().__init__()
for k, v in kwargs.items():
if hasattr(self, k):
self.__setattr__(k, v)
if len(args) == 1 and isinstance(args[0], list):
args = args[0]
for e in args:
self.add_entry(e)

@property
def length(self):
"""calc the length value based on all entries"""
return sum([e.length for e in self.entries])

@property
def infocard(self) -> dict:
Expand All @@ -343,7 +357,7 @@ def from_dict(track: dict) -> 'Playlist':
if "playlist" not in track:
raise ValueError("track dictionary does not contain 'playlist' entries, it is not a valid Playlist")
kwargs = {k: v for k, v in track.items()
if k in inspect.signature(Playlist).parameters}
if k in inspect.signature(Playlist).parameters}
playlist = Playlist(**kwargs)
for e in track.get("playlist", []):
playlist.add_entry(e)
Expand Down Expand Up @@ -592,6 +606,5 @@ def dict2entry(track: dict) -> Union[PluginStream, MediaEntry, Playlist]:
p.goto_start()
print(p.position)
p.set_position(1)
print(p) # Playlist(title='My Jams', position=1, length=0, image='', match_confidence=0, skill_id='ovos.common_play', skill_icon='')


print(
p) # Playlist(title='My Jams', position=1, length=0, image='', match_confidence=0, skill_id='ovos.common_play', skill_icon='')
6 changes: 4 additions & 2 deletions test/unittests/test_ocp_media.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,17 @@ def test_from_dict(self):
class TestPlaylist(unittest.TestCase):
def test_properties(self):
# Empty Playlist
pl = Playlist()
pl = Playlist(title="empty playlist")
self.assertEqual(pl.title, "empty playlist")
self.assertEqual(pl.position, 0)
self.assertEqual(pl.entries, [])
self.assertIsNone(pl.current_track)
self.assertTrue(pl.is_first_track)
self.assertTrue(pl.is_last_track)

# Playlist of dicts
pl = Playlist(valid_search_results)
pl = Playlist(valid_search_results, title="my playlist")
self.assertEqual(pl.title, "my playlist")
self.assertEqual(pl.position, 0)
self.assertEqual(len(pl), len(valid_search_results))
self.assertEqual(len(pl.entries), len(valid_search_results))
Expand Down

0 comments on commit e6b416e

Please sign in to comment.