translated / app.py
lalashechka's picture
Update app.py
d7b7eb7 verified
from fastapi import FastAPI, Request
from pydantic import BaseModel
import requests
import os
import uuid
import re
from deep_translator import GoogleTranslator
from deep_translator import LingueeTranslator
app = FastAPI()
class RequestBody(BaseModel):
prompt: str
@app.post("/api/v1")
def generate_response(request_body: RequestBody):
prompt = request_body.prompt
prompt = prompt[:500]
name = ''
try:
all_chunk = GoogleTranslator(source='ru', target='en').translate(prompt)
# print("Перевод GoogleTranslator")
name = 'google'
except:
try:
headers = {'content-type': 'application/json','origin': 'https://en.pons.com','referer': 'https://en.pons.com/'}
json_data = {'language1': 'ru','language2': 'en','sourceLanguage': 'ru','query': prompt,'dictionaryHint': 'enru','locale': 'en'}
response = requests.post('https://api-ng.pons.com/pons-mf-resultpage/api/translate', headers=headers, json=json_data, timeout=10)
all_chunk = response.json()['translation']
#print("Перевод pons")
name = 'pons'
except:
try:
translated_promt = []
clean_text = re.sub(r'[^a-zA-Z0-9а-яА-Я\s]', '', prompt)
headers = {'accept': '*/*','accept-language': 'ru,en;q=0.9,la;q=0.8,ja;q=0.7','content-type': 'application/x-www-form-urlencoded; charset=UTF-8','priority': 'u=1, i','referer': 'https://www.linguee.com/','sec-ch-ua': '"Chromium";v="130", "YaBrowser";v="24.12", "Not?A_Brand";v="99", "Yowser";v="2.5"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 YaBrowser/24.12.0.0 Safari/537.36','x-requested-with': 'XMLHttpRequest'}
for word in clean_text.lower().split():
try:
params = {'qe': ''.join(['%' + hex(x)[2:].upper() for x in word.encode('utf-8')]),'source': 'russian','cw': '638','ch': '964','as': 'shownOnStart'}
response = requests.get('https://www.linguee.com/english-russian/search', params=params, headers=headers, timeout=2)
s = BeautifulSoup(response.text, 'html.parser')
word = s.find('div', {"class": "translation_item"}).find(text=True, recursive=False).strip()
translated_promt.append(word)
time.sleep(.1)
except:
translated_promt.append(word)
all_chunk = " ".join(translated_promt)
#print("Перевод linguee")
name = 'linguee'
except:
print("БЕЗ ПЕРЕВОДА!")
name = 'no_translated'
all_chunk = prompt
return {"response": all_chunk, "name": name}