https://github.com/sajattack/openplaylister
A free and open source AI-driven playlist generator that learns your listening habits and can be run on local music files.
https://github.com/sajattack/openplaylister
Last synced: about 1 year ago
JSON representation
A free and open source AI-driven playlist generator that learns your listening habits and can be run on local music files.
- Host: GitHub
- URL: https://github.com/sajattack/openplaylister
- Owner: sajattack
- License: mit
- Created: 2024-02-10T20:57:18.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-02-11T02:12:38.000Z (over 2 years ago)
- Last Synced: 2025-03-25T05:33:29.440Z (over 1 year ago)
- Language: Shell
- Size: 6.84 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenPlaylister
A free and open source AI-driven playlist generator that learns your listening
habits and can be run on local music files.
Think of it as a streaming service playlist recommendation algorithm that runs
on a local file-based music collection.
## Scripts
- `preprocess.sh` - processes a listenbrainz json into a sequence of track ids which we will use as tokens for our seq2seq ai
- `train.sh` - trains the ai model to recognize sequence patterns in your listening history
- `generate.sh` - runs inference on the ai model (outputs new sequences of track ids which will become our playlists
- `index_songs.py` - associates musicbrainz track ids to local files
- `write_playlist.py` - parses the output of generate.sh and produces an m3u playlist file using the file index
## How to use
- create a python virutalenv and install requirements.txt
- Track or import your listening history using https://listenbrainz.org
- export your listening history as a json file https://listenbrainz.org/settings/export/
- run preprocess.sh on your json file
- train the model using train.sh
- use musicbrainz picard to write musicbrainz id3 tags to your local music collection https://picard.musicbrainz.org/
- use `index_songs.py` to read these id3 tags and map ids to local files
- pick a musicbrainz track id to seed the playlist with, example `export mbid=daca2503-2393-40af-8873-39f488c55944`
- run `echo ${mbid} | ./generate.sh | ./write_playlist.py` to generate an m3u playlist file
- open the m3u file using your music player
## Note
Currently this will always produce the same output for a given input.
Which is not ideal for a playlist generator. I'll try to see if I can
spice things up a bit in future commits.