Personal music rating and playlist generation system that combines iTunes listening history with Pitchfork reviews.
- Computes a personal engagement score per album based on your play/skip behavior
- Matches your library against ~29k Pitchfork reviews
- Surfaces insights: your top albums, critic picks you've ignored, hidden gems, albums worth revisiting
- Generates mood-based playlists using k-means clustering on genre, listening behavior, and review text sentiment
- Exports playlists as M3U files for import into Music.app
- Export your iTunes library: Music.app → File → Library → Export Library → save to
data/library/ - Run the Pitchfork scraper to collect reviews:
python scraper.py - Analyze audio features:
python audio_features.py - Generate playlists:
python playlists.py - Launch the web app:
streamlit run app.py
python playlists.py # generate playlists (k=9 default)
python playlists.py --k 6 --size 30 # custom k and playlist size
python playlists.py --optimize # find optimal k via silhouette score
python export_playlist.py # list available playlists
python export_playlist.py "Alternative" # export one playlist as M3U
python export_playlist.py --all # export all playlists
python audio_features.py # analyze audio features (run once)
python scraper.py # scrape new Pitchfork reviews
streamlit run app.py # web UIAll data lives in data/ (gitignored):
data/library/— iTunes XML exports (drop new exports here, latest is auto-selected)data/reviews/— Pitchfork review CSVsdata/playlists/— generated playlist CSVsdata/m3u/— exported M3U files for Music.app