import gradio as gr from bs4 import BeautifulSoup import requests from acogsphere import acf from bcogsphere import bcf import math import glob #from python_actr import * #from cogscidighum import * #class myCelSci(Model): # pass #def main(link): # response=getviews(link)+getresult("hello world")[0]["label"] + str(math.trunc(getresult("hello world")[0]["score"])*100/100) # return response #result #soup.prettify() import sqlite3 import huggingface_hub import pandas as pd import shutil import os import datetime from apscheduler.schedulers.background import BackgroundScheduler import random import time DB_FILE = "./reviews.db" TOKEN = os.environ.get('HF_KEYcogscics') repo = huggingface_hub.Repository( local_dir="data", repo_type="dataset", clone_from="CognitiveScience/csdhdata", use_auth_token=TOKEN ) repo.git_pull() # Set db to latest shutil.copyfile("./data/reviews.db", DB_FILE) # Create table if it doesn't already exist db = sqlite3.connect(DB_FILE) try: db.execute("SELECT * FROM reviews").fetchall() db.close() except sqlite3.OperationalError: db.execute( ''' CREATE TABLE reviews (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, name TEXT, review INTEGER, comments TEXT) ''') db.commit() db.close() def get_latest_reviews(db: sqlite3.Connection): reviews = db.execute("SELECT * FROM reviews ORDER BY id DESC limit 10").fetchall() total_reviews = db.execute("Select COUNT(id) from reviews").fetchone()[0] reviews = pd.DataFrame(reviews, columns=["id", "date_created", "name", "review", "comments"]) return reviews, total_reviews def add_review(name: str, review: int, comments: str): db = sqlite3.connect(DB_FILE) cursor = db.cursor() cursor.execute("INSERT INTO reviews(name, review, comments) VALUES(?,?,?)", [name, review, comments]) db.commit() reviews, total_reviews = get_latest_reviews(db) db.close() return reviews, total_reviews def load_data(): db = sqlite3.connect(DB_FILE) reviews, total_reviews = get_latest_reviews(db) db.close() return reviews, total_reviews def delete_review(id: int): db = sqlite3.connect(DB_FILE) cursor = db.cursor() cursor.execute("DELETE FROM reviews WHERE id = ?", [id]) db.commit() reviews, total_reviews = get_latest_reviews(db) db.close() return reviews, total_reviews def delete_all_reviews(): db = sqlite3.connect(DB_FILE) cursor = db.cursor() cursor.execute("DELETE FROM reviews") db.commit() reviews, total_reviews = get_latest_reviews(db) db.close() return reviews, total_reviews #def cs(link): # response="Hi " + "bcf" #(link) #acf("hello world")[0]["label"] + str(math.trunc(acf("hello world")[0]["score"])*100/100)+bcf(link) # return response #result #soup.prettify() def respond3(message, chat_history): bot_message = random.choice(["How are you3?", "I love you3", "I'm very hungry3"]) chat_history.append((message, bot_message)) time.sleep(2) return "", chat_history with gr.Blocks() as demo: with gr.Row(): with gr.Column(): with gr.Box(): gr.Markdown("Based on dataset [here](https://huggingface.co/datasets/freddyaboulton/gradio-reviews)") #data = gr.Dataframe() count = gr.Number(label="Total number of reviews") name = gr.Textbox(label="Name", placeholder="ur name?") review = gr.Radio(label="How satisfied are you with your pick?", choices=[1, 2, 3, 4, 5, 6]) comments = gr.Textbox(label="Comments0", lines=10, placeholder="comm?") cssubmit = gr.Button(value="Submit Choice") #cschatbot = gr.Chatbot() #csinp = gr.Textbox() #csout=cs(csinp) #csclear = gr.ClearButton([csinp, cschatbot]) #csinp.submit(cs, [csinp, cschatbot], [csinp, cschatbot]) def cs(link): response="Hi " + link #(link) #acf("hello world")[0]["label"] + str(math.trunc(acf("hello world")[0]["score"])*100/100)+bcf(link) return response,1 #result #soup.prettify() cssubmit.click(cs, name, [comments,count]) with gr.Row(): with gr.Column(): name = gr.Textbox(label="Name", placeholder="What is your name?") review = gr.Radio(label="How satisfied are you with using gradio?", choices=[1, 2, 3, 4, 5]) comments = gr.Textbox(label="Comments", lines=10, placeholder="Do you have any feedback on gradio?") submit = gr.Button(value="Submit Feedback") with gr.Column(): gr.FileExplorer(label="Working directory") gr.FileExplorer(root="./data", label="Persistent storage") with gr.Column(): chatbot = gr.Chatbot() msg = gr.Textbox() clear = gr.ClearButton([msg, chatbot]) def respond(message, chat_history): bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"]) chat_history.append((message, bot_message)) time.sleep(2) return "", chat_history msg.submit(respond, [msg, chatbot], [msg, chatbot]) with gr.Column(): submitsave = gr.Button(value="Save") def backup_db2(): shutil.copyfile(DB_FILE, "./data/reviews.db") db = sqlite3.connect(DB_FILE) reviews = db.execute("SELECT * FROM reviews").fetchall() pd.DataFrame(reviews).to_csv("./data/reviews.csv", index=False) print("updating db") repo.push_to_hub(blocking=False, commit_message=f"Updating data at {datetime.datetime.now()}") submit.click(backup_db2) with gr.Column(): with gr.Box(): gr.Code( value="""def hello_world(): return "Hello, world!" print(hello_world())""", language="python", interactive=True, show_label=False, ) gr.Markdown("Based on dataset [here](https://huggingface.co/datasets/freddyaboulton/gradio-reviews)") data = gr.Dataframe() count = gr.Number(label="Total number of reviews") submit.click(add_review, [name, review, comments], [data, count]) #cssubmit.click(add_review, [name, review, comments], [data, count]) record2del = gr.Textbox(label="Id: ", lines=1, placeholder="to delete?") submit2 = gr.Button(value="Delete Review") id_input = gr.Number(value=202, visible=False) submit2.click(delete_review, id_input) submit3 = gr.Button(value="Delete All Reviews") submit3.click(delete_all_reviews) demo.load(load_data, None, [data, count]) def backup_db(): shutil.copyfile(DB_FILE, "./data/reviews.db") db = sqlite3.connect(DB_FILE) reviews = db.execute("SELECT * FROM reviews").fetchall() pd.DataFrame(reviews).to_csv("./data/reviews.csv", index=False) print("updating db") repo.push_to_hub(blocking=False, commit_message=f"Updating data at {datetime.datetime.now()}") scheduler = BackgroundScheduler() scheduler.add_job(func=backup_db, trigger="interval", seconds=900) scheduler.start() demo.launch()