mdx转StarDict教程

摘要:国产的墨水屏设备基本都不支持加载 mdx 格式的词典,这篇文章手把手教你如何转制词典,同时介绍如何处理日语词典中常见的@@@。


创建日期: 2021-11-06
修改时间: 2023-6-23
标签: python,blog,非辞書

更新

2023-06-23

回过头来看自己写的第一篇教程,真的是佩服自己有脸发出来233:错别字、标点符号、逻辑混乱等问题随处可见。

不过这篇写于2年前初冬的某个深夜的文章,可以算是「非辞書」这个系列的开山之作——在转换过程中得到的 txt 再稍微加工下就可以导入 AnkiHelper 使用。在接下来的寒假中,我一边用 AnkiHelper收集阅读过程中不认识的单词,一边收集遗漏的活用变形,并于 3月发布了 「非辞書」的v1版本。

前言

网上流传的 GetDict2.6 和 2.3 版本支持直接将 mdx 转为 idx 文件(但开发者还在维护的 MdxExport3.6 已经放弃对这一功能的支持),不过考虑到网上的各种教程一般都是有关英文词典的转换,对日语词典涉及不多,所以写这篇文章记录把 mdx 转 StarDict 时如何处理@@@语法,算是抛砖引玉,希望对大家有所帮助。同时也在文末会附上处理过程中自己的疑问,欢迎大家与我交流。

总流程

先总结下流程

  1. Mdx 转为 txt 源文件 参考这篇安卓版 Goldendict 支持.mdx.mdd 的方法(经验),按照文章所述用 GetDict2.6 把 mdx 转成 txt 文件即可,不一定非要用正则表达式处理——之后处理可能会产生一些小问题,到时候一起处理;
  2. 处理@@@问题 借鉴这篇Python 辅助 MDX 转 MOBI(以 AHD5th 为例),文章从第三步开始就是与制作 mobi 词典有关的内容,所以只看前 2 步用就可以了。
  3. txt 转 mdx,使用欧路词典官方提供的 MdxBuilder,下载地址: https://www.eudic.net/v4/en/home/EudicBuilder
  4. 修改格式,灵感还是源于这篇安卓版 Goldendict 支持.mdx.mdd 的方法(经验),但实际操作中没有套用文章的正则表达式,另外如果下一步没有遇到报错或者查词没有问题,可以跳过这一步;
  5. Mdx 转 StarDict 参考mdx 如何转为 StarDict 格式

上面 5 步,最麻烦的是处理@@@和修改格式,所以下面列出了整个过程的的处理思路,也包括自己遇到的一些问题,所以逻辑比较乱,建议自己动手处理遇到问题时当作文档来查。

处理好@@@问题

直接利用Python 辅助 MDX 转 MOBI(以 AHD5th 为例)提供的脚本也能达到目的,但我在原作者分享的脚本做了如下修改,这里做个简单说明:

  • 利用pyinstaller对源码进行了打包,现在不用安装 Python 也可以用了,打包好的文件在 dist 文件夹下;
  • 修改文件路径的语法,现在只需将待处理的 txt 重命名为待处理.txt放在 exe 同一目录下即可;
  • 删除了print()语句,处理过程没有任何提示;主要是因为命令行一次最多处理的字符有上限,运行我提供的文件的话,会在一段时间后自动停止运行,不过处理完命令行界面不会关闭;
  • 启动后命令行不会有任何提示,处理完成后命令行界面会自动关闭。可以观察文件访问时间,掌握处理状态。

常见问题

直接将上述处理好的 txt 文件丢到 MDX Builder 打包可能遇到下面这样的报错。

MDXbuilder

注意这里的数字不是行数,是字节数,

报错提示

以 EmEdiotor 为例,快捷键Ctrl+G然后输入报错信息中的数字,跳转到相应位置检查文件格式即可

跳转检查

关于mdx的文件格式要求,我是通过阅读欧路词典提供的 MdxBuilder 压缩包的manual_Chn.txt,和观察了手上可以直接转换的词典格式特点,总结得出的结论,不保证下面的方法能解决所有问题。

下面谈到 3 点,难度依次递增,但重要程度递减,请结合自己的能力与时间尝试。

  • 大部分问题都是因为文件格式不满足这 2 点:(注意"</>"和下一个记录间不要有任何其他空行,请参考 example.txt 中的例子)和这句每个项目两行第一行是关键字第二行开始是正文, 这里的正文应该包括关键字。
  • 有强迫症的:去除没用的辅助说明文字<!-- /.ex 解説 -->
  • 去除跳转语法<a href="entry://(.*?)">(.*?))</a>:我只是在 kindle3 和博阅 P10用这种格式的词典,它们都不支持跳转,
  • 如果有需要,还可以删除图片有关的内容节约空间,虽然这篇安卓版 Goldendict 支持.mdx.mdd 的方法(经验)给出了显示图片的方法,但我只是在 kindle3 和博阅 P10用这种格式的词典,它们都不支持图片,也一起删了,具体操作无法照搬,只能根据经验一点点删,有兴趣的自己摸索

另外,下图这种情况说明马上就要成功了,此时生成的文件全是 0kb 是正常情况,耐心等待即可。
|500

我遇到的问题

词典问题:多意项
思路:暂无

词典问题:无法查询动词变形
思路:先抓出所有动词 再将他们的变形一一罗列,最后再一一指向对应的原动词的释义?看起来有点花时间,用空再做。

MDX Mdx mdx到底谁是正确的拼写?🤣

关于博阅电子书词典的疑问
博阅P10的说明文件上明确说明了支持mobi甚至是prc格式词典,但作者从这里书伴Kindle 字典下载下载的词典,并不能使用…到现在也没有解决

致谢

感谢提供了教程的满星MAX、Oeasy chigre3等网友和提供了词典转换工具的yhhsdl🎉,没有他们的分享,就不可能这篇又烂又长的教程。

也感谢提供了词典源文件的网友,以及开发了StarDict词典的胡正先生,他们的工作是这篇教程出现的前提。

P.S.

这篇教程会发布在多个平台,所以直接在评论区留言可能要很久才会收到回复。欢迎直接发邮件到 NoHeartPen@outlook.com与我讨论制作过程遇到的问题,但拒绝伸手白嫖和没有意义、低级的白痴问题。如果你发了邮件,我过了两、三天都没回的话,请思考问题是不是出在自己身上,也请麻烦读一读『提问的智慧』。

文件分享

文中提到的部分工具 https://wwa.lanzoui.com/iEzGlw872uj 密码:7bh7

最后生成词典文件 idx 格式 https://wwa.lanzoui.com/iWs7Uw87lwf 密码:9sgw

又mdx转为txt格式,已经去除了@@@跳转语法,也删除了词典内跳转以及图片、音频等StartDict直接不支持的语法 https://wwa.lanzoui.com/iRO4Lw8833e 密码:2j7w

汇总 https://wwa.lanzoui.com/b010ytemb 密码:7lr3

最后,源文件就不提供了,网上一抓一大把,而且我手上这本也很旧了。

相关

FreeMdict_Idx 格式大辞泉:分享自己的成品