summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Dunai2016-04-19 13:21:01 +0300
committerAndrew Dunai2016-04-19 13:21:01 +0300
commit48edd5162fadfb35896505075667934bcba65c3a (patch)
treeff23ad49211c9c49015d811ddf619c27ec0f7074
downloadaur-48edd5162fadfb35896505075667934bcba65c3a.tar.gz
Initial commit.
-rw-r--r--.SRCINFO17
-rw-r--r--PKGBUILD15
-rwxr-xr-xgoogle-translate45
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')])