codewithRiz commited on
Commit
fea78ef
·
verified ·
1 Parent(s): 9d117bd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -54
app.py CHANGED
@@ -1,57 +1,64 @@
1
- from fastapi import FastAPI, HTTPException
2
- from pydantic import BaseModel
3
  import json
 
4
  from pathlib import Path
 
5
 
6
- app = FastAPI()
7
-
8
- # Path to store users (persistent across HF Spaces runs)
9
- USERS_FILE = Path("users.json")
10
-
11
- # Ensure the file exists
12
- if not USERS_FILE.exists():
13
- USERS_FILE.write_text("[]") # empty list
14
-
15
- # Pydantic model for input
16
- class User(BaseModel):
17
- username: str
18
- num1: float
19
- num2: float
20
-
21
- # Helper function to load users
22
- def load_users():
23
- with USERS_FILE.open("r") as f:
24
- return json.load(f)
25
-
26
- # Helper function to save users
27
- def save_users(users):
28
- with USERS_FILE.open("w") as f:
29
- json.dump(users, f, indent=2)
30
-
31
- # Endpoint to add user and sum numbers
32
- @app.post("/add-user")
33
- def add_user(user: User):
34
- users = load_users()
35
-
36
- # Check if username already exists
37
- if any(u["username"] == user.username for u in users):
38
- raise HTTPException(status_code=400, detail="Username already exists")
39
-
40
- # Add user
41
- users.append({
42
- "username": user.username,
43
- "num1": user.num1,
44
- "num2": user.num2,
45
- "sum": user.num1 + user.num2
46
- })
47
- save_users(users)
48
-
49
- return {
50
- "message": f"User {user.username} added successfully!",
51
- "sum": user.num1 + user.num2
52
- }
53
-
54
- # Endpoint to list all users
55
- @app.get("/users")
56
- def get_users():
57
- return load_users()
 
 
 
 
 
 
 
 
 
 
1
  import json
2
+ from datetime import datetime
3
  from pathlib import Path
4
+ from uuid import uuid4
5
 
6
+ import gradio as gr
7
+ from PIL import Image
8
+
9
+ from huggingface_hub import CommitScheduler
10
+
11
+ # ---------------- Dataset setup ----------------
12
+ IMAGE_DATASET_DIR = Path("image_dataset") / f"train-{uuid4()}"
13
+ IMAGE_DATASET_DIR.mkdir(parents=True, exist_ok=True)
14
+ IMAGE_JSONL_PATH = IMAGE_DATASET_DIR / "metadata.jsonl"
15
+
16
+ # Scheduler for your HF dataset repo
17
+ scheduler = CommitScheduler(
18
+ repo_id="codewithRiz/Buck_data_saving", # your dataset repo
19
+ repo_type="dataset",
20
+ folder_path=IMAGE_DATASET_DIR,
21
+ path_in_repo=IMAGE_DATASET_DIR.name,
22
+ )
23
+
24
+ # ---------------- Save uploaded image ----------------
25
+ def save_uploaded_image(user_id: str, image: Image.Image) -> str:
26
+ """
27
+ Save the uploaded image to local dataset folder and log metadata.
28
+ """
29
+ image_path = IMAGE_DATASET_DIR / f"{uuid4()}.png"
30
+
31
+ with scheduler.lock:
32
+ # Save the image
33
+ image.save(image_path)
34
+
35
+ # Save metadata to JSONL
36
+ with IMAGE_JSONL_PATH.open("a") as f:
37
+ json.dump({
38
+ "user_id": user_id,
39
+ "file_name": image_path.name,
40
+ "datetime": datetime.now().isoformat()
41
+ }, f)
42
+ f.write("\n")
43
+
44
+ return f"Image uploaded successfully for user {user_id}!"
45
+
46
+ # ---------------- Gradio UI ----------------
47
+ def get_demo():
48
+ with gr.Row():
49
+ user_id_input = gr.Textbox(label="User ID")
50
+ image_input = gr.Image(label="Upload Image", type="pil")
51
+ upload_btn = gr.Button("Upload")
52
+ upload_status = gr.Textbox(label="Status")
53
+ upload_btn.click(
54
+ fn=save_uploaded_image,
55
+ inputs=[user_id_input, image_input],
56
+ outputs=upload_status
57
+ )
58
+
59
+ # Launch Gradio app
60
+ demo = gr.Blocks()
61
+ with demo:
62
+ get_demo()
63
+
64
+ demo.launch()