Python yandex translate api

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Python module for Yandex.Translate API

License

dveselov/python-yandex-translate

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Python module for Yandex.Translate API.

This module is fully-compatible with Python 2.7+ and 3.3+ versions.

pip install yandex.translate
from yandex_translate import YandexTranslate translate = YandexTranslate('Your API key here.') print('Languages:', translate.langs) print('Translate directions:', translate.directions) print('Detect language:', translate.detect('Привет, мир!')) print('Translate:', translate.translate('Привет, мир!', 'ru-en')) # or just 'en'
Languages: Translate directions: ['az-ru', 'be-bg', 'be-cs', ..] Detect language: 'ru' Translate:

Also, it’s possible to use proxies when doing requests to Yandex.Translate API — just pass proxies dictionary with data in same format that requests use.

Источник

yandex-translater 6.0

This module uses the Yandex.Translate API for machine translation.
A Yandex API key is required; see https://translate.yandex.com/developers
for more information.

Note also that the “Yandex Terms of Use of API Yandex.Translate Service”
at https://yandex.com/legal/translate_api/ must be observed.

$ pip install yandex-translater

>>> from yandex.Translater import Translater
>>> tr = Translater()
>>> tr.set_key(‘yandex_key’) # Api key found on https://translate.yandex.com/developers/keys
>>> tr.set_from_lang(‘en’)
>>> tr.set_to_lang(‘ru’)
>>> tr.translate()
Привет

.. code-block:: pycon
>>> tr = Translater(attributes)

This constructor returns a new object. Optional attributes include:

This method is used to pass a Yandex API key (string),
instead of passing it in Constructor. A tr object can be
instantiated without any attributes.

This method is used to pass a text to translate (string).

This method is used to pass a source language (string).
For example, Chinese would be given as zh.

This method is used to pass a destination language (string).
For example, Arabic would be given as ar.

This method is used to set the user interface language (string).
For example, French would be given as fr.

This method is used to set the default user interface language (string).
Either ru (Russian) or en (English) or tr (Turkish) can be given.

This method is used to set the list of likely languages for
detecting the text language (array reference). For example,
Spanish and Portuguese would be given as attributes.

This method is used to get the translated text (string)

This method is used to detect the language of the text. It returns a string.

This method is used to get the list of supported translation directions.
In array context, it returns an array of these directions; in scalar context,
it returns the count of them.

Please report any bugs or feature requests on my email or created in the website.
yandex-translate-bugs

This is open source software. The code repository is available for
public review and contribution under the terms of the license.

This software is copyleft © 2017 by James Axl.

This is free software; you can redistribute it and/or
modify it under the same terms as the Perl 5 programming language system itself.

Источник

Яндекс.переводчик для Linux на Python+GTK3

Довольно давно возникла необходимость в мультиязычном онлайн переводчике при закрытом браузере.

Нет, так то я и словарем в «особо тяжелых» случаях пользоваться не брезгую, но иногда приходится читать немаленький текст, и не все слова я знаю, как следствие теряется контекст.

image

Вначале был translate-shell.

Translate-shell вещь достаточно удобная, особненно, если пишешь, допустим, в Vi/vim. Переключился в соседнюю консоль и переводи.

Ключи простейшие и запоминаются легко.

$ trans -b -e yandex -t en "Простые ключи." Simple keys. или $ echo -e "\nС перенаправлением.\n"|trans -b -e yandex -t en With redirection.

Но этого как обычно было мало. Захотелось графики.

Работа в SublimeText и Zeal несколько удобней, нежели голая консоль.

image

Хм… Подумал-подумал, и решил прикрутить переводчик на горячую клавишу.
Выбор пал на gxmessage. Zenity меня не устроил, уж и не помню почему.
Был написан код:

#!/bin/bash # Name script trans.sh TEXT=$(xclip -selection primary -o) TRANS=$(trans -e yandex -hl en -tl ru -b "$TEXT") if [ "$TRANS" ]; then gxmessage -geometry 1000x800 -bg "#aaaaaa" -title "Translate" -wrap -center -font "Menlo Regular 24" "$TRANS" else gxmessage -geometry 1000x800 -bg "#aaaaaa" -title "Translate" -wrap -center -font "Menlo Regular 24" "Нет связи с сервисом" fi

И назначен на Ctrl+1. В IceWm это легко. Правим $HOME/.icewm/keys

key "Ctrl+1" $HOME/progs/trans.sh

Некоторое время меня это устраивало. На «контрол+1» с английского, «контрол+2» на английский. Хорошо.

image

Но тут translate-shell начал давать сбои.

image

Не знаю, что произошло у разрабов, но меня это совсем огорчило.
Я решил, пора, давно на питоне не писал.

Недолгие поиски в гугл привели меня к Yandex.API, Python и GTK+ 3 в виде модуля gi.

Почему gi, ведь обычно писал на PyQt5? Он на моей машине работает значительно быстрее. Машина не новая, памяти тоже(по современным меркам) не ахти.

image

Модуль GTK+ 3 для python был для меня вновинку. Целый вечер разбирался с синтаксисом на сайтах раз, два и три.

#!/usr/bin/env python3.6 # -*- coding: utf-8 -*- import sys import requests import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk from gi.repository import Gdk from gi.repository import Pango import warnings warnings.filterwarnings("ignore") import os CURRDIR = os.path.dirname(os.path.abspath(__file__)) ICON = os.path.join(CURRDIR, 'yandex-48.xpm') headers = < 'User-Agent': ('Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 ' 'Firefox/14.0.1'), 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'DNT': '1' >URLDETECT = "https://translate.yandex.net/api/v1.5/tr.json/detect" URLTRANS = "https://translate.yandex.net/api/v1.5/tr.json/translate" KEY = "you-API-key" def clip(): clipboard = Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY) clip = clipboard.wait_for_text() return clip def detect(): params = respdetect = requests.get(URLDETECT, params=params, headers=headers).json() if 'lang' in respdetect.keys(): respdetect = respdetect else: respdetect = langtetect = respdetect["lang"] if langtetect != 'ru': langout = langtetect + '-ru' else: langout = 'ru-en' return langout def translate(): params = response = requests.get(URLTRANS, params=params, headers=headers).json() if 'text' in response.keys(): response = response else: response = output = ''.join(response["text"]) return output class TextViewWindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=f"Yandex Translator ") self.set_default_size(1000, 350) self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) self.grid = Gtk.Grid() self.add(self.grid) self.create_textview() self.create_toolbar() self.key_Esc = Gdk.keyval_from_name("Escape") self.connect("key-press-event", self._key) def create_toolbar(self): toolbar = Gtk.Toolbar() self.grid.attach(toolbar, 1, 1, 1, 1) new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_CLOSE) new_button.set_is_important(True) toolbar.insert(new_button, 0) new_button.connect("clicked", self.on_button_clicked, self.tag_bold) new_button.show() def on_button_clicked(self, widget, tag): Gtk.main_quit() def create_textview(self): scrolledwindow = Gtk.ScrolledWindow() scrolledwindow.set_hexpand(True) scrolledwindow.set_vexpand(True) self.grid.attach(scrolledwindow, 0, 0, 2, 1) self.textview = Gtk.TextView() self.textbuffer = self.textview.get_buffer() self.textbuffer.set_text(f"") scrolledwindow.add(self.textview) self.textview.set_wrap_mode(Gtk.WrapMode.WORD) self.tag_bold = self.textbuffer.create_tag("bold", weight=Pango.Weight.BOLD) self.textview.modify_font(Pango.FontDescription('Menlo Regular 24')) def _key(self, widg, event): if event.keyval == self.key_Esc: Gtk.main_quit() win = TextViewWindow() win.connect("destroy", Gtk.main_quit) win.set_icon_from_file(ICON) win.show_all() Gtk.main() 

В итоге имею автопереводчик на горячей клавише.

Источник

Используем Яндекс.API для создания переводчика.

Недавно передо мной встала задача — создать переводчик, который бы мог переводить текст хранящийся в файлах ‘*.txt’. Как открывать, закрывать и записывать в файлы достаточно много рассказано и без меня. В этой статье мы рассмотрим именно взаимодействие интерпретатора Python 3 и сервиса переводов Yandex.Translate.

Почему Яндекс? Ну, потому что бесплатно (Гугл закрыл свой открытый API, а разбираться с оставшимися возможностями как-то лень). Во вторых, достаточно развернутая и подробная документация. Использование Яндекс-API позволяет отправлять/получать данные в форматах XML, JSON, JSONP.

В общем, даже несмотря на огрехи перевода, Яндекс, пока что, самый доступный из онлайн-сервисов для машинного перевода.

Заметка! Весь приведенный код тестировался на Python3.6.3!

Для начала нужно установить модуль requests. После добавления в Python программ установки pip эта операция не представляет особого труда. Откройте текстовую строку Windows и выполните команду:

Все произойдет в автоматическом режиме. Эта библиотека — единственный модуль, который нам понадобится для организации машинного перевода текста.

Далее будет не лишним ознакомится с ограничениями Яндекса на бесплатный машинный перевод. Если вкратце, то на каждом переведенном тексте (в шапке или футере) должна стоять надпись «Переведено сервисом «Яндекс.Переводчик» с активной ссылкой на этот самый переводчик. Кроме того, объем переводимого бесплатно текста ограничен 1 000 000 знаков в сутки и 10 000 000 знаков в месяц. Если нужно больше — платите.

Изучить эти ограничения особенно актуально, если Вы пишете программу на заказ.

Даже если Вы пишете программу для себя, нужно зарегистрироваться в Яндекс и получить там API-ключ вида ‘trnsl.1.1.*, где * — набор символов (цифры, латиница и точка). Писать свой API я, по понятным причинам, не буду. Но получить его достаточно просто — он нам понадобиться в дальнейшем.

Итак, библиотека requests установлена, API-ключ есть. Можно приступать к организации перевода. Все приведенные ниже команды можно выполнить в IDLE, для отработки алгоритма. Все полностью работает.

Сначала импортируем модуль requests:

Далее, настроим переменные, которые будем использовать в отправке запроса.

>>> eng_text = 'text for translate' >>> token = >>> url_trans = 'https://translate.yandex.net/api/v1.5/tr.json/translate'

Предполагается, что текст для перевода хранится в переменной eng_text; в переменной token хранится Ваш API-ключ. А в переменной url_trans находится адрес, на который мы и будем отправлять запрос.

Составляем строку параметров запроса

>>> trans_option = 'key':token, 'lang':'en-ru', 'text': eng_text>

Эта строка будет использоваться в GET-запросе, который мы отправим на Яндекс.Переводчик из Python 3. Параметр ‘lang’ указывает направление перевода.

Теперь составляем и отправляем сам запрос:

>>> webRequest = requests.get(url_trans, params = trans_option)

После выполнения этой команды, мы уже имеем переведенный текст. Можно получить доступ к нему, выполнив инструкцию:

Собственно, осталось обработать эту строку. Вы можете обработать строку как сочтете нужным. Я просто вырезал русский текст при помощи среза, удалив, таким образом, все ненужные символы в ответе сервера:

>>> rus_text = webRequest.text >>> rus_text = rus_text[36:(len(rus_text)-3)] >>> rus_text 'текст для перевода'

Вот, собственно и все. Остальное (перебор в цикле для потокового перевода) достаточно просто, как и сохранение результата в файл. Самая проблема была именно в автоматическом переводе.

Не забывайте указывать ссылку на Яндекс.Переводчик, чтобы в какой-то момент не увидеть ошибку 404 — своего рода посыл от Яндекса куда подальше, за слишком наглое использование его сервиса.

Чтобы получить более волную информацию о возможностях сервиса, изучите документацию на API Яндекс.Переводчик.

Если Вам понравилась статья, не забывайте ставить лайк ;).

Источник

Читайте также:  Сервер баз данных php
Оцените статью