| import json | |
| from datetime import datetime | |
| from pathlib import Path | |
| from uuid import uuid4 | |
| import gradio as gr | |
| from huggingface_hub import CommitScheduler | |
| JSON_DATASET_DIR = Path("json_dataset") | |
| JSON_DATASET_DIR.mkdir(parents=True, exist_ok=True) | |
| JSON_DATASET_PATH = JSON_DATASET_DIR / f"train-{uuid4()}.json" | |
| scheduler = CommitScheduler( | |
| repo_id="example-space-to-dataset-json", | |
| repo_type="dataset", | |
| folder_path=JSON_DATASET_DIR, | |
| path_in_repo="data", | |
| ) | |
| def greet(name: str) -> str: | |
| return "Hello " + name + "!" | |
| def save_json(name: str, greetings: str) -> None: | |
| with scheduler.lock: | |
| with JSON_DATASET_PATH.open("a") as f: | |
| json.dump({"name": name, "greetings": greetings, "datetime": datetime.now().isoformat()}, f) | |
| f.write("\n") | |
| def get_demo(): | |
| with gr.Row(): | |
| greet_name = gr.Textbox(label="Name") | |
| greet_output = gr.Textbox(label="Greetings") | |
| greet_btn = gr.Button("Greet") | |
| greet_btn.click(fn=greet, inputs=greet_name, outputs=greet_output).success( | |
| fn=save_json, | |
| inputs=[greet_name, greet_output], | |
| outputs=None, | |
| ) | |