Skip to content

Instantly share code, notes, and snippets.

@dvapelnik
Last active April 27, 2018 12:25
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save dvapelnik/6f06e6467de8416867aa to your computer and use it in GitHub Desktop.
Translate in command line using YandexTranslateAPI
YandexApiKey = 'Your.Yandex.Translate.API.Key.Should.Be.Here'
#!/usr/bin/python
import config
import sys
import requests
import json
import urllib
def error(message, status_code):
sys.stderr.write(message + '\n')
sys.stderr.write('Status code: {0}\n'.format(status_code))
textFromInput = ''.join(sys.stdin.readlines())
urlDetectLanguage = 'https://translate.yandex.net/api/v1.5/tr.json/detect?key={0}&text={1}'
urlTranslate = 'https://translate.yandex.net/api/v1.5/tr.json/translate?key={0}&lang={1}&text={2}'
requestDetectLanguage = requests.post(urlDetectLanguage.format(config.YandexApiKey, urllib.quote(textFromInput)))
if requestDetectLanguage.status_code == 200:
detectedLanguage = json.loads(requestDetectLanguage.text)['lang']
langPair = ''
if detectedLanguage == 'ru':
langPair = 'ru-en'
else:
langPair = detectedLanguage + '-ru'
requestTranslate = requests.post(urlTranslate.format(config.YandexApiKey, langPair, urllib.quote(textFromInput)))
if requestTranslate.status_code == 200:
translatedText = ''.join(json.loads(requestTranslate.text)['text'])
sys.stdout.write(translatedText.encode('utf-8'))
else:
error('Error with translating', requestTranslate.status_code)
else:
error('Error with language detect', requestDetectLanguage.status_code)
#!/usr/bin/env bash
TEXT=$(xsel -o)
TRANSLATED=`echo $TEXT | python /path/to/previous/script/main.py`
notify-send "$TEXT" "$TRANSLATED" -i accessories-dictionary -t 2000
echo $TRANSLATED | xsel --clipboard
@dvapelnik
Copy link
Author

Scripts config.py and main.py translate text from stdin and write translated text into stdout
translate.sh shows translated text with notify bubble in Ubuntu Unity and writes translated text into clipboard

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment