Spaces:
Running
Running
import { ProviderInfo, ModelData } from "../types/heatmap"; | |
export async function fetchUserData(authors: string[]) { | |
const primaryAuthor = authors[0]; | |
try { | |
const response = await fetch(`https://huggingface.co/api/users/${primaryAuthor}/overview`); | |
const data = await response.json(); | |
return { | |
fullName: data.fullname || primaryAuthor, | |
avatarUrl: data.avatarUrl || null, | |
}; | |
} catch (error) { | |
console.error(`Error fetching user data for ${primaryAuthor}:`, error); | |
return { | |
fullName: primaryAuthor, | |
avatarUrl: null, | |
}; | |
} | |
} | |
export async function fetchAllProvidersData(providers: ProviderInfo[]): Promise<ProviderInfo[]> { | |
return Promise.all(providers.map(async (providerInfo) => { | |
const { fullName, avatarUrl } = await fetchUserData(providerInfo.authors); | |
return { | |
...providerInfo, | |
fullName, | |
avatarUrl: avatarUrl || null | |
}; | |
})); | |
} | |
export async function fetchAuthorData(author: string): Promise<ModelData[]> { | |
const entityTypes = ["models", "datasets", "spaces"] as const; | |
try { | |
const allData = await Promise.all( | |
entityTypes.map(async (type) => { | |
const response = await fetch( | |
`https://huggingface.co/api/${type}?author=${author}&sort=createdAt&direction=-1` | |
); | |
if (!response.ok) { | |
throw new Error(`HTTP error! status: ${response.status}`); | |
} | |
const data = await response.json(); | |
return data.map((item: any): ModelData => ({ | |
createdAt: item.createdAt, | |
id: item.id, | |
})); | |
}) | |
); | |
return allData.flat(); | |
} catch (error) { | |
console.error(`Error fetching data for author ${author}:`, error); | |
return []; | |
} | |
} | |
export async function fetchAllAuthorsData(authors: string[]): Promise<ModelData[]> { | |
try { | |
const allData = await Promise.all( | |
authors.map(async (author) => await fetchAuthorData(author)) | |
); | |
return allData.flat(); | |
} catch (error) { | |
console.error("Error fetching data for all authors:", error); | |
return []; | |
} | |
} |