Saudações, Habr. Este artigo é uma continuação
deste . Antes de ler, eu recomendo fortemente que você o leia se não tiver feito isso antes.
Hoje você aprenderá:
- Como obter mais de uma resposta, embora a fazenda coletiva
- Como conectar um tradutor Yandex a este
- E como escrever para o usuário que ele fez tudo errado
Tradutor de API Yandex
O tradutor Yandex tem uma boa API e nós a usaremos. Estudamos cuidadosamente a
documentação e entramos em batalha. Mas aqui Yandex nos coloca um porco.
Requisitos para usar resultados de tradução
De acordo com a Licença para usar o Yandex.Translator, o texto Traduzido pelo serviço Yandex.Translator com um link ativo para a página translate.yandex.ru deve ser indicado acima ou abaixo do resultado da tradução.
Requisitos de layout de texto
O texto deve ser especificado:
na descrição do produto de software;
Ajuda para um produto de software
no site oficial do produto de software;
em todas as páginas ou telas em que os dados de serviço são usados.
Bem, não somos pessoas orgulhosas, vamos sobreviver.
Como isso funciona
O usuário nos escreve uma mensagem, perguntamos em que idioma ele deseja traduzir a frase. Depois pedimos que o texto seja traduzido e envie o resultado.
Implementação técnica
Obter a chave
da API
Nós usamos
esta bibliotecafrom yandex_translate import YandexTranslate # translate = YandexTranslate(' ')
Nós chutamos longpoll como eu descrevi na 1ª parte.
if event.text == '': # "" if event.from_user: vk.messages.send( # user_id=event.user_id, message=' ? .\n : - ru, - en' #C " ? .\n : - ru, - en". ) elif event.from_chat: vk.messages.send( # , chat_id=event.chat_id, message=' ? .\n : - ru, - en' ) flag = 0 # 2- for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: # trTo = event.text # if event.from_user: vk.messages.send( # user_id=event.user_id, message=' , ' ) elif event.from_chat: vk.messages.send( # , chat_id=event.chat_id, message=' , ' ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: # trNormal = 1 # try: #, trFrom = translate.detect(event.text) # trResult = translate.translate(event.text, trFrom + '-' + trTo) # except Exception as e: # - trNormal = 0 # print("Exception:", e) # pass if trNormal == 1: # if event.from_user: vk.messages.send( # user_id=event.user_id, message=' «.» translate.yandex.ru\n' + str(trResult['text']) ) flag = 1 # 2- break elif event.from_chat: vk.messages.send( # , chat_id=event.chat_id, message=' «.» translate.yandex.ru\n' + str(trResult['text']) ) flag = 1 break if trNormal == 0: # if event.from_user: vk.messages.send( # user_id=event.user_id, message=' ' #.. 99% - , ) flag = 1 # 2- break elif event.from_chat: vk.messages.send( # , chat_id=event.chat_id, message=' ' ) flag = 1 break if flag == 1: # 2- break
O que são exceções e o que comem
Exceções - isso é algo que, em caso de erro, é executado e nos informa sobre isso. Para lidar com exceções, use a construção try - except.
Vamos tentar implementar nosso código sem essa construção.
-Translation
-Que linguagem? Indique em duas letras.
Por exemplo: russo - ru, inglês - en
-en
-Insira a frase que você deseja traduzir
-Oi Habr
- Traduzido pelo serviço Yandex.Translator translate.yandex.ru
['Oi Habr']
Bem, funciona, e por que precisamos de suas exceções?
Mas porque:
-Translation
-Que linguagem? Indique em duas letras.
Por exemplo: russo - ru, inglês - en
-abracadabra
-Insira a frase que você deseja traduzir
-Oi Habr
...
Enquanto isso, no console:
Traceback (most recent call last): File "C:\Py_trash\habrex.py", line 112, in <module> main() File "C:\Py_trash\habrex.py", line 78, in main trResult = translate.translate(event.text, trFrom + '-' + trTo) File "C:\Users\Hukuma\AppData\Local\Programs\Python\Python37-32\lib\site-packages\yandex_translate\__init__.py", line 150, in translate raise YandexTranslateException(status_code) yandex_translate.YandexTranslateException: None
E com exceções:
-Translation
-Que linguagem? Indique em duas letras.
Por exemplo: russo - ru, inglês - en
-Abracadabra
-Insira a frase que você deseja traduzir
-Oi Habr
- Idioma inserido incorretamente
Mais detalhadamente, examinarei a tentativa - exceto a construção:
try: #sample code except Exception: #
Vou dar um exemplo com a API da wikipedia:
try: result = str(wikipedia.summary(event.text)) except wikipedia.exceptions.PageError: print(' ') except wikipedia.exceptions.DisambiguationError: print('')
Como você entende, pode haver várias exceções.
Por isso digo adeus a você. Tudo de bom