summaryrefslogtreecommitdiff
path: root/wa
blob: dc88aaf18efdb1ec4814a36497840a5716c296a1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
#
# by Sairon Istyar, 2012
# distributed under the GPLv3 license
# http://www.opensource.org/licenses/gpl-3.0.html
#

API_KEY_FILE=$HOME/.wolfram_api_key

if [ ! -f "$API_KEY_FILE" ] ; then
    echo "No key file: $API_KEY_FILE" >&2
    exit 1
fi
. "$API_KEY_FILE"
if [ -z "$API_KEY" ] ; then
    echo "No API_KEY set in key file: $API_KEY_FILE" >&2
    exit 2
fi

# properly encode query
q=$(echo ${*} | sed 's/+/%2B/g' | tr '\ ' '\+')

# fetch and parse result
result=$(curl -s "http://api.wolframalpha.com/v2/query?input=${q}&appid=${API_KEY}&format=plaintext")

if [ -n "$(echo ${result} | grep 'Invalid appid')" ] ; then
	echo "Invalid API key!"
	echo "Get one at https://developer.wolframalpha.com/portal/apisignup.html"
	echo -n 'Enter your WolframAlpha API key:'
	read api_key
	echo "API_KEY=${api_key}" >> ~/.wolfram_api_key
	exit 1
fi

result=`echo "${result}" \
	| tr '\n' '\t' \
	| sed -e 's/<plaintext>/\'$'\n<plaintext>/g' \
	| grep -oE "<plaintext>.*</plaintext>|<pod title=.[^\']*" \
	| sed -e 's!<plaintext>!!g; \
		s!</plaintext>!!g; \
		s!<pod title=.*!\\\x1b[1;36m&\\\x1b[0m!g; \
		s!<pod title=.!!g; \
		s!\&amp;!\&!g; \
		s!\&lt;!<!g; \
		s!\&gt;!>!g; \
		s!\&quot;!"!g' \
		-e "s/\&apos;/'/g" \
	| tr '\t' '\n' \
	| sed  '/^$/d; \
		s/\ \ */\ /g; \
		s/\\\:/\\\u/g'`

# print result
echo -e "${result}" | less