Skip to content
/ Spoofy Public

Playlist randomizer for Spotify with weighted algorithms.

License

Notifications You must be signed in to change notification settings

noahc3/Spoofy

Repository files navigation

spoofy

License: AGPLv3 Build Status

Spoofy is a web app you can use to apply a permanent shuffle to your Spotify playlists. The tool gives you the option to do a fully random shuffle, or to shuffle while spacing apart songs by the same artist.

The website uses the official Spotify REST API to perform playlist shuffles. To use Spoofy, head over to https://spoofy.noahc3.ml, login with your Spotify account and start shuffling!

Build & Run Locally

The frontend is a Node.js project built with ReactJS, you can launch into debug mode with the command npm start. You can build the static output with npm run build.

The backend server is written in C# using ASP.NET 6.0 and can be easily build by opening the solution in Visual Studio 2022 and building as usual, or using the dotnet build command.

Required configuration for backend server

The backend server requires Spotify application credentials to interact with the Spotify API. Please see the Spotify developer quick start guide for information on how to setup an app with Spotify and get your client ID and client secret. You will need to configure the following redirect URIs in the Spotify developer dashboard for you app:

  • Frontend: http://localhost:3000/callback
  • Swagger/OpenAPI: http://localhost:5003/swagger/oauth2-redirect.html

The backend server also needs a 128bit key to encrypt and store the users authentication token within their browser. You should generate a random 16 character ASCII string for this purpose.

Development Mode

Set your configuration settings using dotnet user secrets. Run these commands in the backend solution directory:

dotnet user-secrets init
dotnet user-secrets set "Spotify:ClientID" [clientid]
dotnet user-secrets set "Spotify:ClientSecret" [clientsecret]
dotnet user-secrets set "Spotify:AuthDataKey" [authdatakey]

Production Deployment

Set your configuration settings in appsettings.json in a top level Spotify object property

{
    ...
    "Spotify": {
        "ClientID": "{clientid}",
        "ClientSecret": "{clientsecret}",
        "AuthDataKey": "{authdatakey}"
    },
    ...
}

About

Playlist randomizer for Spotify with weighted algorithms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published