diff options
author | Andrew Dunai | 2016-04-19 13:21:01 +0300 |
---|---|---|
committer | Andrew Dunai | 2016-04-19 13:21:01 +0300 |
commit | 48edd5162fadfb35896505075667934bcba65c3a (patch) | |
tree | ff23ad49211c9c49015d811ddf619c27ec0f7074 | |
download | aur-48edd5162fadfb35896505075667934bcba65c3a.tar.gz |
Initial commit.
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 15 | ||||
-rwxr-xr-x | google-translate | 45 |
3 files changed, 77 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..f75aefa4b4bf --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,17 @@ +# Generated by makepkg 4.2.1 +# Thu Apr 9 16:35:58 UTC 2015 +pkgbase = google-translate + pkgdesc = A simple CLI google translator (command-line). + pkgver = 0.2 + pkgrel = 2 + url = http://dun.ai + arch = any + license = GPL + depends = python2 + depends = python2-mechanize + depends = python2-beautifulsoup4 + source = google-translate + md5sums = c2dae6294c95cf55c39ba7b68c5ff6f1 + +pkgname = google-translate + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..94c8550c9a90 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=google-translate +pkgver=0.2 +pkgrel=2 +pkgdesc="A simple CLI google translator (command-line)." +arch=('any') +url="http://dun.ai" +license=('GPL') +depends=('python2' 'python2-mechanize' 'python2-beautifulsoup4') +source=(${pkgname}) + +package() { + install -Dm755 ${srcdir}/${pkgname} ${pkgdir}/usr/bin/${pkgname} +} + +md5sums=('c2dae6294c95cf55c39ba7b68c5ff6f1') diff --git a/google-translate b/google-translate new file mode 100755 index 000000000000..1bc8395d332e --- /dev/null +++ b/google-translate @@ -0,0 +1,45 @@ +#!/usr/bin/env python2 + +import urllib2 +import argparse +import mechanize +from bs4 import BeautifulSoup + +PATTERN='http://translate.google.com/translate_a/t?client=x&text={text}&hl={src}&sl={src}&tl={dest}' + +parser = argparse.ArgumentParser( + description='Command-line interface for Google translate.', + epilog='Created by Andrew Dunai <andrew@dun.ai>' +) + +def lang_name(value): + if len(value) != 2 and value != 'auto': + raise argparse.ArgumentTypeError('Language code should be 2 digits or "auto".') + return value + +def not_empty(value): + value = value.strip() + if not len(value): + raise argparse.ArgumentTypeError('Text cannot be empty.') + return value + +parser.add_argument('src', metavar='<FROM>', help='Source language', type=lang_name) +parser.add_argument('dest', metavar='<TO>', help='Destination language', type=lang_name) +parser.add_argument('text', metavar='<TEXT>', help='Text to translate', type=not_empty) + +args = parser.parse_args() + +url = PATTERN.format(src=args.src, dest=args.dest, text=args.text.replace(' ', '+')) + +browser = mechanize.Browser() +browser.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')] +browser.set_handle_robots(False) +browser.open('https://translate.google.com') +browser.select_form(nr=0) + +browser.form['sl'] = [args.src] +browser.form['tl'] = [args.dest] +browser.form['text'] = args.text +response = browser.submit() +doc = BeautifulSoup(response.read()) +print ''.join([x.text for x in doc.select('span#result_box > span')]) |