仓库源文站点原文


key: 58 title: "DWords2: 全新版本的弹幕背单词" tag: tools

aside: false

我觉得通过弹幕背单词是个好主意, 不过一年多前我用 Python 写的那个软件有点太简陋了, 局限性比较强, 而且放到现在还有各种兼容性问题. 因此这次我重写了 DWords, 全新版本使用 Electron 开发, 界面 (相对一代的烂界面) 要好看得多, 且新增了一些功能. 新版本使用 WebDAV 同步, 用坚果云就可以很好地同步了, 比一代的邮件同步强很多.

项目主页 | 下载地址

<video src="/assets/videos/dwords2_1.mp4" width="100%" controls></video>

主要功能

弹幕除了显示释义外, 还有音标, 发音按钮, 以及外部词典链接. 外部词典可以自定义. 弹幕大小, 移动速度, 颜色和透明度都可设置, UI 相对一代精细很多.

danmaku{width="300"}

支持学习计划, 可以从词库创建学习计划. 支持常用的词库如四六级, 考研, 雅思等. 当然也支持自定义计划, 学习计划还能导入导出. DWords 维护一定数量的 "当前单词" 列表, 随机播放当前列表中的单词; 标记为已记住的单词会从当前列表中移除, 并依次从计划中补充新的单词.

<video src="/assets/videos/dwords2_2.mp4" width="90%" controls></video>

支持查词功能, 可以当词典使用. 如果单词不在计划中, 可以快速添加到计划; 如果已经在计划中, 还可以编辑它.

<video src="/assets/videos/dwords2_3.mp4" width="90%" controls></video>

支持使用 WebDAV 同步. 这样我们就可以使用任何支持 WebDAV 的云盘同步. 以坚果云为例, 我们先在根目录创建一个文件夹 DWords, 然后进入安全选项设置页面, 创建一个 WebDAV 授权.

jianguoyun

这里的服务器地址表示云盘的根目录, 因此 https://dav.jianguoyun.com/dav/DWords 便表示 DWords 目录. 我们进入 DWords 的设置页面设置好相应的 WebDAV URL, 用户名和密码即可使用同步功能了.

sync{width="650"}

DWords 会定时自动同步, 也可以点击主界面上的 "Sync" 按钮手动同步.

实现

DWords2 使用 Electron 构建. 前端使用 Vue 框架, 布局样式则使用 Bootstrap. 我作为一个后端开发确实不太懂这些东西, 开发过程也感受到前端开发并不容易. 语言用的是 js, 代码基本上是面向过程的, 状态-更新状态的模式. 数据存储使用的是 SQLite.

为了通过云盘同步, 我的做法是将单词列表序列化成 CSV, 相比 JSON, CSV 占用空间小很多. 同步使用的是全量 + 增量的方式. 单词的添加和修改会先以增量的方式上传到云盘, 拉取增量数据时会从上次同步的位置开始取, 这样同步速度会比较快. 如果增量文件过多, 就会将所有增量文件整合成一个全量文件. 这种方式支持同步大量单词.

内置词典使用的是 skywind3000/ECDICT, 语言库使用的是 Lingoes 的语音库. 在此向 Linwei 和 Lingoes 表示感谢.

后续工作

后续可做的东西还是有很多的. 现在弹幕是随机播放的, 且标记为已记住的单词不会再出现. 后续可能会做一个根据遗忘曲线复习的功能. 还可以做一些统计图表, 记录每天记住的单词数量, 每个单词查看释义的次数等.

最后希望这个工具能对英语学习者有帮助, 也祝大家都能学好英语.