You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.3 KiB
Markdown
93 lines
2.3 KiB
Markdown
# Spotify Top Tracks CLI
|
|
|
|
Find the most popular songs for any artist, or scrape a concert/festival webpage to discover artists and their top tracks.
|
|
|
|
## Working directory
|
|
|
|
```
|
|
/Users/oabrivard/Projects/javascript/song-popularity
|
|
```
|
|
|
|
## Commands
|
|
|
|
### 1. Top tracks for a single artist
|
|
|
|
```bash
|
|
node get_popularity.js "Artist Name"
|
|
node get_popularity.js "Artist Name" --top 5
|
|
```
|
|
|
|
Output (stdout, JSON):
|
|
```json
|
|
{
|
|
"artist": "Radiohead",
|
|
"tracks": [
|
|
{ "name": "Creep", "album": "Pablo Honey", "uri": "spotify:track:..." },
|
|
{ "name": "No Surprises", "album": "OK Computer", "uri": "spotify:track:..." },
|
|
{ "name": "Let Down", "album": "OK Computer", "uri": "spotify:track:..." }
|
|
]
|
|
}
|
|
```
|
|
|
|
### 2. Scrape a URL and get top tracks for each artist
|
|
|
|
```bash
|
|
node get_popularity.js --url "https://www.example-festival.com/lineup" --llm anthropic
|
|
node get_popularity.js --url "https://www.example-festival.com/lineup" --llm openai --top 5
|
|
```
|
|
|
|
Output (stdout, JSON):
|
|
```json
|
|
{
|
|
"artists": [
|
|
{
|
|
"artist": "The Cure",
|
|
"tracks": [
|
|
{ "name": "Friday I'm in Love", "album": "Wish", "uri": "spotify:track:..." }
|
|
]
|
|
},
|
|
{
|
|
"artist": "Radiohead",
|
|
"tracks": [
|
|
{ "name": "Creep", "album": "Pablo Honey", "uri": "spotify:track:..." }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### 3. Scrape + create a Spotify playlist
|
|
|
|
```bash
|
|
node get_popularity.js --url "https://www.example-festival.com/lineup" --llm anthropic --create_playlist
|
|
```
|
|
|
|
Adds a `playlist` field to the output:
|
|
```json
|
|
{
|
|
"artists": [ ... ],
|
|
"playlist": {
|
|
"name": "www.example-festival.com_lineup",
|
|
"url": "https://open.spotify.com/playlist/..."
|
|
}
|
|
}
|
|
```
|
|
|
|
Note: `--create_playlist` requires browser-based Spotify OAuth authorization.
|
|
|
|
## Parameters
|
|
|
|
| Parameter | Required | Default | Description |
|
|
|---|---|---|---|
|
|
| (positional) | No | "Radiohead" | Artist name (single artist mode) |
|
|
| `--url` | No | - | URL to scrape for artist names |
|
|
| `--top N` | No | 3 | Number of top tracks per artist |
|
|
| `--llm` | No | anthropic | LLM provider for scraping (`anthropic` or `openai`) |
|
|
| `--create_playlist` | No | - | Create a Spotify playlist (requires `--url`) |
|
|
|
|
## Notes
|
|
|
|
- Progress messages go to stderr; JSON result goes to stdout
|
|
- Use `2>/dev/null` to suppress progress messages
|
|
- The Spotify API is rate-limited to 2 requests per second
|