Spaces:
Paused
Paused
| 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 | |
| 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} |