Spaces:
Paused
Paused
File size: 2,451 Bytes
ccc5ec3 ec76bbb ccc5ec3 f867f74 ccc5ec3 8e229a3 ccc5ec3 f867f74 ccc5ec3 ec76bbb ccc5ec3 f867f74 ccc5ec3 f867f74 ccc5ec3 c543299 ccc5ec3 1556bff ccc5ec3 ec76bbb ccc5ec3 ec76bbb d76757a ec76bbb c543299 f867f74 1556bff ccc5ec3 ec76bbb f867f74 ccc5ec3 c543299 1556bff ccc5ec3 1556bff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
import os
import csv
import gradio as gr
from gradio import components
from huggingface_hub import Repository, hf_hub_download
from datetime import datetime
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 = """
<script>
if (!window.hasBeenRun) {
window.hasBeenRun = true;
console.log("should only happen once");
document.querySelector("button.submit").click();
}
</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 = "<div class='chatbot'>"
for row in rows:
html += "<div>"
html += f"<span><b>{row['name']}</b></span> " # Make the name bold and add a space after it
html += f"<span class='message'>{row['message']}</span>"
html += "</div>"
html += "</div>"
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(f"Live Dataset: [{DATASET_REPO_URL}]({DATASET_REPO_URL})")
name_input = components.Textbox(label="Your Username")
message_input = components.Textbox(label="Your 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() |