使用stardict固然方便,但是有时在命令行工作的时候来回切换就有些不是很爽了,于是动手调用有道的ap直接在命令行翻译了。
先写一个php脚本,调用有道的api,脚本很简单,主要用来获取数据用
#!/usr/bin/php
<?
function trans($word)
{
$url="http://fanyi.youdao.com/openapi.do?keyfrom=quanwei9958&key=2020891949&type=data&doctype=text&version=1.0&q=" .urlencode($word);
$value=file_get_contents($url);
return $value;
}
print(trans($argv[1]));
?>
但是在调用的时候php总是先给我弹出一个warning ,php初始化时候的warning,我不想每次使用的时候将错误流重定向了,所有又使用bash来替我完成这一步
#!/bin/bash
answer=`./ts.php $1 2>/dev/null |grep result`
echo ${answer#result=}
这个shell脚本的主要作用就是将ts.php(就是上面php脚本)的错误流重定向到/dev/null里,避免直接输出到屏幕上。然后将没用的数据再过滤一下,直接显示我想要的结果。
将这两个脚本保存在同一目录下调用shell脚本来翻译
实例(php脚本文件名为ts.php shell脚本为tran.sh)
quanwei@quanweiC:~/desktop$ ./tran.sh hi
嗨
quanwei@quanweiC:~/desktop$ ./tran.sh 你好
How are you
quanwei@quanweiC:~/desktop$ ./tran.sh 风扇
fan
因为没有数据库的支持,所以每次都是联网获取数据,如果以后使用过程中发现有必要加上数据库的时候就再加上数据库吧。
PS:@date 2014年 10月 06日 星期一 16:38:24 CST
已经找到了,查了下curl的发送get请求的时候可以使用urlencode,这样脚本就简单多了,而且完美翻译
语句也更精简了
url="http://fanyi.youdao.com/openapi.do?keyfrom=quanwei9958&key=2020891949&type=data&doctype=text&version=1.0&q=%1"
answer=`curl -G --data-urlencode $@ ${url} 2>/dev/null|grep result`
answer=${answer#result=}
echo $answer