Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| from datetime import datetime | |
| import os | |
| from huggingface_hub import Repository, HfFolder | |
| # Store your Hugging Face token securely (avoid hardcoding it in your app.py) | |
| HF_TOKEN = os.getenv("HF_TOKEN") # Retrieve token from environment variables | |
| # Save Hugging Face token to the Hugging Face folder for authentication | |
| HfFolder.save_token(HF_TOKEN) | |
| # Define constants for the dataset path and local storage | |
| STORAGE_PATH = "appointments.csv" | |
| REPO_ID = "/huggingface.co/datasets/Abu1998/DataCollection" # This is your dataset repository on Hugging Face | |
| # Function to upload CSV to Hugging Face | |
| def upload_to_huggingface(): | |
| try: | |
| # Clone the dataset repository from Hugging Face | |
| repo = Repository(local_dir="temp_repo", clone_from=REPO_ID, use_auth_token=HF_TOKEN) | |
| repo.git_pull() # Ensure the latest version | |
| # Make sure the local repository folder exists | |
| os.makedirs("temp_repo", exist_ok=True) | |
| # Load the data and save it in the temp repository directory | |
| df = pd.read_csv(STORAGE_PATH) | |
| df.to_csv(os.path.join("temp_repo", "appointments.csv"), index=False) | |
| # Commit and push the updated CSV file to Hugging Face | |
| repo.git_add("appointments.csv") | |
| repo.git_commit("Updated appointments data") | |
| repo.git_push() | |
| return "Data uploaded to Hugging Face successfully!" | |
| except Exception as e: | |
| return f"Error uploading data: {e}" | |
| # Function to save appointment data locally and upload to Hugging Face | |
| def save_and_upload_to_csv(appointment_timing, services, products, contact, customer_name, rating, location, key_points, price): | |
| # Check if the CSV exists, if not, create a new DataFrame | |
| if not os.path.exists(STORAGE_PATH): | |
| df = pd.DataFrame(columns=[ | |
| "Date", "Appointment", "Appointment Timing", "Services", "Products", | |
| "Contact", "Customer Name", "Rating", "Location", "Key-points", "Price" | |
| ]) | |
| df.to_csv(STORAGE_PATH, index=False) | |
| else: | |
| # Load the existing CSV data | |
| df = pd.read_csv(STORAGE_PATH) | |
| # Auto-detect date and appointment ID | |
| date = datetime.now().strftime("%Y-%m-%d") | |
| appointment = len(df) + 1 | |
| # Add a new row of appointment data | |
| new_row = pd.DataFrame([{ | |
| "Date": date, | |
| "Appointment": appointment, | |
| "Appointment Timing": appointment_timing, | |
| "Services": services, | |
| "Products": products, | |
| "Contact": contact, | |
| "Customer Name": customer_name, | |
| "Rating": rating, | |
| "Location": location, | |
| "Key-points": key_points, | |
| "Price": price | |
| }]) | |
| # Append new data to the existing DataFrame | |
| df = pd.concat([df, new_row], ignore_index=True) | |
| df.to_csv(STORAGE_PATH, index=False) # Save updated data locally | |
| # Upload the updated data to Hugging Face | |
| return upload_to_huggingface() | |
| # Gradio Interface | |
| with gr.Blocks() as app: | |
| gr.Markdown("# Appointment Data Storage Application") | |
| appointment_timing = gr.Textbox(label="Appointment Timing") | |
| services = gr.Dropdown( | |
| label="Services", | |
| choices=["Full arm Rica", "Full leg", "Underarms", "Eyebrow", "Upper lips"], | |
| multiselect=True | |
| ) | |
| products = gr.Textbox(label="Products") | |
| contact = gr.Textbox(label="Contact") | |
| customer_name = gr.Textbox(label="Customer Name") | |
| rating = gr.Radio(label="Rating", choices=["Very good", "Good", "Normal", "Bad", "Too bad"]) | |
| location = gr.Textbox(label="Location") | |
| key_points = gr.Textbox(label="Key-points") | |
| price = gr.Dropdown(label="Price", choices=["999", "1499", "2499", "3499", "4499"]) | |
| submit_button = gr.Button("Submit") | |
| output = gr.Textbox(label="Output") | |
| submit_button.click( | |
| save_and_upload_to_csv, | |
| inputs=[ | |
| appointment_timing, services, products, contact, customer_name, rating, location, key_points, price | |
| ], | |
| outputs=output | |
| ) | |
| # Launch the app | |
| app.launch(share=True) | |