diff --git a/backend/main.py b/backend/main.py index bc9d1ca..21a380b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -251,7 +251,7 @@ async def make_playlist_widget(playlist_widget: schemas.PlaylistWidget): """Make a new Spotify playlist widget. Args: - playlist_widget (schemas.PlaylistWidget): List of track IDs. + playlist_widget (schemas.PlaylistWidget): List of track IDs and waypoints. Returns: str: Base 64 encoded HTML which can be embedded in an iframe. @@ -288,15 +288,21 @@ async def make_playlist_widget(playlist_widget: schemas.PlaylistWidget): for track_id in playlist_widget.track_ids: title = deejai.tracks[track_id] track = { - 'is_local': True, - 'is_playable': True, - 'name': title[title.find(' - ') + 3:], - 'preview_url': deejai.urls.get(track_id, ''), + 'is_local': + True, + 'is_playable': + True, + 'name': ('* ' if track_id in playlist_widget.waypoints else '') + + title[title.find(' - ') + 3:], + 'preview_url': + deejai.urls.get(track_id, ''), 'artists': [{ 'name': title[:title.find(' - ')] }], - 'duration_ms': '30000', - 'uri': f'spotify:track{track_id}' + 'duration_ms': + '30000', + 'uri': + f'spotify:track{track_id}' } playlist['tracks']['items'].append({'track': track}) playlist['name'] = playlist['tracks']['items'][0]['track']['name'] diff --git a/backend/schemas.py b/backend/schemas.py index 4c4529e..d05c0ef 100644 --- a/backend/schemas.py +++ b/backend/schemas.py @@ -64,3 +64,4 @@ class PlaylistWidget(BaseModel): # pylint: disable=too-few-public-methods """Schema for generating a new playlist widget. """ track_ids: list + waypoints: list diff --git a/src/components/Playlist.js b/src/components/Playlist.js index 4c2cd3c..0e747fb 100644 --- a/src/components/Playlist.js +++ b/src/components/Playlist.js @@ -40,7 +40,8 @@ export default function Playlist({ track_ids = [], waypoints = [] }) { 'Content-Type': 'application/json' }, body: JSON.stringify({ - 'track_ids': track_ids + 'track_ids': track_ids, + 'waypoints': waypoints }) }) .then(response => (response.status === 200) ? response.text() : '')