Take your daily mixes (or other playlists), put them into a single playlist, and shuffle them. That's it.
-
Save/like/follow all your Daily Mixes in Spotify so they become visible in the API: https://community.spotify.com/t5/Spotify-for-Developers/How-can-I-get-access-to-Made-for-You-playlist-by-Web-API/td-p/5186504
-
Create a Spotify developer app with
http://localhost:8080/callback
as a redirect URI: https://developer.spotify.com/dashboard/applications -
npm install
-
Run a local server to grab a refresh token:
DS_CLIENT_ID=your-client-id DS_CLIENT_SECRET=your-client-secret DS_REDIRECT_URI=http://localhost:8080/callback npm run serve
-
Visit http://localhost:8080 , follow prompts, copy displayed refresh token, close server
-
Run
DS_CLIENT_ID=your-client-id DS_CLIENT_SECRET=your-client-secret DS_REDIRECT_URI=http://localhost:8080/callback DS_REFRESH_TOKEN=your-refresh-token npm run shuffle
to create or update a playlist named "Shuffled Daily Mix" -
Set up that above command to run on some kind of schedule
Enjoy
-
Create a Spotify developer app with
http://localhost:8080/callback
as a redirect URI: https://developer.spotify.com/dashboard/applications -
npm install
-
Run a local server to grab a refresh token:
DS_CLIENT_ID=your-client-id DS_CLIENT_SECRET=your-client-secret DS_REDIRECT_URI=http://localhost:8080/callback npm run serve
-
Visit http://localhost:8080 , follow prompts, copy displayed refresh token, close server
-
Run
DS_CLIENT_ID=your-client-id DS_CLIENT_SECRET=your-client-secret DS_REDIRECT_URI=http://localhost:8080/callback DS_REFRESH_TOKEN=your-refresh-token DS_MODE=specified DS_PLAYLIST_IDS=4DuqOBYEPT68kcmjJLNQXH,5OZmj122jnzf3Z4kQb60En DS_PLAYLIST_NAME="My CD 123" DS_PLAYLIST_DESCRIPTION="Sample Text" npm run shuffle
to create or update a playlist named "My CD 123" containing a shuffled version of songs in your specified playlists -
Set up that above command to run on some kind of schedule
Enjoy
You might get a 404 error when attempting to access your Daily Mix playlists over the Spotify Web API.
Create an external command to retrieve them anyways. This is an exercise for the reader. Here's an example:
package main
func main() {
playlistIDs := strings.Split(",", os.Getenv("PLAYLIST_ID")) // base62 IDs separated by comma
for _, playlistID := range playlistIDs {
for _, trackInPlaylist := range getTracksInPlaylist(playlistID) {
println(trackInPlaylist) // spotify:track:base62id
}
}
}
Specify this command and any required arguments in DS_EXTERNAL_TOOL_COMMAND
, like /path/to/command --foo=bar baz
.
Then, when you run daily-shuffle, you will see the text Looking at playlist songs using external tool...
instead of just Looking at playlist songs...