{"id":15314294,"url":"https://github.com/barelyhuman/musync","last_synced_at":"2025-10-24T13:28:32.512Z","repository":{"id":39664748,"uuid":"352470733","full_name":"barelyhuman/musync","owner":"barelyhuman","description":"Simple Spotify Library to Playlist Sync","archived":false,"fork":false,"pushed_at":"2022-05-28T12:10:05.000Z","size":2347,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"dev","last_synced_at":"2025-01-25T04:37:46.773Z","etag":null,"topics":["music","musync","playlist","spotify","sync"],"latest_commit_sha":null,"homepage":"","language":"Go","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/barelyhuman.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}},"created_at":"2021-03-29T00:26:44.000Z","updated_at":"2023-04-25T11:59:33.000Z","dependencies_parsed_at":"2022-09-07T17:22:40.187Z","dependency_job_id":null,"html_url":"https://github.com/barelyhuman/musync","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barelyhuman%2Fmusync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barelyhuman%2Fmusync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barelyhuman%2Fmusync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barelyhuman%2Fmusync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barelyhuman","download_url":"https://codeload.github.com/barelyhuman/musync/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244460238,"owners_count":20456301,"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":["music","musync","playlist","spotify","sync"],"created_at":"2024-10-01T08:44:59.701Z","updated_at":"2025-10-06T17:43:43.245Z","avatar_url":"https://github.com/barelyhuman.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# musync\n\n\u003e CLI tool / package to create sync tasks for public spotify playlists and user libraries\n\n## Highlights\n\n- Fast and Cross Platform\n- Sync Queues\n- Concurrent Batches Processing\n- Modular API to extend and use to create additional tooling on top\n\n## Motivation\n\nCleaning up my spotify library is something I do often and then regret when I can't find names of tracks I used to listen to, so I maintain a capsule playlist which is kept in sync with the library as often as I can, this can be redundant and so it was easier to write a tool that would do that for me.\nThat's when musync v0.0.1 was made with the simple functionality to just run a sync job based on the provided config. The newer version now is a full fledged cli instead of a complicated go lang binary.\n\n## Philosophy\n\nThe CLI serves to be of the unix philosophy, that is to do one and do it well. Though, the remaining of the package due to the structure is reusable in your projects if you plan to build something similar. No limitations there.\n\n\u003e **Note**: if you are using the package and have something that you wish the package provided, please raise an issue\n\n## Usage\n\n#### Install\n\nThe CLI is available as binaries on the [releases](/releases) page and if you can't find one for your arch, you can try using [goblin](https://goblin.reaper.im) to build a binary for you as shown below\n\n```sh\ncurl -sf https://goblin.reaper.im/github.com/barelyhuman/musync | sh\n```\n\nIf you have `golang\u003e=1.8` then you can request the binary from `go get`\n\n```sh\ngo get -u github.com/barelyhuman/musync\n```\n\n#### Next Steps\n\nThis is a very developer centric tool and would need a few steps to get the needed data, this is done so that you can use your own spotify apps to own your playlist id, if you don't mind the playlist id's being stored on someone else's server, we'll have a service for this up soon. Which you can use instead of the below setup.\n\n**Account Setup**\n\n1. Go to [developer.spotify.com](https://developer.spotify.com) and login with your account and create an app, this will give you the `CLIENT_ID` and `CLIENT_SECRET`, we'll need it in a few steps\n2. While creating the app, you set a redirection url which will be used by the CLI to handle the verification of your account, you can set it as `localhost:8080/callback` as `8080` is the default port used by the `musync`, if you do change the port to something else like `3000`, make sure you pass the `-p` flag to the `login` command with the port value.\n\neg: `musync login -p 3000`\n\n**CLI Usage**\n\n```sh\n# create a login request\nmusync login --clientid \u003cclient-id-from-spotify\u003e --clientsecret \u003cclient-secret-from-spotify\u003e -p 8080\n\n# check if the login was successful\nmusync whoami\n\n# sync between library and playlist\nmusync sync -s \"lib\" -d xxxxxxx\n\n# sync between public playlist and playlist that you have edit access to\nmusync sync -s \"lib\" -s xxxxxxx -d xxxxxxx\n```\n\nYou can find `xxxxxxx` (which is the playlist's identifier) from the spotify playlist urls `https://open.spotify.com/playlist/1fSExQf33fHoAtqnGY99tl` here `1fSExQf33fHoAtqnGY99tl` is what you'll pass to musync.\n\nfor more commands and flags check the [API documentation](/docs/api.md)\n\n## LICENSE\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarelyhuman%2Fmusync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarelyhuman%2Fmusync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarelyhuman%2Fmusync/lists"}