Promote test → main: SongStats research migration (api#635)

Merged
SW
5mo ago
+1353-2300

Promotes the merged SongStats research migration (#635) and any other test-branch commits to main.

  • /research/* now backed by SongStats (16 endpoints), Chartmetric fully removed.
  • playlists returns real placements; rank endpoint removed (SongStats has no rank).
  • SRP refactor (one exported function per file); legacy SongStats_API dropped.

Verified on preview: full matrix matches the merged docs (docs#233 + docs#234). See #635 for the verification matrix.

🤖 Generated with Claude Code


Summary by cubic

Promotes the SongStats research migration to main: all /research/* endpoints now use SongStats, and all Chartmetric code/tests are removed. Playlists and metrics return accurate data with longer timeouts for slow provider calls.

  • New Features

    • SongStats backs 16 endpoints; accepts provider‑neutral artist_id/id (not Chartmetric IDs).
    • /research/playlists: returns real placements; status maps to SongStats scope; maxDuration=60.
    • /research/metrics: fetched directly from SongStats; supports radio and sxm; maxDuration=60.
    • Cleaner SRP: one exported function per file plus new SongStats mappers/normalizers.
  • Migration

    • Set SONGSTATS_API_KEY in env; remove Chartmetric env vars.
    • Removed legacy/unsupported routes: /research/rank, /charts, /cities, /curator, /discover, /festivals, /genres, /instagram-posts, /playlist, /radio, /venues.
    • Client changes: search no longer accepts beta/platforms; use provider IDs for artist_id/id; lookup accepts Spotify URL or spotifyId.