manateelazycat / popweb

Show popup web window for Emacs
146 stars 17 forks source link

popweb dict 支持传入 js 文件代码和 popweb-dict-*-input/pointer 传入参数以提供用户自定义功能 #53

Closed czqhurricnae closed 1 year ago

czqhurricnae commented 1 year ago

希望支持该特性的原因是我通过 https://dict.eudic.net/liju/en/revolutionary 欧路例句查询某个英语单词的例句。

并且希望能够把原声例句保存到 Anki 中,以便以后方便练习听力,复习单词。

在网页中提取例句,原声音频,发送给 Anki 创建卡片,需要较长的代码,所以希望能加载文件中的代码,和传入参数执行。 (在我的设想,该参数可以是在 emacs 中调用 popweb-dict-eudic-liju-point 光标下的单词所在的句子。)

将所需的 js 文件放在 popweb/extension/dict/js/eudic-liju.js 中 通过

(popweb-dict-create "eudic-liju"
                    "https://dict.eudic.net/liju/en/%s"
                    ""
                    (popweb-load-js-code "eudic-liju.js")
                    )

创建 popweb-dict-eudic-liju-input 命令,同时传入 js 代码。

通过

(defun my-popweb-dict-eudic-liju-search-at-point ()
      (interactive)
      (if (display-graphic-p)
          (popweb-dict-eudic-liju-input nil (lc-corpus--sentence))))

my-popweb-dict-eudic-liju-search-at-point 获取光标下的单词,和 (lc-corpus--sentence) 获取到的单词所在的句子。

在查询单词例句的网页上,点击自己中意的例句后的发送 Anki 图标,发送欧路例句,原声音频,和通过参数形式传入的单词所在的上下文句子,发送到 Anki 中。(这部分的功能是用户在 eudic-liju.js 中自定义的)

演示图如下:

查询 That success has been achieved with the help of assembling an all-star squad with some of the best players in the world. success 单词的例句。 点击原声例句 Perseverance and determination contribute greatly to one's success.毅力和决心是学生成功的关键。 后的发送图标,完成流程。

截屏2023-02-08 02 06 34

Anki 卡片中有查询单词的时的上下文句子,欧路原声例句,原声音频。

截屏2023-02-08 02 07 18

manateelazycat commented 1 year ago

这两天有点忙,估计要周五才有时间看补丁

manateelazycat commented 1 year ago

感谢补丁, 但是需要改一下, review 建议已经标注。

manateelazycat commented 1 year ago

还有很多小问题, 继续改吧。

manateelazycat commented 1 year ago

@czqhurricnae 最后两个小细节, Python返回值不需要 ()

manateelazycat commented 1 year ago

感谢补丁,辛苦啦