/exportify

Export Spotify playlists using the Web API. Analyze them in the Jupyter notebook.

Primary LanguageJupyter NotebookMIT LicenseMIT

Build Status Binder

Export your Spotify playlists for analysis or just safekeeping: exportify.net

This is a hard fork of the original Exportify repo. I simplified and updated the code, instituted rate limiting (because back when I forked, the original didn't work for large playlists or for all playlists at once), got rid of tests I deemed unnecessary, fixed a parsing bug when album or artist(s) names contain commas, enhanced the set of features, added logout functionality, set up automatic deployment to github pages, provided an interactive python notebook to do something interesting with the data, fixed null object bugs in the event of missing data, made the table sortable, modified to display all playlists at once (rather than pagination), treated the special case of liked tracks, and added playlist images.

Export Format

Track data is exported in CSV format with the following fields:

  • Track ID
  • Track Name
  • Album Name
  • Artist Name(s)
  • Release Date
  • Duration (ms)
  • Popularity
  • Added By
  • Added At
  • Genres
  • Record Label
  • Danceability
  • Energy
  • Key
  • Loudness
  • Mode (Major or Minor)
  • Speechiness
  • Acousticness
  • Instrumentalness
  • Liveness
  • Valence
  • Tempo
  • Time Signature

Analysis

Run the Jupyter Notebook or launch it in Binder to get a variety of plots about the music in a playlist including:

  • Most common artists
  • Most common genres
  • Release date distribution
  • Popularity distribution
  • Your songs' distributions of Acousticness, Valence, etc.
  • Time signatures and keys
  • All songs plotted in 2D to indicate relative similarities

Development

Developers wishing to make changes to Exportify should use a local web server. For example, using Python (in the Exportify repo dir):

python3 -m http.server

Then open http://localhost:8000.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -m "message")
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request