rahul7star commited on
Commit
575ae36
·
verified ·
1 Parent(s): dec6725

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -56
app.py CHANGED
@@ -1,4 +1,3 @@
1
- import os
2
  import math
3
  import gradio as gr
4
  import pandas as pd
@@ -14,25 +13,21 @@ VIDEO_COL = "video"
14
  TEXT_COL = "text"
15
  DATE_COL = "date"
16
 
17
- HF_TOKEN = os.getenv("HF_TOKEN")
18
- if HF_TOKEN is None:
19
- raise RuntimeError("HF_TOKEN environment variable not set")
20
-
21
  # ======================================================
22
  # LOAD DATA (PRIVATE DATASET)
 
23
  # ======================================================
24
  csv_path = hf_hub_download(
25
  repo_id=DATASET_REPO,
26
  filename=CSV_FILE,
27
- repo_type="dataset",
28
- token=HF_TOKEN
29
  )
30
 
31
  df = pd.read_csv(csv_path)
32
  df = df[[VIDEO_COL, TEXT_COL, DATE_COL]].dropna().reset_index(drop=True)
33
 
34
  # ======================================================
35
- # PAGINATION LOGIC
36
  # ======================================================
37
  def render_grid(page, page_size):
38
  page = int(page)
@@ -40,7 +35,6 @@ def render_grid(page, page_size):
40
 
41
  total_items = len(df)
42
  total_pages = max(1, math.ceil(total_items / page_size))
43
-
44
  page = max(0, min(page, total_pages - 1))
45
 
46
  start = page * page_size
@@ -72,7 +66,6 @@ def render_grid(page, page_size):
72
  Page {page + 1} / {total_pages}
73
  </div>
74
  """
75
-
76
  return html, page
77
 
78
 
@@ -96,30 +89,21 @@ css = """
96
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
97
  gap: 18px;
98
  }
99
-
100
  .card {
101
  background: #0b1220;
102
  border-radius: 14px;
103
  padding: 12px;
104
  box-shadow: 0 10px 30px rgba(0,0,0,0.45);
105
  }
106
-
107
  .card video {
108
  width: 100%;
109
  border-radius: 12px;
110
- outline: none;
111
  }
112
-
113
- .meta {
114
- margin-top: 10px;
115
- }
116
-
117
  .date {
118
  font-size: 12px;
119
  color: #94a3b8;
120
- margin-bottom: 4px;
121
  }
122
-
123
  .caption {
124
  font-size: 14px;
125
  color: #e5e7eb;
@@ -127,29 +111,18 @@ css = """
127
  max-height: 4.2em;
128
  overflow: hidden;
129
  }
130
-
131
  .page-info {
132
  margin-top: 14px;
133
  text-align: center;
134
  color: #c7d2fe;
135
- font-weight: 500;
136
  }
137
  """
138
 
139
  with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
140
- gr.Markdown(
141
- """
142
- # 🎬 Wan Video Dataset Showcase
143
- Browse and play videos from a **private Hugging Face dataset**.
144
- """
145
- )
146
 
147
  with gr.Row():
148
- page_size = gr.Dropdown(
149
- choices=[1, 5, 10],
150
- value=5,
151
- label="Videos per page"
152
- )
153
  page_state = gr.State(0)
154
 
155
  gallery = gr.HTML()
@@ -158,28 +131,9 @@ with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
158
  prev_btn = gr.Button("⬅ Previous")
159
  next_btn = gr.Button("Next ➡")
160
 
161
- demo.load(
162
- render_grid,
163
- inputs=[page_state, page_size],
164
- outputs=[gallery, page_state]
165
- )
166
-
167
- next_btn.click(
168
- next_page,
169
- inputs=[page_state, page_size],
170
- outputs=[gallery, page_state]
171
- )
172
-
173
- prev_btn.click(
174
- prev_page,
175
- inputs=[page_state, page_size],
176
- outputs=[gallery, page_state]
177
- )
178
-
179
- page_size.change(
180
- reset_page,
181
- inputs=[page_size],
182
- outputs=[gallery, page_state]
183
- )
184
 
185
  demo.launch()
 
 
1
  import math
2
  import gradio as gr
3
  import pandas as pd
 
13
  TEXT_COL = "text"
14
  DATE_COL = "date"
15
 
 
 
 
 
16
  # ======================================================
17
  # LOAD DATA (PRIVATE DATASET)
18
+ # Uses HUGGINGFACE_HUB_TOKEN automatically
19
  # ======================================================
20
  csv_path = hf_hub_download(
21
  repo_id=DATASET_REPO,
22
  filename=CSV_FILE,
23
+ repo_type="dataset"
 
24
  )
25
 
26
  df = pd.read_csv(csv_path)
27
  df = df[[VIDEO_COL, TEXT_COL, DATE_COL]].dropna().reset_index(drop=True)
28
 
29
  # ======================================================
30
+ # PAGINATION
31
  # ======================================================
32
  def render_grid(page, page_size):
33
  page = int(page)
 
35
 
36
  total_items = len(df)
37
  total_pages = max(1, math.ceil(total_items / page_size))
 
38
  page = max(0, min(page, total_pages - 1))
39
 
40
  start = page * page_size
 
66
  Page {page + 1} / {total_pages}
67
  </div>
68
  """
 
69
  return html, page
70
 
71
 
 
89
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
90
  gap: 18px;
91
  }
 
92
  .card {
93
  background: #0b1220;
94
  border-radius: 14px;
95
  padding: 12px;
96
  box-shadow: 0 10px 30px rgba(0,0,0,0.45);
97
  }
 
98
  .card video {
99
  width: 100%;
100
  border-radius: 12px;
 
101
  }
102
+ .meta { margin-top: 10px; }
 
 
 
 
103
  .date {
104
  font-size: 12px;
105
  color: #94a3b8;
 
106
  }
 
107
  .caption {
108
  font-size: 14px;
109
  color: #e5e7eb;
 
111
  max-height: 4.2em;
112
  overflow: hidden;
113
  }
 
114
  .page-info {
115
  margin-top: 14px;
116
  text-align: center;
117
  color: #c7d2fe;
 
118
  }
119
  """
120
 
121
  with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
122
+ gr.Markdown("# 🎬 Wan Video Dataset Showcase")
 
 
 
 
 
123
 
124
  with gr.Row():
125
+ page_size = gr.Dropdown([1, 5, 10], value=5, label="Videos per page")
 
 
 
 
126
  page_state = gr.State(0)
127
 
128
  gallery = gr.HTML()
 
131
  prev_btn = gr.Button("⬅ Previous")
132
  next_btn = gr.Button("Next ➡")
133
 
134
+ demo.load(render_grid, [page_state, page_size], [gallery, page_state])
135
+ next_btn.click(next_page, [page_state, page_size], [gallery, page_state])
136
+ prev_btn.click(prev_page, [page_state, page_size], [gallery, page_state])
137
+ page_size.change(reset_page, [page_size], [gallery, page_state])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
  demo.launch()