def translate(words: dict) -> dict[str:(int, str)]: print(words) """Принимает словарь с ключами в виде англ слов и значением - частотой употребления слов, возвращает словарь с теми же ключами но в качестве значений кортеж частота, автоперевод""" print("перевод слов") translator = Translator() translator.raise_Exception = True # используя генератор по ключам словаря создается список слов которые нужно перевести. list_words_for_translations = [ i for i in words.keys() if i not in ('oooooh', 'toadless') ] # Монолитный список разбивается на группы по ззо слов, потому что у Gtrnlt есть лимит на 5k знаков. list_grouped_words = [ list_words_for_translations[x:x + 320] for x in range(0, len(list_words_for_translations), 320) ] for group_words in list_grouped_words: # Добавляем кавычки к каждому слову иначе перевод будет некорректен, Gtrnlt постоянно слепляет слова. group_words_with_quotes = [f'"{i}"' for i in group_words] megastring = '; '.join(group_words_with_quotes) result = translator.translate(text=megastring, src='en', dest='ru') # Разделяем переведенные слова и чистим их от кавычек pars_result_text = re.split(r';', result.text.lower()) pars_result_text = [ re.sub(r'["«»]', '', i).strip() for i in pars_result_text ] trans = dict(zip(group_words, pars_result_text)) # заменяем значения на кортежи в исходном словаре for origin_word in trans: words[origin_word] = (words[origin_word], trans[origin_word]) return words
def translate_text_util(self, comment, src, dest, i): if type(comment) == str: translator = Translator() translator.raise_Exception = True text = '' comments = comment.split('.') comments = [c for c in comments if c != ""] for comment in comments: comment += '.' try: text += translator.translate(comment, src=src, dest=dest).text time.sleep(self.sleep_time) except: try: text += translator.translate(comment, dest=dest).text time.sleep(self.sleep_time) except: pass gc.collect() return str(text), i else: return comment, i
import telebot from googletrans import Translator import requests import json from credentials import * translator = Translator() translator.raise_Exception = True bot = telebot.TeleBot(tg_key) def main(): payload = {'api_key': nasa_key} r = requests.get(BASE_URL, params=payload) response = r.content json2py = json.loads(response) titulo = translator.translate(json2py['title'], dest='es') cuerpo = translator.translate(json2py['explanation'], dest='es') if json2py['media_type'] == "video": reply = f"El APOD de hoy es [{titulo.text}]({json2py['url']}).\n\n{cuerpo.text}" bot.send_message(chat_id, reply, parse_mode='markdown') else: if 'copyright' not in json2py: reply = f"El APOD de hoy es [{titulo.text}]({json2py['url']}).\n\n{cuerpo.text}\n\Mira la imagen en HD [aqui]({json2py['hdurl']})." else: reply = f"El APOD de hoy es [{titulo.text}]({json2py['url']}).\n\n{cuerpo.text}\n\nMira la imagen en HD [aqui]({json2py['hdurl']}).\n\nCredito y Copyright de la imagen: {json2py['copyright']}." bot.send_message(chat_id, reply, parse_mode='markdown')