{"id":20688002,"url":"https://github.com/engineerjoe440/djjoeplaylister","last_synced_at":"2026-04-20T15:33:17.636Z","repository":{"id":130432300,"uuid":"413193941","full_name":"engineerjoe440/djjoeplaylister","owner":"engineerjoe440","description":"Spotify and Apple Music Playlist Saver","archived":false,"fork":false,"pushed_at":"2025-05-03T20:07:28.000Z","size":596,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-19T18:49:32.175Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://playlists.djjoeidaho.com","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/engineerjoe440.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":"2021-10-03T20:49:40.000Z","updated_at":"2025-05-03T20:07:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"7dce8fb6-a739-44e4-bcd4-9bbd72052a47","html_url":"https://github.com/engineerjoe440/djjoeplaylister","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/engineerjoe440/djjoeplaylister","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2Fdjjoeplaylister","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2Fdjjoeplaylister/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2Fdjjoeplaylister/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2Fdjjoeplaylister/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/engineerjoe440","download_url":"https://codeload.github.com/engineerjoe440/djjoeplaylister/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engineerjoe440%2Fdjjoeplaylister/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32053255,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":"2024-11-16T22:58:51.085Z","updated_at":"2026-04-20T15:33:17.617Z","avatar_url":"https://github.com/engineerjoe440.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# djjoespotifyplaylister\n*A web-based tool to automatically consume Spotify and Apple Music playlists into a*\n*Youtube-searchable and printable format, showing just the right ammount of info for*\n*DJs with time constraints!*\n\n### Inspiration\nAs a mobile DJ, I often am provided \"playlists\" in various forms: Word documents, text\nfiles, quickly-scribbled hand-written notes, Spotify playlists, and Apple Music playlists.\n\nIt quickly became apparent for me, that I spent *way* more time working through these\nSpotify playlists and Apple Music playlists to get them into a form that was actually\nhelpful for me. In most cases, I could not simply copy/paste the Spotify list(s) out so\nthat I could search for the songs of interest in my own library and then determine whether\nI'd need to aqcuire additional music. Thus... I came to the conclusion, I'd want a little\nassistance from my computer.\n\n### Stages of Development\nI originally started with a simple Tkinter-app that used the [`spotipy`](https://spotipy.readthedocs.io/en/latest/)\npackage to pull playlist information into a simple plain-text file. It was helpful, but\nended up incurring a few additional challenges of its own. The largest of which being the\nfact I had to securly pass the API secrets around with the script itself. This became a\nreal burden, so I decided to enhance the system into a full-service mini web-app that\ncould be utilized for exactly this purpose. The web-app could run persistently on a server\nthat could hang on to those secrets and allow me to access the tool from anywhere.\n\nThus, the `djjoeplaylister` was born.\n\n### Technical Details\nThis app is built on the shoulders of giants, so let me give credit to those where it's due!\n\n**Technology Specs**\n* Language: Python 3\n* Web Framework: [FastAPI](https://fastapi.tiangolo.com/)\n* Web Listener/ASGI Server: [Uvicorn](https://uvicorn.org/)\n* Reverse Proxy: [Nginx](https://nginx.com/)\n* Hosting Provider: [Linode virtual hosting](https://linode.com/)\n* Operating System: Ubuntu server\n* App Deployment Enviromnent: Dockerized Container\n\n**Python Packages Leveraged**\n* Spotify Client: [`spotipy`](https://spotipy.readthedocs.io/en/latest/)\n* Apple Music Client: [`requests`](https://docs.python-requests.org/en/latest/)\n* HTML Table Generation: [`pandas`]()\n\nAdditionally, I'd like to provide a special thanks and shout-out to this gist that\nhelped me get up and running with consuming the Apple Music playlist without dealing\nwith Apple's crummy developer program ($99 dolars a year, just to access an API? No\nthank you!) https://gist.github.com/aleclol/ef9e87d0964f00975f82d5373a814447\n\n------\n\n## Deploying\n1. Clone/Pull repo contents down to server\n2. Verify installation of Nginx/Docker/docker-compose\n3. Configure Nginx to route to the container\n4. Configure the required environment variables for Spotipy in a `.env` file:\n  * `SPOTIFY_ID=\u003capi-id\u003e`\n  * `SPOTIFY_SECRET=\u003capi-key\u003e`\n5. Run Docker container with docker-compose\n  * `docker-compose up -d --build`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineerjoe440%2Fdjjoeplaylister","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineerjoe440%2Fdjjoeplaylister","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineerjoe440%2Fdjjoeplaylister/lists"}