bf868829d8
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
25 lines
809 B
TypeScript
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 });
|
|
}
|