{"id":46796666,"url":"https://github.com/donmerendolo/exportify-cli","last_synced_at":"2026-03-10T04:31:29.529Z","repository":{"id":255133699,"uuid":"848637534","full_name":"donmerendolo/exportify-cli","owner":"donmerendolo","description":"CLI tool to export Spotify playlists to CSV or JSON.","archived":false,"fork":false,"pushed_at":"2025-12-01T19:52:27.000Z","size":190,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-04T09:50:00.567Z","etag":null,"topics":["backup","cli","csv","csv-export","exportify","playlist","spotify","spotify-automation","spotify-backup","spotify-cli","spotify-export","spotify-exporter","spotify-playlist","spotify-script","spotify-to-text","spotify-tool"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/donmerendolo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-28T06:05:13.000Z","updated_at":"2025-12-04T00:10:52.000Z","dependencies_parsed_at":"2024-08-28T07:37:47.629Z","dependency_job_id":"5be35ff0-6bf7-438b-9da9-1ae0b77e2e0f","html_url":"https://github.com/donmerendolo/exportify-cli","commit_stats":null,"previous_names":["donmerendolo/exportify-cli"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/donmerendolo/exportify-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donmerendolo%2Fexportify-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donmerendolo%2Fexportify-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donmerendolo%2Fexportify-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donmerendolo%2Fexportify-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/donmerendolo","download_url":"https://codeload.github.com/donmerendolo/exportify-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/donmerendolo%2Fexportify-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30324390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","cli","csv","csv-export","exportify","playlist","spotify","spotify-automation","spotify-backup","spotify-cli","spotify-export","spotify-exporter","spotify-playlist","spotify-script","spotify-to-text","spotify-tool"],"created_at":"2026-03-10T04:31:29.042Z","updated_at":"2026-03-10T04:31:29.518Z","avatar_url":"https://github.com/donmerendolo.png","language":"Python","readme":"# exportify-cli\n![exportify-cli](image.png)\n\nExport Spotify playlists to CSV or JSON directly from the terminal, inspired by [pavelkomarov/exportify](https://github.com/pavelkomarov/exportify).\n\nThis tool can export all saved playlists, including liked songs.\n\n## Installation:\n**You can also download a binary from the [releases page](https://github.com/donmerendolo/exportify-cli/releases/latest) and skip steps 1 and 2. It's recommended to place it in a dedicated folder since it will create .cache, a config file and playlists folders.**\n1. **Clone this repository:**\n```bash\ngit clone https://github.com/donmerendolo/exportify-cli.git\n```\n\n2. **Install the required packages:**\n(recommended to use a virtual environment)\n```bash\ncd exportify-cli\npip install -r requirements.txt\n```\n\n3. **Set up Client ID, Client Secret and Redirect URI:**\n\nThe first time you run exportify-cli, it will guide you through the setup:\n```\nFile \"config.cfg\" not found or invalid. Let's create it.\n\n1. Go to Spotify Developer Dashboard (https://developer.spotify.com/dashboard).\n2. Create a new app.\n3. Set a name and description for your app.\n4. Add a redirect URI (e.g. http://127.0.0.1:3000/callback).\n\nNow after creating the app, press the Settings button on the upper right corner.\nCopy the Client ID, Client Secret and Redirect URI and paste them below.\n```\n\nAfter running `python exportify-cli.py` (or [one of the binaries](https://github.com/donmerendolo/exportify-cli/releases/latest)) the first time, it should keep you authenticated so you don't have to log in each time.\n\nIf you wish to log out, simply remove the `.cache` file (you may also have to remove access to `exportify-cli` in https://www.spotify.com/us/account/apps/).\n\n---\n\n## Usage:\n```\nUsage: exportify-cli.py (-a | -p NAME|ID|URL|URI [-p ...] | -u ID|URL|URI |\n-l) [OPTIONS]\n\n  Export Spotify playlists to CSV or JSON.\n\nOptions:\n    -a, --all                     Export all playlists\n    -p, --playlist NAME|ID|URL|URI\n                                  Export a Spotify playlist given name, ID,\n                                  URL, or URI; repeatable.\n    -u, --user ID|URL|URI         Export all public playlists of a Spotify\n                                  user given ID, URL, or URI; repeatable.\n    -l, --list                    List available playlists.\n    -c, --config PATH             Path to configuration file (default is\n                                  ./config.cfg next to this script).\n    -o, --output PATH             Directory to save exported files (default is\n                                  ./playlists).\n    -f, --format [csv|json]       Output file format (defaults to 'csv');\n                                  repeatable.\n    --uris                        Include album and artist URIs.\n    --external-ids                Include track ISRC and album UPC.\n    --no-bar                      Hide progress bar.\n    --sort-key TEXT               Key to sort tracks by (default is\n                                  'spotify_default').\n    --reverse                     Reverse the sort order.\n  -h, --help                      Show this message and exit.\n  -v, --version                   Show the version and exit.\n```\n\n- Default values can be changed in `config.cfg`.\n\n- Playlist names support partial matching, provided they uniquely identify a single playlist.\n\n- You can also export a playlist that's not saved in your library by using its ID, URL, or URI.\n\n- A single command can export multiple playlists by using the `-p` option multiple times. Same applies for the `-u` option.\n\n- You can export all ***public*** playlists of any user by using the `-u` option with their user ID, URL, or URI. It won't save Liked Songs from that user, as it's private.\n\n- The default fields are: `Position`, `Track URI`, `Track Name`, `Album Name`, `Artist Name(s)`, `Release Date`, `Duration_ms`, `Popularity`, `Added By`, `Added At`, `Record Label`. With flags, `Album URI(s)`, `Artist URI(s)`, `Track ISRC` and `Album UPC` can be included too. If you want any other field to be added, feel free to open an issue or PR.\n\n### Examples:\n```\n# List all saved playlists\npython exportify-cli.py --list\n\n# Export all saved playlists, including liked songs with Artist and Album URIs\nexportify-cli.exe --all --uris\n\n# Export playlist whose name is \"COCHE\" to JSON in reverse order\npython exportify-cli.py -p COCHE -f json --reverse\n\n# Export playlist whose ID is \"2VqAIceMCzBRhzq6zVmDZw\" to current directory, sorted by Added At\nexportify-cli.exe -p 2VqAIceMCzBRhzq6zVmDZw --output . --sort-key \"Added At\"\n\n# Export playlist with its URL to both JSON and CSV\nexportify-cli.exe -f json -f csv -p https://open.spotify.com/playlist/2VqAIceMCzBRhzq6zVmDZw?si=16df8ae16c2d492b\n\n# Export playlists \"Instrumental\" and \"COCHE\" to CSV without progress bar, sorted by Popularity\npython exportify-cli.py -p instr -p COCHE -f csv --no-bar --sort-key \"popularity\"\n\n# Export all public playlists of user with ID \"spotifyuser123\" and user with URL \"https://open.spotify.com/user/anotheruser456\"\npython exportify-cli.py -u spotifyuser123 -u https://open.spotify.com/user/anotheruser456\n```\n\n---\n\n## Building:\nYou can use [PyInstaller](https://pyinstaller.readthedocs.io/en/stable/) to build a binary with this command:\n```bash\npyinstaller --onefile .\\exportify-cli.py\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonmerendolo%2Fexportify-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdonmerendolo%2Fexportify-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonmerendolo%2Fexportify-cli/lists"}