File size: 2,083 Bytes
4d3a37a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import requests
import re


def fetch_models(author: str = "SaProtHub") -> list:
    """

    Retrieve models belonging to a specific author



    Args:

        author: Author name



    Returns:

        models: List of models

    """

    url = f"https://hf-mirror.com/api/models?author={author}"
    response = requests.get(url)
    models_dict = response.json()
    models = [item["id"] for item in models_dict]

    return models


def fetch_datasets(author: str = "SaProtHub") -> list:
    """

    Retrieve datasets belonging to a specific author



    Args:

        author: Author name



    Returns:

        datasets: List of datasets

    """

    url = f"https://hf-mirror.com/api/datasets?author={author}"
    response = requests.get(url)
    datasets_dict = response.json()
    datasets = [item["id"] for item in datasets_dict]

    return datasets


def fetch_readme(card_id: str, card_type: str) -> str:
    """

    Retrieve the README file of a model or dataset



    Args:

        card_id: Model or dataset ID

        card_type: Type of card, either "model" or "dataset"



    Returns:

        readme: README text

    """
    if card_type == "model":
        url = f"https://hf-mirror.com/{card_id}/raw/main/README.md"
    else:
        url = f"https://hf-mirror.com/datasets/{card_id}/raw/main/README.md"

    response = requests.get(url)
    readme = response.text.split("---")[-1]

    return readme


def set_text_bg_color(pattern: str, text: str, color: str = "yellow") -> str:
    """

    Set the background color of a pattern in a text



    Args:

        pattern: Pattern to highlight

        text: Text to search

        color: Background color



    Returns:

        text: Text with highlighted pattern

    """

    # Find all matches, ignoring case
    matches = set(re.findall(pattern, text, flags=re.IGNORECASE))

    # Highlight all matches
    for match in matches:
        text = text.replace(match, f'<span style="background-color:{color}">{match}</span>')

    return text