armand0e's picture
init
101ebaa
import { NextResponse } from "next/server";
interface HFDataset {
id: string;
author: string;
downloads: number;
likes: number;
tags: string[];
}
let cachedDatasets: { id: string; name: string }[] | null = null;
let cacheTimestamp: number = 0;
const CACHE_DURATION = 1000 * 60 * 60; // 1 hour
export async function GET() {
try {
const now = Date.now();
if (cachedDatasets && now - cacheTimestamp < CACHE_DURATION) {
return NextResponse.json(cachedDatasets);
}
const response = await fetch(
"https://huggingface.co/api/datasets?author=TeichAI&limit=100",
{
headers: {
Accept: "application/json",
},
next: { revalidate: 3600 },
}
);
if (!response.ok) {
throw new Error(`HF API error: ${response.status}`);
}
const data: HFDataset[] = await response.json();
cachedDatasets = data.map((dataset) => ({
id: dataset.id,
name: dataset.id.replace("TeichAI/", ""),
}));
cacheTimestamp = now;
return NextResponse.json(cachedDatasets);
} catch (error) {
console.error("Error fetching TeichAI datasets:", error);
if (cachedDatasets) {
return NextResponse.json(cachedDatasets);
}
return NextResponse.json([], { status: 500 });
}
}