Files
BaraBingo/app/api/sounds/search/route.ts
2026-06-15 01:07:05 +03:00

30 lines
1.1 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
const FREESOUND_API = "https://freesound.org/apiv2/search/text/";
const API_KEY = process.env.FREESOUND_API_KEY || "";
export async function GET(req: NextRequest) {
const query = req.nextUrl.searchParams.get("q") || "";
const page = parseInt(req.nextUrl.searchParams.get("page") || "1");
if (!query) return NextResponse.json({ results: [] });
if (!API_KEY) return NextResponse.json({ error: "Freesound API key not configured" }, { status: 500 });
try {
const url = `${FREESOUND_API}?query=${encodeURIComponent(query)}&page=${page}&token=${API_KEY}&page_size=12&fields=id,name,duration,previews`;
const res = await fetch(url);
const data = await res.json();
const results = (data.results || []).map((r: any) => ({
id: r.id,
name: r.name,
duration: r.duration,
previewUrl: r.previews?.["preview-lq-mp3"] || r.previews?.["preview-hq-mp3"] || null,
}));
return NextResponse.json({ results, count: data.count || 0 });
} catch (e) {
return NextResponse.json({ error: "Freesound search failed" }, { status: 500 });
}
}