{"id":20529192,"url":"https://github.com/devlocalhost/pyspodl","last_synced_at":"2025-10-19T19:03:10.361Z","repository":{"id":50934451,"uuid":"471689354","full_name":"devlocalhost/pyspodl","owner":"devlocalhost","description":"pyspodl - a spotify downloader using librespot","archived":false,"fork":false,"pushed_at":"2024-04-24T09:44:45.000Z","size":2574,"stargazers_count":16,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T18:52:46.672Z","etag":null,"topics":["librespot","librespot-python","music","music-downloader","playlist-downloader","playlists","python","python3","songs","spotify","spotify-api","spotify-premium"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devlocalhost.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-03-19T12:29:43.000Z","updated_at":"2025-03-27T16:12:51.000Z","dependencies_parsed_at":"2024-11-15T23:30:02.784Z","dependency_job_id":null,"html_url":"https://github.com/devlocalhost/pyspodl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlocalhost%2Fpyspodl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlocalhost%2Fpyspodl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlocalhost%2Fpyspodl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlocalhost%2Fpyspodl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devlocalhost","download_url":"https://codeload.github.com/devlocalhost/pyspodl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248824693,"owners_count":21167343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["librespot","librespot-python","music","music-downloader","playlist-downloader","playlists","python","python3","songs","spotify","spotify-api","spotify-premium"],"created_at":"2024-11-15T23:29:58.373Z","updated_at":"2025-10-19T19:03:10.354Z","avatar_url":"https://github.com/devlocalhost.png","language":"Python","readme":"# pyspodl - a spotify downloader using librespot\n\nusing the module [librespot-python by kokarare1212](https://github.com/kokarare1212/librespot-python)\n\n# What is different from other downloaders?\nWell, maybe nothing. pyspodl can only do these things: download tracks, albums and playlists in \"high\" (non-premium) and \"very high\" (premium account required) quality. It downloads them from Spotify, it does not use another source like some other programs do.\n\n# installation\nMake sure you have python3 and git installed. If you don't, go ahead and install them.\n\n+ Clone the repository: `git clone https://github.com/devlocalhost/pyspodl`\n+ Install the primary dependecy: `pip3 install git+https://github.com/kokarare1212/librespot-python`.\n+ Now install the extra dependecies (which are needed, yes): `pip3 install requests Pillow mutagen toml tqdm`.\n+ Generate a `credentials.json` file using [librespot-auth](https://github.com/dspearson/librespot-auth)\n    + After compiling (or grabbing the prebuilt binaries), run `librespot-auth` like this: `librespot-auth --name \"pyspodl\" --class tv`. Launch spotify **desktop app**, click the button that allows you to play on a different device, and you should see \"pyspodl\". CLick it, then copy the generated `credentials.json` file to pyspodl directory\n    + Open the `credentials.json` file, and do the following:\n        1. Replace `\"auth_data\"` with `\"credentials\"`\n        2. Remove `\"auth_type\": 1,`\n        3. Enter this before the closing `}`: `\"type\": \"AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS\"`\n        4. Confirm your file looks similar to this:\n```json\n{\"username\": \"BLABLA\", \"credentials\": \"BLABLABLA\", \"type\": \"AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS\"}\n```\n+ Create an application from [spotify dashboard](https://developer.spotify.com/dashboard/applications), and copy the client ID and secret\n+ Paste the client ID and secret into the config file, inside the \"pyspodl\" directory.\n+ Now you can use pyspodl like this: `python3 pyspodl`\n\n## usage - examples\n`python pyspodl -l LINK`\n\n`python pyspodl -l \"LINK1 LINK2 LINK3\"`\n\n`python pyspodl -l ... -c /path/to/config.file`\n\nOr, check `python -h`\n\n## updating pyspodl\nWhen there's a new update, you can simply run `git pull` in the directory where you cloned pyspodl.\n\n# the config file\nBefore you start using pyspodl, you need to fill out the config file.\n\n## config entries\n+ `credentials_config_file`: the full path to credentials.json file\n+ `token`: used to send request to spotify api. you do not need to touch this.\n+ `client_id`: used to get the token\n+ `client_secret`: used to get the token\n+ `timeout`: tells the program to wait x seconds before downloading the next song from a playlist or album (to avoid account bans, but I never had an account get banned by using my program).\n+ `premium_downloads`: download tracks in higher quality. only for premium accounts.\n+ `download_path`: the path to download the tracks\n+ `set_metadata`: set tags for the tracks\n+ `track_format`: the format the tracks will be saved in. check the config file for possible entries\n\n## config example\n```\n[account]\ncredentials_file_path = \"\" # full path to the credentials.json file\ntoken = \"\" # used to communicate with spotify api\nclient_id = \"\" # used to get the token\nclient_secret = \"\" # same thing as above\n\n[downloading]\ntimeout = 2 # in seconds\npremium_downloads = false # can be false or true\ndownload_path = \"\" # download path for the tracks\nset_metadata = true # can be false or true\ntrack_format = \"{artist}/{album}/{title}\" # can be: artist, album, title, tracknumber, year\n# the above format will save a song like this: download_path/Nas/Illmatic/The World Is Yours.ogg\n#                                                         artist    album              title\n```\n\n# help\nFeel free to fork or make PR's (pull requests). If you're forking, please leave [this repos link](https://github.com/devlocalhost/pyspodl) in your readme and [kokarare1212's module repo link](https://github.com/kokarare1212/librespot-python).\nIf you have any problems/want to report a bug or request a feature, open an issue\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlocalhost%2Fpyspodl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlocalhost%2Fpyspodl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlocalhost%2Fpyspodl/lists"}