cfahlgren1's picture
cfahlgren1 HF staff
remove requirement for name, get user full name and avatar url
eda28cd
raw
history blame
2.08 kB
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 [];
}
}