import os import csv import gradio as gr from gradio import components from huggingface_hub import Repository, hf_hub_download from datetime import datetime from final_msgs import FEED_HEADER DATASET_REPO_URL = "https://huggingface.co/datasets/sjw/data.csv" DATASET_REPO_ID = "sjw/data.csv" DATA_FILENAME = "data.csv" DIRNAME = "data" DATA_FILE = os.path.join(DIRNAME, DATA_FILENAME) HF_TOKEN = os.environ.get("HF_TOKEN") # overriding/appending to the gradio template SCRIPT = """ """ try: hf_hub_download( repo_id=DATASET_REPO_ID, filename=DATA_FILENAME, ) except: print("file not found") repo = Repository( local_dir=DIRNAME, clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN ) def generate_html() -> str: """Generate HTML content for the chat.""" with open(DATA_FILE) as csvfile: reader = csv.DictReader(csvfile) rows = [] for row in reader: rows.append(row) rows.reverse() if len(rows) == 0: return "no messages yet" else: html = "
" for row in rows: html += "
" html += f"{row['name']} " # Make the name bold and add a space after it html += f"{row['message']}" html += "
" html += "
" return html def store_message(name: str, message: str): """Store the message and regenerate HTML content.""" if name and message: with open(DATA_FILE, "a") as csvfile: writer = csv.DictWriter(csvfile, fieldnames=["name", "message", "time"]) writer.writerow( {"name": name, "message": message, "time": str(datetime.now())} ) commit_url = repo.push_to_hub() return generate_html() with gr.Blocks() as feedback_page: gr.Markdown(FEED_HEADER) #gr.Markdown(f"Live Dataset: [{DATASET_REPO_URL}]({DATASET_REPO_URL})") name_input = components.Textbox(label="Username") message_input = components.Textbox(label="Feedback", lines=2) output_html = gr.HTML() submit_button = gr.Button("Submit") submit_button.click(store_message, inputs=[name_input, message_input], outputs=output_html) #feedback_page.launch()