├── .gitignore
├── LICENSE
├── README.md
├── exportify.html
├── exportify.js
└── screenshot.png
/.gitignore:
--------------------------------------------------------------------------------
1 | # IntelliJ
2 | .idea/
3 |
4 | # macOS
5 | .DS_Store
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Howard Wilson, delight.im (https://www.delight.im/)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | Export your Spotify playlists and library using the Web API by clicking on the link below:
4 |
5 | [https://rawgit.com/delight-im/exportify/master/exportify.html](https://rawgit.com/delight-im/exportify/master/exportify.html)
6 |
7 | As many users have noticed with Spotify, there is no way to export or archive one’s playlists or library from the official clients for safekeeping. This application provides a simple interface for doing that using the Spotify Web API.
8 |
9 | No data will be saved on any third-party server – the entire application runs in your browser.
10 |
11 | ## Usage
12 |
13 | Click “Get started”, grant Exportify *read-only* access to your playlists and library, then click the “Export” button to start the export.
14 |
15 | Click “Export all” to save a ZIP file containing one CSV file for each playlist in your account. This may take a while when many (large) playlists exist.
16 |
17 | ### Large libraries
18 |
19 | If you have a large number of items in your “Saved Tracks”, i.e. more than 2500 entries, you can change the limit on the number of tracks to export by executing the following piece of JavaScript in the console of your browser’s developer tools:
20 |
21 | ```javascript
22 | window.localStorage.setItem("librarySize", 3141);
23 | ```
24 |
25 | ### Re-importing playlists
26 |
27 | Once playlists are saved, it’s also pretty straightforward to re-import them into Spotify. Open up an exported CSV file in Excel or LibreOffice Calc, for example, then select and copy the `spotify:track:xxx` URIs. Finally, create a playlist in Spotify and paste in the URIs.
28 |
29 | ### Export Format
30 |
31 | Track data is exported in [CSV](http://en.wikipedia.org/wiki/Comma-separated_values) format with the following fields:
32 |
33 | * Track URI
34 | * Track Name
35 | * Artist URI
36 | * Artist Name
37 | * Album URI
38 | * Album Name
39 | * Disc Number
40 | * Track Number
41 | * Track Duration (ms)
42 | * Added By
43 | * Added At
44 |
45 | ## Rate limiting or throttling
46 |
47 | If you hit Spotify’s rate limits for their Web API, you may want to [register your own “Client ID”](#registering-your-own-application-for-the-spotify-web-api), which allows for more API calls independent of other users.
48 |
49 | ## Development
50 |
51 | If you want to test changes in a development version, you should fire up a local web server, e.g. using Apache, nginx, Python or PHP, and navigate your browser to `exportify.html` on `localhost`. Additionally, you may want to [register your own “Client ID”](#registering-your-own-application-for-the-spotify-web-api) for the Spotify Web API.
52 |
53 | ## Registering your own application for the Spotify Web API
54 |
55 | 1. Go to [Spotify’s developer site](https://developer.spotify.com/my-applications)
56 | 1. Choose to create a new app
57 | 1. Enter an arbitrary title and description for your new app
58 | 1. Locate the “Client ID” for your new app and write it down
59 | 1. “Edit” your app
60 | 1. As “Redirect URIs”, add
61 |
62 | ```
63 | https://rawgit.com/delight-im/exportify/master/exportify.html
64 | ```
65 |
66 | and, if you want to work on a local development version, your local URL, e.g.:
67 |
68 | ```
69 | http://localhost/exportify/exportify.html
70 | ```
71 |
72 | 1. Save the new settings
73 | 1. Navigate your browser to
74 |
75 | ```
76 | https://rawgit.com/delight-im/exportify/master/exportify.html?client_id=
77 | ```
78 |
79 | to start using your own “Client ID” for the Spotify Web API
80 |
81 | 1. If you want to work on a local development version, you may want to change the “Client ID” directly in the code
82 |
83 | ## References
84 |
85 | * [Spotify Web API](https://developer.spotify.com/web-api/)
86 | * [Saved tracks](https://developer.spotify.com/web-api/get-users-saved-tracks/)
87 | * [List of playlists](https://developer.spotify.com/web-api/get-list-users-playlists/)
88 | * [Playlist details](https://developer.spotify.com/web-api/get-playlist/)
89 | * [Permissions](https://developer.spotify.com/web-api/using-scopes/)
90 |
91 | ## Contributing
92 |
93 | All contributions are welcome! If you wish to contribute, please create an issue first so that your feature, problem or question can be discussed.
94 |
95 | ## License
96 |
97 | This project is licensed under the terms of the [MIT License](https://opensource.org/licenses/MIT).
98 |
--------------------------------------------------------------------------------
/exportify.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Exportify
6 |
7 |
8 |
9 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
Oops, Exportify has encountered a rate limiting error while using the Spotify API. This might be because of large numbers of users currently exporting playlists, or perhaps because you have too many playlists to export all at once.
136 |
It should still be possible to export individual playlists, particularly when using your own Spotify application.