{"id":30821150,"url":"https://github.com/jakewdr/middlefm","last_synced_at":"2025-09-06T10:46:03.024Z","repository":{"id":313169922,"uuid":"864822678","full_name":"jakewdr/middlefm","owner":"jakewdr","description":"Middle Layer between spotify and LastFM allowing for automatic track edits","archived":false,"fork":false,"pushed_at":"2025-09-04T08:59:38.000Z","size":61,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-04T10:38:42.683Z","etag":null,"topics":["docker","json","lastfm","middlefm","python3","self-hostable","spotify"],"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/jakewdr.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":"2024-09-29T09:00:42.000Z","updated_at":"2025-09-04T08:59:42.000Z","dependencies_parsed_at":"2025-09-04T23:46:23.205Z","dependency_job_id":null,"html_url":"https://github.com/jakewdr/middlefm","commit_stats":null,"previous_names":["jakewdr/middlefm"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jakewdr/middlefm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakewdr%2Fmiddlefm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakewdr%2Fmiddlefm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakewdr%2Fmiddlefm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakewdr%2Fmiddlefm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakewdr","download_url":"https://codeload.github.com/jakewdr/middlefm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakewdr%2Fmiddlefm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273892841,"owners_count":25186561,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"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":["docker","json","lastfm","middlefm","python3","self-hostable","spotify"],"created_at":"2025-09-06T10:46:01.845Z","updated_at":"2025-09-06T10:46:03.006Z","avatar_url":"https://github.com/jakewdr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"*I stopped working on this and using spotify, I will merge any changes to this though*\n\n# How to set this up\n\n*Note I'm in the process of moving this to flask to make it easier to deploy*\n\n## Getting the project downloaded\n\nFirst thing you need to do is to get the code on your local machine, there are a few requirements though\n\n1) Python 3 (tested on python 3.11.9)\n2) Git (if you git clone the repository)\n3) Docker (for building the image)\n\nYou can either run the command:\n\n    git clone https://github.com/jakewdr/middlefm/\n\nor use the button 'Code' -\u003e 'Download Zip' on the GitHub page\n\nThen just run:\n\n    pip install -r requirements.txt\n\n## Getting API keys\n\nFirstly rename templateSecrets.json to secrets.json\n\nNext you are going to need to acquire [last.fm](https://www.last.fm/api/account/create) and [Spotify](https://developer.spotify.com/dashboard) api keys\n\n### LastFM\n\nNavigate to the API account creation page and input these in the boxes:\n\n- *Application name* = middlefm\n\n- *Application description* = Middle Layer between spotify and LastFM allowing for automatic track edits\n\n- *Callback URL* = \"https://github.com/jakewdr/middlefm\n\n- *Application Homepage* = \"https://github.com/jakewdr/middlefm/\n\nAfter doing this you will get a secret and a API key **DO NOT SHARE** them with anyone else, all you need to do then is place them in the secrets.json file in the *apiKey* and *sharedSecret*\n\n### Spotify\n\nSpotify can be a bit more difficult but the steps are largely the same. First log into the spotify dashboard for developers and click create new app, then input these details into the boxes:\n\n- *App Name* = middlefm\n- *App description* = Middle Layer between spotify and LastFM allowing for automatic track edits\n- *Redirect URIs* = https://github.com/jakewdr/middlefm/ **(PLEASE MAKE SURE IT HAS THE SLASH AT THE END)**\n- Select Web API\n\nThen as with lastfm you copy the client ID and client secret into the relevant json fields\n\n## LastFM session key\n\nNext up is authentication, run the getSessionKey.py file and follow the steps making sure to paste the information after ?token= only\n\nIn the command line you should get the session key, which you can copy and paste into the relevant field of the json file\n\n## Spotify token\n\nFor the spotify token run the main.py file and follow the details in the command prompt, if done correctly you will have a .cache file in your directory which is needed for the final steps\n\n## Docker image\n\nTo generate a docker image run:\n\n    docker build -t python-middlefm .\n\nThis allows you to host the project anywhere you like, note anytime you change your automaticEdits.json file you will need to run this command and upload the new image to your hosting platform (this can be automated)\n\nDepending on where you host the image you may need to build with this flag:\n\n    --platform=linux/amd64\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakewdr%2Fmiddlefm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakewdr%2Fmiddlefm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakewdr%2Fmiddlefm/lists"}