Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
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')