CogSphere / app.py
CognitiveScience's picture
Update app.py
b27b67f
raw
history blame
7.25 kB
import gradio as gr
from bs4 import BeautifulSoup
import requests
from youtube1 import getviews
from textsentiment import getresult
import math
#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_KEY')
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 celsci(link):
response=getviews(link)+getresult("hello world")[0]["label"] + str(math.trunc(getresult("hello world")[0]["score"])*100/100)
return response #result #soup.prettify()
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
chatbot3 = gr.Chatbot()
msg3 = gr.Textbox()
clear3 = gr.ClearButton([msg2, chatbot2])
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
msg2.submit(respond3, [msg3, chatbot3], [msg3, chatbot3])
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():
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():
chatbot2 = gr.Chatbot()
msg2 = gr.Textbox()
clear2 = gr.ClearButton([msg2, chatbot2])
def respond2(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
msg2.submit(respond2, [msg2, chatbot2], [msg2, chatbot2])
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])
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=60)
scheduler.start()
demo.launch()