Spaces:
Runtime error
Runtime error
import streamlit as st | |
from huggingface_hub import HfApi | |
import pandas as pd | |
from concurrent.futures import ThreadPoolExecutor, as_completed | |
# Default list of Hugging Face usernames | |
default_users = { | |
"users": [ | |
"awacke1", "rogerxavier", "jonatasgrosman", "kenshinn", "Csplk", "DavidVivancos", | |
"cdminix", "Jaward", "TuringsSolutions", "Severian", "Wauplin", | |
"phosseini", "Malikeh1375", "gokaygokay", "MoritzLaurer", "mrm8488", | |
"TheBloke", "lhoestq", "xw-eric", "Paul", "Muennighoff", | |
"ccdv", "haonan-li", "chansung", "lukaemon", "hails", | |
"pharmapsychotic", "KingNish", "merve", "ameerazam08", "ashleykleynhans" | |
] | |
} | |
api = HfApi() | |
def get_user_content(username): | |
try: | |
# Fetch models, datasets, and spaces associated with the user | |
models = api.list_models(author=username) | |
datasets = api.list_datasets(author=username) | |
spaces = api.list_spaces(author=username) | |
return { | |
"username": username, | |
"models": models, | |
"datasets": datasets, | |
"spaces": spaces | |
} | |
except Exception as e: | |
return {"username": username, "error": str(e)} | |
st.title("Hugging Face User Content Display") | |
# Convert the default users list to a string | |
default_users_str = "\n".join(default_users["users"]) | |
# Text area with default list of usernames | |
usernames = st.text_area("Enter Hugging Face usernames (one per line):", value=default_users_str, height=300) | |
if st.button("Show User Content"): | |
if usernames: | |
username_list = [username.strip() for username in usernames.split('\n') if username.strip()] | |
results = [] | |
status_bars = {} | |
# Set up the progress bars for each user | |
for username in username_list: | |
status_bars[username] = st.progress(0, text=f"Fetching data for {username}...") | |
def fetch_and_display(username): | |
content = get_user_content(username) | |
status_bars[username].progress(100, text=f"Data fetched for {username}") | |
return content | |
# Use ThreadPoolExecutor for concurrent execution | |
with ThreadPoolExecutor(max_workers=len(username_list)) as executor: | |
future_to_username = {executor.submit(fetch_and_display, username): username for username in username_list} | |
for future in as_completed(future_to_username): | |
result = future.result() | |
results.append(result) | |
st.markdown("### User Content Overview") | |
for result in results: | |
username = result["username"] | |
if "error" not in result: | |
profile_link = f"https://huggingface.co/{username}" | |
profile_emoji = "🔗" | |
models = [f"[{model.modelId}](https://huggingface.co/{model.modelId})" for model in result['models']] | |
datasets = [f"[{dataset.id}](https://huggingface.co/datasets/{dataset.id})" for dataset in result['datasets']] | |
spaces = [f"[{space.id}](https://huggingface.co/spaces/{space.id})" for space in result['spaces']] | |
st.markdown(f"**{username}** {profile_emoji} [Profile]({profile_link})") | |
st.markdown("**Models:**") | |
st.markdown("\n".join(models) if models else "No models found") | |
st.markdown("**Datasets:**") | |
st.markdown("\n".join(datasets) if datasets else "No datasets found") | |
st.markdown("**Spaces:**") | |
st.markdown("\n".join(spaces) if spaces else "No spaces found") | |
st.markdown("---") | |
else: | |
st.warning(f"{username}: {result['error']}") | |
else: | |
st.warning("Please enter at least one username.") | |
st.sidebar.markdown(""" | |
## How to use: | |
1. The text area is pre-filled with a list of Hugging Face usernames. You can edit this list or add more usernames. | |
2. Click 'Show User Content'. | |
3. View the user's models, datasets, and spaces along with a link to their Hugging Face profile. | |
4. The progress bars show the status of content retrieval for each user. | |
""") | |