BrotherTony commited on
Commit
694aeb1
·
verified ·
1 Parent(s): 216bc98

Create main.py

Browse files
Files changed (1) hide show
  1. main.py +89 -0
main.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import requests
3
+ import random
4
+
5
+ def get_random_dataset(min_likes=None, max_likes=None, task=None, language=None):
6
+ """Get a single random dataset from HuggingFace with optional filters"""
7
+
8
+ try:
9
+ # Build API request
10
+ url = "https://huggingface.co/api/datasets"
11
+ params = {"limit": 100, "full": "true"}
12
+
13
+ # Add task filter if provided
14
+ if task:
15
+ params["filter"] = task
16
+
17
+ # Fetch datasets
18
+ response = requests.get(url, params=params, timeout=30)
19
+ response.raise_for_status()
20
+ datasets = response.json()
21
+
22
+ # Apply filters
23
+ filtered = []
24
+ for ds in datasets:
25
+ likes = ds.get("likes", 0)
26
+
27
+ # Check likes range
28
+ if min_likes and likes < min_likes:
29
+ continue
30
+ if max_likes and likes > max_likes:
31
+ continue
32
+
33
+ # Check language
34
+ if language:
35
+ langs = ds.get("cardData", {}).get("language", [])
36
+ if isinstance(langs, str):
37
+ langs = [langs]
38
+ if language not in langs:
39
+ continue
40
+
41
+ filtered.append(ds)
42
+
43
+ if not filtered:
44
+ return "No datasets found matching your filters. Try adjusting them."
45
+
46
+ # Pick random dataset
47
+ dataset = random.choice(filtered)
48
+
49
+ # Format output
50
+ result = f"""## {dataset.get('id', 'Unknown')}
51
+
52
+ **Likes:** {dataset.get('likes', 0):,}
53
+ **Downloads:** {dataset.get('downloads', 0):,}
54
+ **Author:** {dataset.get('author', 'Unknown')}
55
+
56
+ **🔗 Link:** https://huggingface.co/datasets/{dataset.get('id', '')}
57
+
58
+ **Description:**
59
+ {dataset.get('cardData', {}).get('description', 'No description available')[:300]}...
60
+
61
+ **Tags:** {', '.join(dataset.get('tags', [])[:8])}
62
+ """
63
+ return result
64
+
65
+ except Exception as e:
66
+ return f"Error: {str(e)}"
67
+
68
+
69
+ with gr.Blocks(title="Random HF Dataset Picker") as app:
70
+ gr.Markdown("#Random HuggingFace Dataset Picker")
71
+ gr.Markdown("Pick a completely random dataset with optional filters")
72
+
73
+ with gr.Row():
74
+ min_likes = gr.Number(label="Min Likes (optional)", precision=0)
75
+ max_likes = gr.Number(label="Max Likes (optional)", precision=0)
76
+
77
+ task = gr.Textbox(label="Task (optional)", placeholder="e.g., text-classification")
78
+ language = gr.Textbox(label="Language Code (optional)", placeholder="e.g., en")
79
+
80
+ btn = gr.Button("Pick Random Dataset", variant="primary")
81
+ output = gr.Markdown()
82
+
83
+ btn.click(
84
+ fn=get_random_dataset,
85
+ inputs=[min_likes, max_likes, task, language],
86
+ outputs=output
87
+ )
88
+
89
+ app.launch()