From dc7137f17a37f274af5d23042743e8a50b642da0 Mon Sep 17 00:00:00 2001 From: Fernando Crespo Date: Fri, 23 May 2014 11:41:39 -0300 Subject: [PATCH] First release in pipy --- MANIFEST.in | 2 ++ README.md | 5 +++-- requirements.txt | 2 ++ setup.py | 27 +++++++++++++++++++++++++++ wolframalpha.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 MANIFEST.in create mode 100644 requirements.txt create mode 100644 setup.py create mode 100644 wolframalpha.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..8afbefe --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include README.md +include requirements.txt diff --git a/README.md b/README.md index 3119873..e2fbe46 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ -wolframalpha-cli -================ +# WolframAplha CLI + +Command Line Interface to run queries on [WolframAlpha](www.wolframaplha.com) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..caf2383 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +colorama==0.3.1 +requests==2.3.0 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..a568d42 --- /dev/null +++ b/setup.py @@ -0,0 +1,27 @@ +#coding: utf-8 +import os +from setuptools import setup + +setup( + name = "wolframalpha-cli", + version = "0.1", + author = "Fernando Xavier de Freitas Crespo", + author_email = "fernando82@gmail.com", + description = ("Command Line Interface to run queries on WolframAlpha"), + long_description = "".join(open('README.md').readlines()), + license = "MIT", + keywords = "wolframalha cli python utility", + url = "https://github.com/fcrespo82/wolframalpha-cli", + py_modules = ['wolframalpha'], + classifiers = [ + "Development Status :: 4 - Beta", + "Environment :: Console", + "Topic :: Utilities", + "License :: OSI Approved :: MIT License", + ], + install_requires = open('requirements.txt').readlines(), + entry_points = { + 'console_scripts': ['wolframalpha-cli = wolframalpha:main', + 'wa-cli = wolframalpha:main'] + }, +) diff --git a/wolframalpha.py b/wolframalpha.py new file mode 100644 index 0000000..216b6b6 --- /dev/null +++ b/wolframalpha.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +#coding: utf-8 + +import requests +import sys +import re +import os +from HTMLParser import HTMLParser +from urllib2 import quote +try: + from colorama import init, Fore, Back, Style + init() +except Exception, e: + class Fore(): + GREEN = "** " + RESET = " **" +try: + with open(os.path.expanduser("~/.wolfram_key"), "r") as _file: + wolfram_alpha_key = "".join(_file.readlines()) +except Exception, e: + print("""Invalid API key! +Get one at https://developer.wolframalpha.com/portal/apisignup.html""") + api_key = raw_input('Enter your WolframAlpha API key: ') + wolfram_alpha_key = api_key + with open(os.path.expanduser("~/.wolfram_key"), "w") as _file: + _file.writelines(api_key) + +__version__ = '0.1' + +def main(): + if len(sys.argv) > 1: + query = " ".join(sys.argv[1:]) + + url = u'http://api.wolframalpha.com/v2/query?input={q}&appid={API_KEY}&format=plaintext'.format(API_KEY = wolfram_alpha_key, q = quote(query)) + + resp = requests.get(url) + + for pod in re.findall(r'.+?', resp.text, re.S): + title = re.findall(r'', pod, re.S) + parser = HTMLParser() + print(Fore.GREEN + parser.unescape("".join(title).strip()) + Fore.RESET) + for inner in re.findall(r'(.*?)</plaintext>', pod, re.S): + print(parser.unescape(inner.strip())) + print('') + +if __name__ == '__main__': + main() \ No newline at end of file