ECDICT
ECDICT copied to clipboard
根据csv文件,3分钟实现一个完整的命令行词典(含发音,模糊搜索等)
大概想法很简单:
- fzf用于界面及模糊搜索;
- sqlite3用于索引和查词;
say(mac only)用于发音
实现很简单:
先把csv导入到sqlite3的db文件~/Documents/dict/ecdict.db
mkdir ~/Documents/dict
sqlite3 ~/Documents/dict/ecdict.db
sqlite>.mode csv
sqlite>.import ecdict.csv dict
生成索引,后续用于给fzf搜索
sqlite3 ~/Documents/dict/ecdict.db 'select word from dict;' > ~/Documents/dict/all.txt
实现shell命令,写到~/bin/ecdict中,并chmod +x ~/bin/ecdict
#!/bin/sh
function __dict_search() {
echo $(sqlite3 ~/Documents/dict/ecdict.db "select word,phonetic,definition,translation,tag,frq,exchange from dict where word = '$1';" | awk -F '|' '{printf "%s [%s]\\n\\n%s\\n\\n%s\\n\\n%s\\n\\nfreq:%s\\n\\n%s", $1,$2,$3,$4,$5,$6,$7}')
}
__dict_search "$@"
贴到~/.bashrc或者~/.profile之类的rc文件里,souce一下就能使用ec来做搜索了
function _ecdict() {
cmd='ecdict {}'
cat ~/Documents/dict/all.txt| fzf --bind "enter:execute(say {} &> /dev/null &)" --preview="$cmd" --preview-window=top:80%
}
alias ec=_ecdict
效果很好,回车可以发音。
有意思,但我已提供功能更强大的stardict.py了,直接convert成sqlite数据库后查询结果更丰富,还可以做色彩高亮,词形变换这些也很方便