Sahil commited on
Commit
8d2079d
·
verified ·
1 Parent(s): 60580b4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -9
app.py CHANGED
@@ -256,39 +256,76 @@ def upload():
256
  def gallery():
257
  try:
258
  offset = int(request.args.get("offset", 0))
259
- limit = int(request.args.get("limit", 20))
260
  except:
261
  offset = 0
262
- limit = 20
 
 
 
 
 
 
 
263
 
264
- # Collect all items
265
  items = []
266
 
 
267
  for entry in index_map:
268
  fn = entry["filename"]
269
  md = metadata.get(fn, {})
270
- items.append({
271
  "url": md.get("url", dataset_url(fn)),
272
  "filename": fn,
273
  "title": md.get("title", entry.get("title", "Untitled")),
274
  "description": md.get("description", entry.get("description", "")),
275
  "category": md.get("category", entry.get("category", "Uncategorized")),
276
  "uploader": md.get("uploader", "Anonymous"),
277
- "filetype": md.get("filetype", entry.get("filetype", "image"))
278
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
 
280
  # Add videos not in index_map
281
  for fn, md in metadata.items():
282
  if md.get("filetype") == "video" and not any(it["filename"] == fn for it in items):
283
- items.append({
284
  "url": md.get("url", dataset_url(fn)),
285
  "filename": fn,
286
  "title": md.get("title", "Untitled"),
287
  "description": md.get("description", ""),
288
  "category": md.get("category", "Uncategorized"),
289
  "uploader": md.get("uploader", "Anonymous"),
290
- "filetype": "video"
291
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
 
293
  items.sort(key=lambda x: x["filename"], reverse=True)
294
  paged_items = items[offset: offset + limit]
 
256
  def gallery():
257
  try:
258
  offset = int(request.args.get("offset", 0))
259
+ limit = int(request.args.get("limit", 10))
260
  except:
261
  offset = 0
262
+ limit = 10
263
+
264
+ # --- Get filters from query params ---
265
+ text_filter = request.args.get("text", "").lower()
266
+ uploader_filter = request.args.get("uploader", "").lower()
267
+ category_filter = request.args.get("category", "").lower()
268
+ filetype_filter = request.args.get("filetype", "").lower()
269
+ tags_filter = [t.strip().lower() for t in request.args.get("tags", "").split(",") if t.strip()]
270
 
 
271
  items = []
272
 
273
+ # Images from index_map
274
  for entry in index_map:
275
  fn = entry["filename"]
276
  md = metadata.get(fn, {})
277
+ item = {
278
  "url": md.get("url", dataset_url(fn)),
279
  "filename": fn,
280
  "title": md.get("title", entry.get("title", "Untitled")),
281
  "description": md.get("description", entry.get("description", "")),
282
  "category": md.get("category", entry.get("category", "Uncategorized")),
283
  "uploader": md.get("uploader", "Anonymous"),
284
+ "filetype": md.get("filetype", entry.get("filetype", "image")),
285
+ "tags": md.get("tags", [])
286
+ }
287
+
288
+ # --- Apply filters ---
289
+ if text_filter and text_filter not in item["title"].lower() and text_filter not in item["description"].lower():
290
+ continue
291
+ if uploader_filter and uploader_filter != item["uploader"].lower():
292
+ continue
293
+ if category_filter and category_filter != item["category"].lower():
294
+ continue
295
+ if filetype_filter and filetype_filter != item["filetype"].lower():
296
+ continue
297
+ if tags_filter and not any(t.lower() in [tag.lower() for tag in item.get("tags", [])] for t in tags_filter):
298
+ continue
299
+
300
+ items.append(item)
301
 
302
  # Add videos not in index_map
303
  for fn, md in metadata.items():
304
  if md.get("filetype") == "video" and not any(it["filename"] == fn for it in items):
305
+ item = {
306
  "url": md.get("url", dataset_url(fn)),
307
  "filename": fn,
308
  "title": md.get("title", "Untitled"),
309
  "description": md.get("description", ""),
310
  "category": md.get("category", "Uncategorized"),
311
  "uploader": md.get("uploader", "Anonymous"),
312
+ "filetype": "video",
313
+ "tags": md.get("tags", [])
314
+ }
315
+
316
+ # --- Apply filters ---
317
+ if text_filter and text_filter not in item["title"].lower() and text_filter not in item["description"].lower():
318
+ continue
319
+ if uploader_filter and uploader_filter != item["uploader"].lower():
320
+ continue
321
+ if category_filter and category_filter != item["category"].lower():
322
+ continue
323
+ if filetype_filter and filetype_filter != item["filetype"].lower():
324
+ continue
325
+ if tags_filter and not any(t.lower() in [tag.lower() for tag in item.get("tags", [])] for t in tags_filter):
326
+ continue
327
+
328
+ items.append(item)
329
 
330
  items.sort(key=lambda x: x["filename"], reverse=True)
331
  paged_items = items[offset: offset + limit]