Git Product home page Git Product logo

exportify's Introduction

Build Status

Export your Spotify playlists to CSV by clicking on the link below:

https://watsonbox.github.io/exportify/

As many users have noted, there is no way to export/archive/backup playlists from the Spotify client for safekeeping. This application provides a simple interface for doing that using the Spotify Web API.

No data will be saved - the entire application runs in the browser.

Usage

  1. Fire up the app
  2. Click 'Get Started'
  3. Grant Exportify read-only access to your playlists
  4. Click the 'Export' button to export a playlist

Click 'Export All' to save a zip file containing a CSV file for each playlist in your account. This may take a while when many playlists exist and/or they are large.

Re-importing Playlists

Once playlists are saved, it's also pretty straightforward to re-import them into Spotify. Open up the CSV file in Excel, for example, select and copy the spotify:track:xxx URIs, then simply create a playlist in Spotify and paste them in. This has only been tested with the desktop app.

Export Format

Track data is exported in UTF-8 encoded CSV format with the following fields from the Spotify track object:

  • Track URI
  • Track Name
  • Artist URI(s)
  • Artist Name(s)
  • Album URI
  • Album Name
  • Album Artist URI(s)
  • Album Artist Name(s)
  • Album Release Date
  • Album Image URL (typically 640x640px jpeg)
  • Disc Number
  • Track Number
  • Track Duration (ms)
  • Track Preview URL (mp3)
  • Explicit?
  • Popularity
  • ISRC (International Standard Recording Code)
  • Added By
  • Added At

By clicking on the cog, additional data can be exported.

By selecting "Include artists data", the following fields will be added from the Spotify artist object:

  • Artist Genres

And by selecting "Include audio features data", the following fields will be added from the Spotify audio features object:

  • Danceability
  • Energy
  • Key
  • Loudness
  • Mode
  • Speechiness
  • Acousticness
  • Instrumentalness
  • Liveness
  • Valence
  • Tempo
  • Time Signature

Additionally, by selecting "Include album data", the following fields will be added from the Spotify album object (full)

  • Album Genres
  • Label
  • Copyrights

Note that the more data being exported, the longer the export will take.

Playlist Search

If you're searching for a specific playlist to export, you can use the search facility to find it quickly by name:

Please be aware that if you have a very large number of playlists, there may be a small delay before the first search results appear since the Spotify API itself doesn't allow for searching directly, so all playlists are retrieved first.

Searching is case-insensitive.

Development

This project was bootstrapped with Create React App.

In the project directory, first run yarn install to set up dependencies, then you can run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

yarn build

Builds the app for production to the build folder.

Stack

In addition to Create React App, the application is built using the following tools/libraries:

Notes

  • According to Spotify's documentation:

    Folders are not returned through the Web API at the moment, nor can be created using it".

    Unfortunately that's just how it is.

  • I've gone to some lengths to try to eliminate errors resulting from excessively high usage of the Spotify API. Nonetheless, exporting data in bulk is a fairly request-intensive process, so please do try to use this tool responsibly. If you do require more throughput, please consider creating your own Spotify application which you can use with Exportify directly.

  • Disclaimer: It should be clear, but this project is not affiliated with Spotify in any way. It's just an app using their API like any other, with a cheeky name and logo 😇.

  • In case you don't see the playlists you were expecting to see and realize you've accidentally deleted them, it's actually possible to recover them.

Error Monitoring

Error monitoring provided by Bugsnag.

Running With Docker

To build and run Exportify with docker, run:

docker build . -t exportify

docker run -p 3000:3000 exportify

And then open http://localhost:3000 to view it in the browser.

Contributing

  1. Fork it ( https://github.com/watsonbox/exportify/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

exportify's People

Contributors

dependabot[bot] avatar josejnra avatar martenjacobs avatar ocram avatar watsonbox avatar wllrd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

exportify's Issues

Exporting the Songs Playlist

image
In case of confusion.

This is not an available selection and it's the only one I need. I use the dates on the songs as a reference for Spotify, which I dually use as "music journal."

As a novice, I cannot contribute via fork or create my own Spotify app alone.
image

"Export All" not working

Excellent tool!
It works when I export individual playlists.
However, it doesn't when I try to export all at the same time:
I go to the website, I click on Export All, but nothing happens.

Thank you.

Support for importing playlists into iTunes Music

At the moment, there is no API or other satisfactory way to get Spotify playlists into Apple Music. If anyone makes any progress with this please add a comment. In the meantime I know of two approaches:

  1. Export tracks in an iTunes-compatible playlist format. However, each Apple Music song must already exist in the music collection to be added to the playlist, somewhat defeating the purpose.
  2. There is some interesting reverse-engineering of the iTunes protocol going in spotify2am. This looks promising, but amongst other issues setting up Charles as an SSL proxy is not trivial and will be a problem for many users.

Escape quotes in track names

When a quotation mark appears in the name of a spotify track (or any other string for that matter), it needs to be escaped before exporting it as CSV.

"hh:mm:ss" format instead "Track Duration (ms)"

Exportify works great, thanks!

Would it be possible to make the export to .xlsx or .ods format with "hh:mm:ss" format instead "Track Duration (ms)"?

I usually add a "hh:mm:ss" column to the spreadsheet the following way:

Add a column with the following function and set its Format to "Time":

=G2/86400000

Or add a column with the following function:

=TIME(0;TRUNC(G2/1000/60);ROUND((MOD(G2/1000/60;1))*60;0))

Can't log in to Spotify anymore after using this tool.

I was just listening to music via Spotify while using this tool and suddenly no more song was playing and all pages were empty.

Then I logged out and wanted to log in again and since then I get the following error message in the browser:

image

In the desktop app I get the following error:

image

I never had any problems with Spotify before, but it seems that by logging in via the tool a maximum of allowed logins was reached, which I cannot undo.

Do you have any idea what I can do now?

Not all table rows same width

In exporting a grand playlist of mine I found I couldn't .read_csv in python because the .csv came out mangled. I was able to go through it to find out what was going on: In some cases fields are missing, and then JavaScript seems to move all cells rightward of that one left to fill the gap. In other cases something like an album name can be really long, and it runs over in to the next cell for some reason, pushing everything to the right rightward.

Not Working

Is this program still running, cannot get past the 'Get Started' feature anymore

Special Characters Are Not Exporting Correctly

For example, I exported some Japanese songs and the titles exported as jumbled garbage. Here is a specific example of the Spotify title and what appeared in the export: "高い壁には幾千のドア" ---> "高ã�„å£�ã�«ã�¯å¹¾å�ƒã�®ãƒ‰ã‚¢"

I experienced the same with characters with accents. One example from my export was: "Veinte Años" ---> "Veinte Años"

This definitely used to work, but I haven't used the exporter since those new columns of info were added, "Artist URI", "Album URI", "Explicit", etc. so I don't know exactly when special characters stopped exporting correctly.

Add Genre and Original Album release year to export

Hello, Thanks for building such a great way of exporting the spotify playlist tracks. I have a couple of requests, I don't know if I am requesting at the right place. Is there anyway to get **Genre _and _Original Album release year information for the tracks? I would love to see these two information. Thanks again for your great product!

Album URI ?

A fantastic service. Thank you!
I would soooo much like to have the Album URI in the same list.

Can this be done?

Export track year and genre columns

I'm trying to do some analysis on my music tastes. I'll probably publish the script soon so you all can use it. It would be really nice to be able to breakdown a playlist by the release year of the songs and by the genres they fall in to. As is, these columns aren't provided, so I'm looking at having to query spotify with the track URIs, retrieve JSON, and parse out the pieces of info I need through these server calls.

Note: Getting release year is included in the track's JSON, but genre information is found only in the artist's JSON. Thankfully the track has an artist URI associated with it, but it means you'll have to make a second call of this form.

Twitter

This is great. Can you make a similar tool for Twitter data?

Overcoming "API rate limit exceeded"

Trying to export all my 315 playlists I quickly run into the message:

{
  "error": {
    "status": 429,
    "message": "API rate limit exceeded"
  }
}

Reading up on the limits I see:

Rate limiting is applied on an application basis (based on client id), regardless of how many users are using it.

https://developer.spotify.com/web-api/user-guide/#rate-limiting

So I guess one easy way of overcoming the limit would be to fork (and host it at some other address I guess) and register it as my own application with spotify.

Do you think that is all there is to it? Looking at the code I see that exportify is doing it in batches of 20 lists at a time (I think). Would some waiting between each request help?

Another thing would probably be to implement some "wait and retry"-scheme for when these responses are recieved.

This is just a few loose ideas. I am adding the issue here to start the discussion since I saw some other user having the same problem somewhere.
Exportify seems really great otherwise! Nice that you have taken the time to code this up.

Exportify 'Export All' not working

I use Exportify thankfully to back up a large number of playlists off Spotify so I need to use the 'Export All' option otherwise it's tedious and takes a long time to export singly.

When I hit the 'Export All' button nothing happens at all.

I use the latest version of Chrome (Also happens in Opera and Firefox) on Win 10.

Any ideas?

Allow playlists to be more easily searched or paged

For my account, the opening page reads:

 Exportify: 1-20 of 2495 playlists for USERNAME

Now, scrolling through/between my lists by every 20th listing is impossible,

Kindly provide dropown box to select E.g. 10, 20, 50, 100, 200, 400, ALL

Add more data to exports

I created this issue as a master issues for others asking for this facility. Let's triage the requests and see what we should add:

  • Track year and genre #59
  • Genre and Original Album release year #17
  • Record label #58
  • Popularity #67 (comment)

Encountered TypeError: features[i] is undefined.

Hello

I've been trying to export my main playlist but it keeps coming up with "Couldn't export songs i like. Encountered TypeError: features[i] is undefined. Please let us know." I have used Exportify in the past and I have a successful spreadsheet from the 26/10/20 but between then and now it's just stopped working. Thank you for the help in advance.

How to export playlists to CSV with a different column order?

The CSV files have the column order A = Title B = Artist, but is it possible to reverse the order in the code self without adjusting that afterward in Excel? In other words, I want to create CSV files that already has the order Artist - Title instead.

Some browser extensions prevent app from loading

Hi, I have been using this for quite some time now and it has been brilliant so thank you!

The last few months I have been unable to view my playlists and now it appears stuck at the spinner.

I haven't added any new playlists and I have been waiting for quite some time!

Is this a known issue?

Auth flow

Could you let me know which spotify authorization flow this uses? Trying to find out if I could fork this and hit a different endpoint

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.