一个goldenDict的辅助油猴脚本

话不多说,先看下效果

dict

其实差不多就相当于个划词什么的扩展,不过鉴于goldenDict或者goldenDict-ng本身的功能,特别是支持海量的mdx词典和其它可定义的一些扩展功能么,功能上也不输一些划词扩展,因为是在本地环境么,所以响应时间还要快些。

本来goldenDict本身有个按复制快捷键就可以弹出查词对话框的功能,不过对于懒人来说还是略麻烦了些,虽然还有个取词模式也挺方便么,但容易误触发,加上之前写过或者说改过一个日语的划词词典脚本么,所以就想着通过油猴脚本来实现直接调用两次系统复制快捷键ctrl+c 来触发goldenDict。

在开发的时候开头还以为挺简单,以为只要在弹出图标加个点击事件,在点击事件中模拟按下按键的事件,也就是KeyboardEventdocument.dispatchEvent 一下就行了,结果么显然没效果。js的这些事件只对浏览器自身有效,相当于是让浏览器以为按了这些键而已,操作系统或者其它程序不知道。后面搜了下么这种似乎就类似于啥按键精灵的操作,说是一般用ptyhon可以实现之类的,然后找到个相关的demo,大概瞅了下代码么,发现js和pyhton用了个socket交互,原来模拟按键的操作么是python调用的库触发的。所以就搜了下golang有没类似的库,比较用pyhton还得装相关的环境略麻烦些,还真找到个这种类型的库名叫robotgo,试了下还真的能用,就是编译的依赖略麻烦些,用到了cgo,底层就是调用的c的一些大概是系统级的库类吧。

然后由此么也想到umi-ocr,之前搜到过用goldenDict与于联动的文章,原理也是通过快捷键,按umi-ocr的截图快捷键,获取解析的文本后复制,再调用goldenDict的快捷键来查词,就是一完整的ocr翻译操作了。然后在golang上找到了监听剪切板的库,中间判断下万一ocr没有解析得出来,也通过油猴脚本实现了只点击下就触发完成ocr翻译的操作。

ocr

这一顿操作感觉效果还是可以,挺像那么回事儿,只是油猴脚本触发ocr的位置在脚本扩展菜单那儿得多点两下,没办法是想弄到右键菜单始终没弄出来,然后本来想再弄个快捷键的设置因为不同系统有些快捷键是不一样,但要现手写个表单加样式嫌麻烦就懒得弄了,遇到直接改脚本好了。真正唯一麻烦点都得手动先在终端执行go程序,也就是一个httpserver服务,想弄成systemd这种开机后台服务会报Could not open main display什么的错,感觉可能跟操作系统底层机制相关吧,这个确实就不晓得该怎么处理了。

最后附一个成品代码,见 github

发表回复

您的电子邮箱地址不会被公开。