{"id":31485635,"url":"https://github.com/cbartram/plex-music-sync","last_synced_at":"2026-02-14T06:32:30.125Z","repository":{"id":316743724,"uuid":"1064345594","full_name":"cbartram/plex-music-sync","owner":"cbartram","description":"A tool which sync's a spotify song, album, or playlist to a plex media server.","archived":false,"fork":false,"pushed_at":"2025-12-05T21:20:27.000Z","size":61917,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-09T07:15:58.456Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/cbartram.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-25T22:40:41.000Z","updated_at":"2025-12-05T21:20:31.000Z","dependencies_parsed_at":"2025-09-26T13:25:31.102Z","dependency_job_id":"c53243e8-3bd2-4045-81e3-91d65dce6e48","html_url":"https://github.com/cbartram/plex-music-sync","commit_stats":null,"previous_names":["cbartram/plex-music-sync"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cbartram/plex-music-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbartram%2Fplex-music-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbartram%2Fplex-music-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbartram%2Fplex-music-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbartram%2Fplex-music-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cbartram","download_url":"https://codeload.github.com/cbartram/plex-music-sync/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbartram%2Fplex-music-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29438772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T05:24:35.651Z","status":"ssl_error","status_checked_at":"2026-02-14T05:24:34.830Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2025-10-02T10:59:04.541Z","updated_at":"2026-02-14T06:32:30.120Z","avatar_url":"https://github.com/cbartram.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/cbartram/plex-music-sync\"\u003e\n    \u003cimg src=\"resources/images/logo.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\u003ch1 align=\"center\"\u003ePlex Spotify Sync\u003c/h3\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![project_license][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\u003cbr /\u003e\nA tool which sync's a Spotify song, album, or playlist to your plex media server.\n\u003c/div\u003e\n\n\n## Plex Server Deployment\n\nThe plex server can be deployed via the helm chart with: \n\n`helm install plex ./manifests/plex -n plex`\n\nTo upgrade the chart if it's modified use:\n\n`helm upgrade plex ./manifests/plex -f ./manifests/plex/values.yaml -n plex`\n\n\n## CI\n\nThe project is configured with a Github actions CI pipeline to automatically build a new docker image, tag it as latest,\nand deploy it via ArgoCD to a kubernetes cluster. The pipeline is triggered on a push to the main branch.\n\n### Remote Access\n\nOnce the server is deployed make sure to go to the `Remote Access` section and enable the port `32400` as it should be \nport forwarded on the router. This allows you to access the Plex server from outside your home network.\n\n![plex-remote-access](resources/images/plex-remote-access.png)\n\n## Adding Music\n\nMusic is stored on the PVC attached to the plex server under the `/music` directory. Music within Plex needs to be organized\nin the following format:\n\n- `Artist/Album/Song.mp3`\n\nTo add Music it's recommended to use the [SpotDL tool](https://github.com/spotDL/spotify-downloader) to download songs and playlists from\nSpotify to a directory on your local device. These will be the raw MP3 files for the songs, however, they also contain the required metadata\nto refine the music into the Plex required format.\n\nRun the `reformat_music.ps1` powershell script to convert the raw MP3 files into the required directory structure. The script\nis safe to run on a target directory which already has files. i.e. You added music previously and are appending additional songs in plex\nformat to the same directory. \n\nOnce you have the songs in Plex format upload them to the PVC using:\n\n`kubectl cp \u003clocal-dir\u003e \u003cplex-server-pod\u003e:/music`\n\nYou can check the status of the music transfer with: \n\n`keti \u003cplex-pod\u003e -- ls /music`\n\n\u003e :warning: Note: the previous command will take a **long** time to complete as it tar's the file copies it and untar's in at the destination\n\u003e expect it to take an hour or two if you have 2000+ songs to copy. It gives no indication of progress or time till completion. \n\n## Claim Code\n\nWithin the plex server there is a claim code which needs to be refreshed when the server goes offline. The code expires\nin 5 minutes and is stored as a kubernetes secret.  Head to [https://plex.tv/claim](https://plex.tv/claim) and login to generate a new code. \n\n`kubectl create secret generic plex-secrets --from-literal=PLEX_CLAIM=\u003cYOUR_CLAIM_CODE\u003e -n plex`\n\nYou can rollout the deployment to use the new secret with: \n\n`kubectl rollout restart deployment plex-server -n plex`\n\n### Updating the Claim Code\n\nTo update the secret value with the new claim code use:\n\n```shell\nkubectl patch secret plex-secrets -n plex \\\n  --type merge \\\n  -p '{\"stringData\":{\"PLEX_CLAIM\":\"YOUR_CLAIM_CODE\"}}'\n\nkubectl rollout restart deployment plex-server -n plex\n```\n\n## Running the tests\n\n`pytest`\n\n## Built With\n\n- [Python](https://go.dev/doc/install) - Programming Language\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code\nof conduct, and the process for submitting pull requests to us.\n\n## Versioning\n\nWe use [Semantic Versioning](http://semver.org/) for versioning. For the versions\navailable, see the [tags on this\nrepository](https://github.com/cbartram/kraken-loader-plugin/tags).\n\n## Authors\n\n- **C. Bartram** - *Initial Project implementation* - [cbartram](https://github.com/cbartram)\n\nSee also the list of\n[contributors](https://github.com/cbartram/plex-music-sync/contributors)\nwho participated in this project.\n\n## License\n\nThis project is licensed under the [CC0 1.0 Universal](LICENSE.md)\nCreative Commons License - see the [LICENSE.md](LICENSE.md) file for\ndetails\n\n[contributors-shield]: https://img.shields.io/github/contributors/cbartram/plex-music-sync.svg?style=for-the-badge\n[contributors-url]: https://github.com/cbartram/plex-music-sync/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/cbartram/plex-music-sync.svg?style=for-the-badge\n[forks-url]: https://github.com/cbartram/plex-music-sync/network/members\n[stars-shield]: https://img.shields.io/github/stars/cbartram/plex-music-sync.svg?style=for-the-badge\n[stars-url]: https://github.com/cbartram/plex-music-sync/stargazers\n[issues-shield]: https://img.shields.io/github/issues/cbartram/plex-music-sync.svg?style=for-the-badge\n[issues-url]: https://github.com/cbartram/plex-music-sync/issues\n[license-shield]: https://img.shields.io/github/license/cbartram/plex-music-sync.svg?style=for-the-badge\n[license-url]: https://github.com/cbartram/plex-music-sync/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/linkedin_username\n[logo]: resources/images/logo.png\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbartram%2Fplex-music-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcbartram%2Fplex-music-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbartram%2Fplex-music-sync/lists"}