{"id":15718255,"url":"https://github.com/sajattack/openplaylister","last_synced_at":"2025-03-30T22:22:15.291Z","repository":{"id":221899955,"uuid":"755703174","full_name":"sajattack/openplaylister","owner":"sajattack","description":"A free and open source AI-driven playlist generator that learns your listening habits and can be run on local music files.","archived":false,"fork":false,"pushed_at":"2024-02-11T02:12:38.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T05:33:29.440Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/sajattack.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":"2024-02-10T20:57:18.000Z","updated_at":"2024-02-11T04:54:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"b2c1a22f-0f6f-42e2-8134-230e15cb6753","html_url":"https://github.com/sajattack/openplaylister","commit_stats":null,"previous_names":["sajattack/openplaylister"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sajattack%2Fopenplaylister","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sajattack%2Fopenplaylister/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sajattack%2Fopenplaylister/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sajattack%2Fopenplaylister/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sajattack","download_url":"https://codeload.github.com/sajattack/openplaylister/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246386448,"owners_count":20768835,"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":[],"created_at":"2024-10-03T21:52:34.789Z","updated_at":"2025-03-30T22:22:15.266Z","avatar_url":"https://github.com/sajattack.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenPlaylister\n\nA free and open source AI-driven playlist generator that learns your listening\nhabits and can be run on local music files.\n\nThink of it as a streaming service playlist recommendation algorithm that runs\non a local file-based music collection.\n\n## Scripts \n- `preprocess.sh` - processes a listenbrainz json into a sequence of track ids which we will use as tokens for our seq2seq ai\n- `train.sh` - trains the ai model to recognize sequence patterns in your listening history\n- `generate.sh` - runs inference on the ai model (outputs new sequences of track ids which will become our playlists\n- `index_songs.py` - associates musicbrainz track ids to local files\n- `write_playlist.py` - parses the output of generate.sh and produces an m3u playlist file using the file index\n\n## How to use\n- create a python virutalenv and install requirements.txt\n- Track or import your listening history using https://listenbrainz.org\n- export your listening history as a json file https://listenbrainz.org/settings/export/\n- run preprocess.sh on your json file\n- train the model using train.sh\n- use musicbrainz picard to write musicbrainz id3 tags to your local music collection https://picard.musicbrainz.org/\n- use `index_songs.py` to read these id3 tags and map ids to local files\n- pick a musicbrainz track id to seed the playlist with, example `export mbid=daca2503-2393-40af-8873-39f488c55944`\n- run `echo ${mbid} | ./generate.sh | ./write_playlist.py` to generate an m3u playlist file\n- open the m3u file using your music player\n\n\n## Note\nCurrently this will always produce the same output for a given input.\nWhich is not ideal for a playlist generator. I'll try to see if I can\nspice things up a bit in future commits.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsajattack%2Fopenplaylister","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsajattack%2Fopenplaylister","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsajattack%2Fopenplaylister/lists"}