Skip to content

2.4

Choose a tag to compare

@ClaytonWas ClaytonWas released this 27 Nov 03:52
· 15 commits to main since this release

Release Notes - Version 2.4

🎵 Major Improvements to Music Recommendation Engine

🎨 Artist Diversity Enhancement

  • Problem Solved: Recommendations were showing too many tracks from the same artists (e.g., multiple Olivia Dean tracks)
  • Solution: New artist diversity algorithm ensures recommendations come from 20+ different artists
  • How it works:
    • Groups tracks by artist before selection
    • Takes top track from each unique artist (up to 20 artists)
    • Fills pool with remaining top-scored tracks (up to 30 total)
    • Randomly selects from this diverse pool
  • Result: More variety in recommendations, including classic artists like Aretha Franklin, Marvin Gaye, and other soul/R&B legends

Enhanced Multi-Genre Search

  • Multi-genre support: Now searches using 1, 2, or 3 genres simultaneously for more accurate matching
  • Random genre selection: Varied search strategies for diverse results:
    • 40% chance: Uses all available genre combinations
    • 30% chance: Uses 2 strategies (single + multi-genre)
    • 30% chance: Uses 1 strategy (randomly selected)
  • Prioritized search order: Multi-genre searches are tried first when multiple genres are detected
  • Shuffled strategies: Selected strategies are randomly shuffled for additional variety

Improved Scoring Algorithm

  • New scoring weights:
    • 85%: Genre relevance (increased from 65% - now the primary factor)
    • 7.5%: Popularity (reduced from 30% - quality filter only)
    • 7.5%: Tempo relevance (bonus only, increased from 5%)
  • Better prioritizes tracks that match detected genres over pure popularity
  • Genre matching checks track names and artist names for genre keywords

Tempo/BPM Integration

  • Tempo keyword mapping: BPM ranges now map to relevant keywords:
    • < 70 BPM: slow, ballad, ambient, calm, peaceful
    • 70-90 BPM: chill, mellow, downtempo, laid-back
    • 90-110 BPM: moderate, steady, groovy
    • 110-130 BPM: upbeat, lively, energetic
    • 130-150 BPM: fast, energetic, intense
    • 150+ BPM: fast, intense, aggressive, high-energy
  • Sparse tempo usage: Tempo keywords used intermittently in searches to avoid over-reliance
  • Tempo scoring: Small bonus (7.5%) for tracks with tempo-related terms in names (no penalty if missing)
  • BPM number detection: Bonus for tracks with actual BPM numbers in track names (e.g., "120 BPM")

API Compatibility Updates

  • Removed deprecated APIs:
    • Spotify Recommendations API (deprecated in late 2024)
    • Spotify Audio Features API (deprecated)
  • Improved error handling: Better fallback strategies when APIs are unavailable
  • Search-based approach: Now relies exclusively on Spotify's Search API with genre filters for more reliable results
  • Better error messages: More informative logging when Spotify API calls fail

Better Genre Mapping

  • Expanded genre support: Better mapping of mood-based genres:
    • romantic → r-n-b
    • aggressive → metal
    • lo-fi → chill
  • Valid genre validation: Only uses Spotify's valid genre seeds for search filters
  • Fallback handling: Safe defaults when no valid genres are detected

🐛 Bug Fixes

  • Fixed search stopping early when first strategy found 50 tracks (now tries all strategies)
  • Fixed "chill chill" duplicate tempo keyword issue in search queries
  • Improved handling of genre combinations in search queries
  • Better error messages when Spotify API calls fail
  • Fixed popularity threshold fallback logic

🔧 Technical Changes

  • Refactored search strategy system for better maintainability
  • Added tempo keyword generation based on BPM ranges
  • Improved track scoring with genre keyword matching
  • Enhanced logging for debugging search strategies
  • Added artist diversity algorithm to all search functions (primary, fallback, playlist)
  • Improved track deduplication across multiple search strategies

📊 Performance Improvements

  • More efficient search strategy execution
  • Better track pool management (up to 30 tracks from 20+ artists)
  • Reduced redundant API calls

📝 Notes

  • The extension now works entirely with Spotify's Search API (no deprecated endpoints)
  • Genre matching is now the primary factor in track selection (85% weight)
  • Tempo is used as a bonus factor only, since tempo keywords in track names are inconsistent
  • Artist diversity ensures you won't see the same artist repeatedly in recommendations
  • Popularity threshold still provides quality filtering, but is no longer the dominant factor