| | import streamlit as st |
| | from huggingface_hub import HfApi |
| | import pandas as pd |
| |
|
| | |
| | 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: |
| | |
| | models = api.list_models(author=username) |
| | datasets = api.list_datasets(author=username) |
| | spaces = api.list_spaces(author=username) |
| | |
| | return { |
| | "models": models, |
| | "datasets": datasets, |
| | "spaces": spaces |
| | } |
| | except Exception as e: |
| | st.error(f"Error fetching content for {username}: {str(e)}") |
| | return None |
| |
|
| | st.title("Hugging Face User Content Display") |
| |
|
| | |
| | default_users_str = "\n".join(default_users["users"]) |
| |
|
| | |
| | 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 = [] |
| |
|
| | progress_bar = st.progress(0) |
| | for i, username in enumerate(username_list): |
| | content = get_user_content(username) |
| | if content: |
| | profile_link = f"https://huggingface.co/{username}" |
| | profile_emoji = "🔗" |
| | |
| | models = [f"[{model.modelId}](https://huggingface.co/{model.modelId})" for model in content['models']] |
| | datasets = [f"[{dataset.id}](https://huggingface.co/datasets/{dataset.id})" for dataset in content['datasets']] |
| | spaces = [f"[{space.id}](https://huggingface.co/spaces/{space.id})" for space in content['spaces']] |
| |
|
| | results.append({ |
| | "Hugging Face": username, |
| | "Profile Link": f"[{profile_emoji} Profile]({profile_link})", |
| | "Models": models, |
| | "Datasets": datasets, |
| | "Spaces": spaces |
| | }) |
| | else: |
| | results.append({"Hugging Face": username, "Error": "User content not found"}) |
| | progress_bar.progress((i + 1) / len(username_list)) |
| |
|
| | st.markdown("### User Content Overview") |
| | for result in results: |
| | if "Error" not in result: |
| | st.markdown(f"**{result['Hugging Face']}** {result['Profile Link']}") |
| | st.markdown("**Models:**") |
| | st.markdown("\n".join(result["Models"]) if result["Models"] else "No models found") |
| | st.markdown("**Datasets:**") |
| | st.markdown("\n".join(result["Datasets"]) if result["Datasets"] else "No datasets found") |
| | st.markdown("**Spaces:**") |
| | st.markdown("\n".join(result["Spaces"]) if result["Spaces"] else "No spaces found") |
| | st.markdown("---") |
| | else: |
| | st.warning(f"{result['Hugging Face']}: {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 bar shows the status of content retrieval. |
| | """) |
| |
|