CosmoAi / app.py
focusit's picture
Update app.py
4a08e51
import gradio
import requests
import os
import time
import uuid
from datetime import datetime
import json
from bardapi import Bard
from dotenv import load_dotenv
from executequery import ExecuteQuery
from getvalues import getValues
load_dotenv()
bardkey = os.environ.get('_BARD_API_KEY')
def bardChat(data):
# Create a session object using the requests library
session = requests.Session()
# Set the headers for the session
session.headers = {
"Host": "bard.google.com",
"X-Same-Domain": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
"Origin": "https://bard.google.com",
"Referer": "https://bard.google.com/",
}
# Set the "__Secure-1PSID" cookie with the Bard API key
session.cookies.set("__Secure-1PSID", bardkey)
# Create a Bard object with the session and a timeout of 30 seconds
bard = Bard(session=session, timeout=30)
answer = bard.get_answer(data)['content']
print(answer)
return answer
# return json.dumps({'message':answer,'action':'null'})
def responsenew(data):
idval = str(uuid.uuid4())
result = ExecuteQuery(data)
if result[1] == 'opencosmo':
jdata = {
"message": bardChat(data),
"action": "chitchat",
"function": None
}
return jdata
elif result[1] == 'create_reminder':
remvalues = getValues(data)
jdata = {
"message": result[0],
"action": "create_reminder",
'function': {
'id': str(uuid.uuid4()),
'sound': 'General',
'subTitle': 'Task',
'type': 'Note',
'title': remvalues[0],
'description': '',
'time': remvalues[1].upper(),
'timestamp' : datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f"),
'enable': False,
'report': [],
'icon': 'https://firebasestorage.googleapis.com/v0/b/cosmo-f5007.appspot.com/o/categories%2FIcons%2Ftaskicon.svg?alt=media&token=56f3fc55-8eda-4463-bceb-7bf3198dff3c',
'color': 'FFD700',
'sharedToMe': [],
'sharedByMe': [],
'repeat': 'Daily',
'reminders': [{
'time': remvalues[1].upper(),
'enable': False,
'repeat': remvalues[4],
'title': remvalues[0],
'id': str(uuid.uuid4()),
'note': '',
'dates': [],
}],
}
}
return jdata
elif result[1] == 'create_todo':
jdata = {
'messages': result[0],
'action': result[1],
'function': {
'name': 'defaulttodo',
'id': str(uuid.uuid4()),
'subTasks': [{
'task':remvalues[0].replace("create a todo", ""),
'done': False
}],
'shared': [],
'sharedByMe': [],
},
}
elif result[1] == 'show_routine_today':
jdata = {
"message": result[0],
"action": "show_routine_today",
"values": None
}
return jdata
elif result[1] == 'create_note':
notevalues = data.lower().replace('create a note ','').replace("remember","").replace('note','').replace('jot down', ''). replace('make a note','')
jdata = {
'messages': result[0],
'action': result[1],
'function': {
'title': 'defaultnote',
'id': idval,
'type': 'Note',
'description': notevalues,
'time': datetime.now().strftime("%d/%m/%Y"),
'mainTime': datetime.now().strftime("%I:%M %p"),
'complete': False,
'shared': [],
'sharedByMe': [],
}
}
return jdata
elif result[1] == 'show_people':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'show_friends':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'show_allgroups':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'show_mygroups':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'show_allcommunities':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'show_mycommunities':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'name':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'creator':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'commands':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'goodbye':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
elif result[1] == 'view_commands':
jdata = {
'messages': result[0],
'action': result[1]
}
return jdata
# with gr.Blocks() as demo:
# chatbot = gr.Chatbot()
# msg = gr.Textbox()
# # clear = gr.ClearButton([msg, chatbot])
# def respond(message, chat_history):
# bot_message = responsenew(message)
# chat_history.append((message, bot_message))
# time.sleep(2)
# return "", chat_history
# msg.submit(respond, [msg, chatbot], [msg, chatbot])
# if __name__ == "__main__":
# demo.launch()
def responsedata(data):
return bardChat(data)
gradio_interface = gradio.Interface(
fn = responsedata,
inputs = "text",
outputs = "text"
)
gradio_interface.launch()