Spaces:
Running
Running
import { SpaceProps } from "./type"; | |
export const fetchAllPages = async () => { | |
const filter_key = "zero-a10g"; | |
const pageNumbers = Array.from({ length: 200 }, (_, i) => i); | |
const urls = pageNumbers.map(async (pageNumber) => { | |
const url = `https://huggingface.co/spaces-json?p=${pageNumber}&sort=trending`; | |
const response = await fetch(url); | |
const json = await response.json(); | |
return json?.spaces ?? []; | |
}); | |
const jsonResponses = await Promise.all(urls); | |
const spaces = jsonResponses.flat()?.filter((space) => space?.runtime?.hardware?.current === filter_key); | |
return sortByCreatedAt(spaces); | |
}; | |
export const sortByCreatedAt = (spaces: SpaceProps[]) => { | |
return spaces.sort((a, b) => { | |
return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); | |
}); | |
} | |
export const sortByLikes = (spaces: SpaceProps[]) => { | |
return spaces.sort((a, b) => { | |
return b.likes - a.likes; | |
}); | |
} |