Files
Lyra/web/src/app/api/discover/search/route.ts
T
Jonathan bf868829d8 feat(discovery): GET /api/discover/search interactive seed search
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 00:34:28 +02:00

25 lines
809 B
TypeScript

import { searchArtists } from "@/lib/musicbrainz";
import { similarArtists } from "@/lib/listenbrainz";
export async function GET(request: Request) {
const artist = new URL(request.url).searchParams.get("artist");
if (!artist || !artist.trim()) {
return Response.json({ error: "artist is required" }, { status: 400 });
}
let hits;
try {
hits = await searchArtists(artist.trim());
} catch {
return Response.json({ error: "MusicBrainz unavailable" }, { status: 502 });
}
if (hits.length === 0) return Response.json({ seed: null, similar: [] });
const seed = hits[0];
let similar;
try {
similar = await similarArtists(seed.mbid);
} catch {
return Response.json({ error: "ListenBrainz unavailable" }, { status: 502 });
}
return Response.json({ seed, similar });
}