昨天我在看电影,我不明白使用的一些词。所以我所做的是,每次我听不懂任何单词时,我都会启动我的浏览器并输入“define [word]”,然后谷歌就会告诉我这个词的含义。但是每次打开浏览器都很烦人(怪我;P)。
我们极客用户喜欢在我们的 linux 系统上操作什么?是的。终点站!
由于打开终端就像 Ctrl+Alt+T 一样简单,我认为如果有一个应用程序在那里使用字典会有所帮助。因此,建立这个的动机!
所以我们现在需要的是词典的单词数据库(废话!)。有一个免费且易于使用的在线词典,称为Glosbe 。它提供了一个非常整洁的 API ,虽然处于测试阶段。它以一种称为 JSON 的格式提供输出,这是所有 API 的标准。
为了使用这个 API,需要向 Glosbe 提供一个包含这个词的查询(HTTP GET 请求),它会返回这个词的含义(+其他项目,如短语等)。
例如,要搜索“hello”这个词,我们需要使用:
http://glosbe.com/gapi/translate?from=eng&dest=eng&format=json&phrase=hello&pretty=true
很明显看到这个词是“你好”[phrase=hello]。 Glosbe 也可以提供从一种语言到另一种语言的翻译。但现在,我们只需要一本英文词典。所以将 from-dest 都设置为英语。当然,这里的输出格式是 JSON(也可以更改为 XML)。访问上面的链接以查看 JSON 格式的输出格式。
现在,剩下的任务是编写一个脚本,用用户想要输入的词替换“hello”(这里)这个词,接收输出,单独解析它的含义并显示。
Python进来了!我们需要编写Python脚本来解析返回的JSON对象。
import urllib #library for fetching internet resources
import json #library for json operations
#import os
#title=os.environ["word"]
title = input("Enter word to search: ") #Input word to search dictionary
print ("Word: ",title )
#stores the json formatted output to a variable
url = 'http://glosbe.com/gapi/translate?from=eng&dest=eng&\
format=json&phrase='+title+'&pretty=true'
#json representation of url is stored in variable result
result = json.load(urllib.urlopen(url))
#get the first text in "meaning" in "tuc" from result
print ("Meaning: ", result["tuc"][0]["meanings"][0]["text"])
输入
Geek
输出:
Enter word to search: Word: geek
Meaning: expert in a technical field, particularly to do with computers
惊讶?只需 9 行代码即可完成此任务!运行它,看看你是否安装了Python编译器。
这个怎么运作?
- 这里,变量 ‘url’ 存储来自 Glosbe 的 JSON 格式的输出。
- load 将获取一个Python对象并将其转储到一个字符串[存储在变量 ‘result]’ 中,该字符串是该对象的 JSON 表示。
- 最后,使用 ‘result[“tuc”][0][“meanings”][0][“text”]’ 单独解析 JSON 的含义并打印。
所以现在它在执行这个脚本时工作。为了做到这一点,我必须导航到存储它的目录,然后运行它。同样,我们可以通过编写一个调用Python脚本的 shell 脚本来简化它。关键是,无论终端所在的目录如何,都可以从任何地方访问它。
所以写了一个bash脚本来调用Python代码。
#!/bin/bash
word="$1"
export word
python /home/vishaag/hacks/bash_scripts/terminal_dictionary.py "word"
要使 bash 文件可全局访问,需要:
- 添加您希望 Linux 搜索的目录,这也是您的脚本所在的位置。
- 在文件 .bashrc 中添加目录(位于主文件夹并隐藏;按 Ctrl+H 可查看隐藏文件)。例如,我必须在 .bashrc 文件的顶部添加目录/home/vishaag/hacks/bash_scripts (使用像 gedit/kate 等的文本编辑器)。
- 在此之后,linux 可以从此文件夹访问您的 bash 脚本。
‘word=”$1?并在脚本中导出 word’ 是将参数从 bash 获取到Python脚本。
$1 表示第一个参数($2 第二个,依此类推。为 n 个参数写 $@)。例如,当你写作时,
$dict hello
(dict 是 bash 脚本的名称) hello 存储在$1 (并复制到 ‘ word ‘ 这里)
然后将其导出到Python脚本。
注意:删除上面Python代码的注释和删除/注释 ‘title = raw_input(“Enter word to search: “)’ 以便使用来自 bash 的参数。
import os
title=os.environ["word"]
#title = input("Enter word to search: ")
它完成了!!
现在您要做的就是保存 shell 脚本并像在终端上运行任何应用程序一样运行它。
这是另一个示例输出
干杯!
参考:
- http://www.pythonforbeginners.com/code-snippets/parse-json-objects-in-python
- http://xmodulo.com/2013/05/how-to-parse-json-string-in-python.html
- http://linuxcommand.org/lc3_wss0010。 PHP