spotifymanager's People
spotifymanager's Issues
Rebuild application with TailwindCSS and DaisyUI to get rid of Bootstrap
Also allows for update for dependencies
Consider: Filter out unnecessary fields
e.g. available_markets can be filtered with expression fields=items(track(!available_markets,album(!available_markets)))
Only play one audio preview at a time when comparing playlists
Multiple audio previews can be played at the same time making them mix together.
Turn all audio previews off when one is started.
More in-depth comparison
Issue #2 calls for a simplification of the comparing process, which has now been implemented.
However, the more simple solution lacks some features that the old one had, but in a complicated way.
The current, simpler implementation does not let the user know that a song has been removed in the current original playlist vs the original playlist at the time of remixing.
How it will work:
- When remixing a playlist, store the current original playlist in a file / database, with a reference to the remixed playlist too.
- When syncing a remixed playlist, look up the state of the original playlist at the time of remixing, and compare it to the original playlist now.
- Then compare the original playlist now with the remixed playlist now.
Here are some example states
Original Playlist at Remix | Original Playlist Now | Remixed Playlist Now |
---|---|---|
Song A | (removed) | Song A |
Song B | Song B | Song B |
Song C | Song C | (removed) |
Song D | Song F (added) | Song D |
Song E | Song D | Song G |
Song E | Song E |
The comparison view to sync should display:
Song | Diff |
---|---|
Song A | removed-in-original |
Song B | unchanged |
Song C | removed-in-remix |
Song D | unchanged |
Song E | unchanged |
Song F | added-in-original |
Song G | added-in-remix |
Do not stop preview when an action is pressed on another song
Currently, the song preview is stopped when you click one of the actions (add song back or keep removed).
When the preview is playing for song A, and an action is done for B, the preview is stopped, but that should not happen.
Only when the user performs an action for the song he is previewing, the preview should be stopped.
Document remixing process
Stop playing preview when action is taken for that song
When the user is listening to the song preview, stop it when the user has clicked either the "move back to playlist" or "keep deleted" button
When no song preview is available, display "No song preview available"
Optimize getAllTracksInPlaylist to request all pages at the same time
In the getAllTracksPlaylist method, each page of tracks in a playlist is requested one by one. We can optimize this method by using Promise.All() to fire all requests at the same time and awaiting all of them. This will be faster than requesting a page, awaiting the result, requesting the next and so on.
Overview of playlists showing duplicate playlists
When you are about to remix a playlist, and you scroll down to automatically load the next page of songs, it will add playlists that are already on the list.
'Padding' of tracks in playlist compare page
Add "padding" to the list of songs in the compare page, to make sure unchanged songs are at the same level.
As an example, let's take the following scenario:
Current Remixed Playlist | Synced Result | Current Original Playlist |
---|---|---|
Track A | Track A | Track A |
Track B | Track B | Track B |
Track C | Track D | Track F |
Track D | Track E | Track D |
Track E | Track E |
The desired layout of the page in this scenario is:
Current Remixed Playlist | Synced Result | Current Original Playlist |
---|---|---|
Track A | Track A | Track A |
Track B | Track B | Track B |
Track C | (placeholder) | Track F |
Track D | Track D | Track D |
Track E | Track E | Track E |
Because track C and track F are changed (they are not in both playlists), the user can decide what will happen to these songs.
If the user decides to add track C back, the desired layout of the page in that scenario is:
Current Remixed Playlist | Synced Result | Current Original Playlist |
---|---|---|
Track A | Track A | Track A |
Track B | Track B | Track B |
Track C | Track C | (placeholder) |
(placeholder) | (placeholder) | Track F |
Track D | Track D | Track D |
Track E | Track E | Track E |
The placeholder should be a component similar to the spotify-track component but with different styling to make it clear it's a placeholder (e.g. maybe make it greyed out, dotted borders or something else)
Syncing playlists is unnecessarily complicated
To sync a playlist, currently you need to compare the Current original playlist vs the Playlist at the time of Remixing.
This can be simplified since the current remixed playlists already has the songs from the playlist at the time of remixing (minus the ones the user did not like, and added with custom songs)
So only current original playlist needs to be compared with current remixed playlist
Send digest email when an original playlist has updated of one of the remixed playlists for a user
Depending on the email preference set for a user:
- Check if any of the original playlist has any changes. If so this playlist will be included in the email for that user
Send weekly digest mail of recently listened tracks
Reference old playlist not updated after syncing (also displays a JSON parse error on the screen)
Show loading icons when syncing a playlist
Show a spinning loading icon on initial page load when syncing playlist.
Also show a loading icon inside the Sync! button when clicked and the sync is running.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.