import io from fastapi import FastAPI, File, UploadFile import subprocess import os import requests import random import shutil import json # from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline from pydantic import BaseModel from typing import Annotated from fastapi import Form import selenium from selenium import webdriver from selenium.webdriver import ChromeOptions from selenium.webdriver.chrome.service import Service import threading import random import string import time # from selenium.webdriver.firefox.options import Options # options = FirefoxOptions() # options.headless = True # service = Service() # driver = webdriver.Firefox(options= options,service=service) # driver.get("https://yuntian-deng-chatgpt.hf.space/") options = ChromeOptions() options.add_argument('--no-sandbox') options.add_argument('-headless') service = Service() driver = webdriver.Chrome(options= options,service=service) driver.get("https://yuntian-deng-chatgpt.hf.space/") class Query(BaseModel): text: str host:str from fastapi import FastAPI, Request, Depends, UploadFile, File from fastapi.exceptions import HTTPException from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['*'], allow_credentials=True, allow_methods=['*'], allow_headers=['*'], ) # cred = credentials.Certificate('key.json') # app1 = firebase_admin.initialize_app(cred) # db = firestore.client() # data_frame = pd.read_csv('data.csv') @app.on_event("startup") async def startup_event(): print("on startup") from selenium.webdriver.common.by import By @app.post("/") async def get_answer(q: Query ): text = q.text host= q.host N = 20 res = ''.join(random.choices(string.ascii_uppercase + string.digits, k=N)) res= res+ str(time.time()) id= res t = threading.Thread(target=do_ML, args=(id,text,host,0)) t.start() dict= {"id":id} return JSONResponse(dict) def do_ML(id:str,text:str,host:str, trycount:int): try: starttime=time.time() driver.get("https://yuntian-deng-chatgpt.hf.space/") time.sleep(3+trycount) button = driver.find_element(By.ID,"component-23") button.click() time.sleep(1+trycount) alert = driver.switch_to.alert alert.accept() print("alert accepted") time.sleep(1+trycount) id_box = driver.find_element(By.XPATH,'//textarea[@data-testid="textbox"]') id_box.send_keys(text) time.sleep(1+trycount) run = driver.find_element(By.ID,"component-9") run.click() prev ="" time.sleep(2) while True: time.sleep(2+trycount) currtime= time.time() if(currtime>starttime+600): data=data={"id":id,"result":"","status":"Error"} x= requests.post(host,data= data) return div = driver.find_element(By.XPATH,'//div[@class="message bot svelte-a99nd8 latest"]') value = div.text if prev!="": if value==prev: data={"id":id,"result":value,"status":"Generated"} requests.post(host, data=data) break prev= value data=data={"id":id,"result":value,"status":"Generating --keep refreshing"} x= requests.post(host,data= data) print(x.text) except: if trycount>3: data=data={"id":id,"result":"","status":"Error"} x= requests.post(host,data= data) return do_ML(id,text,host,trycount+1)