Skip to content

Commit

Permalink
feat(playlist): pass through plugin info (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
ooliver1 committed May 3, 2023
1 parent 3a50946 commit 1f78c7c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
10 changes: 8 additions & 2 deletions mafic/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -1054,15 +1054,21 @@ async def fetch_tracks( # noqa: PLR0911 # V3/V4 compat.
elif data["loadType"] == "track":
return [Track.from_data_with_info(data["data"])]
elif data["loadType"] == "playlist":
return Playlist(info=data["data"]["info"], tracks=data["data"]["tracks"])
return Playlist(
info=data["data"]["info"],
tracks=data["data"]["tracks"],
plugin_info=data["data"]["pluginInfo"],
)
elif data["loadType"] == "search":
return [Track.from_data_with_info(track) for track in data["data"]]
elif data["loadType"] == "error":
raise TrackLoadException.from_data(data["data"])
elif data["loadType"] == "TRACK_LOADED":
return [Track.from_data_with_info(data["tracks"][0])]
elif data["loadType"] == "PLAYLIST_LOADED":
return Playlist(info=data["playlistInfo"], tracks=data["tracks"])
return Playlist(
info=data["playlistInfo"], tracks=data["tracks"], plugin_info={}
)
elif data["loadType"] == "SEARCH_RESULT":
return [Track.from_data_with_info(track) for track in data["tracks"]]
elif data["loadType"] == "LOAD_FAILED":
Expand Down
17 changes: 14 additions & 3 deletions mafic/playlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from __future__ import annotations

from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, Any

from .track import Track

Expand All @@ -24,13 +24,24 @@ class Playlist:
The index of the selected track, if any.
tracks: :class:`list`\[:class:`Track`]
A list of tracks in the playlist.
plugin_info: :class:`dict`\[:class:`str`, :class:`Any`]
A dictionary containing plugin-specific information.
.. versionadded:: 2.3
"""

__slots__ = ("name", "selected_track", "tracks")
__slots__ = ("name", "plugin_info", "selected_track", "tracks")

def __init__(self, *, info: PlaylistInfo, tracks: list[TrackWithInfo]) -> None:
def __init__(
self,
*,
info: PlaylistInfo,
tracks: list[TrackWithInfo],
plugin_info: dict[str, Any],
) -> None:
self.name: str = info["name"]
self.selected_track: int = info["selectedTrack"]
self.tracks: list[Track] = [
Track.from_data_with_info(track) for track in tracks
]
self.plugin_info: dict[str, Any] = plugin_info

0 comments on commit 1f78c7c

Please sign in to comment.