全新的mdx/mdd词典制作工具

可以了。不过又遇到个问题,就是生成的mdx文件不可以通过 mdict-utils 解压mdx到txt了。

又试了下,用wikit解压没问题。

Try Brutal Force on Encrypted Key Blocks
— Elapsed time: 0.000798 seconds —
Traceback (most recent call last):
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 101, in init
self._key_list = self._read_keys()
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 350, in _read_keys
key_block_info_list = self._decode_key_block_info(key_block_info)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 134, in _decode_key_block_info
assert(key_block_info_compressed[:4] == b’\x02\x00\x00\x00’)
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/Users/xxxx/Library/Python/3.9/bin/mdict”, line 8, in
sys.exit(run())
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/main.py”, line 102, in run
reader.unpack(args.exdir, args.mdict, split=split, convert_chtml=args.convert_chtml)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/reader.py”, line 157, in unpack
mdx = MDX(source, encoding, substyle, passcode)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 505, in init
MDict.init(self, fname, encoding, passcode)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 104, in init
self._key_list = self._read_keys_brutal()
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 382, in _read_keys_brutal
assert key_block_info[:4] == b’\x02\x00\x00\x00’
AssertionError

wikit dict --create TLD.mdx --output TLD.dictionary 执行到最后提示:

mac dictionary development kit is not installed, install now?

我已经安装了 development kit , 放在实用工具目录下了

或者说要如何才能让wikit检测到词典套件呢?

这个问题其实我也想过, 不过考虑到了如下几点, 目前不允许用户将 ddk(dictionary development kit) 安装到其他目录:

  1. ddk 需要用户在苹果官网注册帐号才能下载, 对于非开发者(占大多数)而言这个过程是比较烦人的
  2. 苹果自家的工具经常性的发生名称改动或者存入不同的安装包里面, 比如 ddk 在最开始位于 Auxiliary Tools for Xcode, 现在又位于 Additional Tools for Xcode 包中, 很难保证苹果不在下一个版本任性的将其放到另外一个包中.
  3. 以 Xcode 12.5 的 Additional Tools for Xcode 为例, 其大小为 24M, 实际上 ddk 部分只有 1M 多.
  4. 如果后续逆向出了 mac 的词典格式, wikit 自己管理的 ddk 可以直接去掉, 用户使用上是无感的.

因此, 我单独提取了 ddk, 放在这里, 启动程序时会提示自动下载安装,
如果你不想让它下载安装, wikit 会提示你应该把该工具安装到哪里, 你手动下载安装到指定位置然后重新使用 wikit 制作词典即可.

这个问题看着像是 mdict-utils 检测压缩方式不为 2(zlib压缩), 现在 wikit 生成的 mdx 默认是不压缩的(为 0), 它这里断言失败了. 不过目前没有更多精力去兼容其他工具了.

:grinning_face_with_smiling_eyes: 想问问作者,对于复杂的mdx词典转换怎么处理, 比如在用 PYGLOSSARY 转换成功后,处理词典xml文件的问题 :链接跳转,发音、图片等, 还有转换语音文件 ,有些词典的发音文件是spx格式,需要转换成wav格式或者mp3 ,完成后再进行编译词典。 wikit 这一部分是怎么处理的呢?

这些属于完善功能的部分, 目前暂无这方面的计划.

目前制作mac 词典的话 可以添加有发音的词典吗?

这就是没有统一 specifications 的弊端。
虽然可以说mdx2.0是个基本上已经开源的格式,看上去实现不难。但大大小小的坑是真的多,导致不同程序之间的各类兼容性问题。

1 个赞

在转换词典有个报错 ,词典是简明Bing

Error: [src/main.rs].[204]: Failed to create mac dictionary

Caused by:
    0: [src/mac.rs].[180]: cannot run command '/Users/vivian/Library/Application Support/wikit/macddk/bin/build_dict.sh' 'concisebing' '/Users/vivian/Downloads/dict/wikit/concise_bing.xml' '/Users/vivian/Downloads/dict/wikit/concise_bing.css' '/Users/vivian/Downloads/dict/wikit/concise_bing.plist'
    1: [src/util.rs].[95]: /Users/vivian/Downloads/dict/wikit/concise_bing.xml:6: parser error : attributes construct error
                        <link  href="concise_bing.css" rel="stylesheet" type="text/css"
                                                                                      ^
       /Users/vivian/Downloads/dict/wikit/concise_bing.xml:6: parser error : Couldn't find end of Start Tag link
                        <link  href="concise_bing.css" rel="stylesheet" type="text/css"
                                                                                      ^
       /Users/vivian/Downloads/dict/wikit/concise_bing.xml : failed to parse
       Error.

作者前面有说。

这个我已经改好标签了, 就是不知道如何进行下一步

作者,请问我修改了xml标签后,如何对词典进行下一步呢?

我看 mac 词典是支持发音的, 但是暂时没有支持计划.

MDX 单独发我一下, 我看一下是什么问题.

这个报错 是因为生成的xml 错误

<link  href="concise_bing.css" rel="stylesheet" type="text/css"/ />

我手动修改了xml 文件

<link  href="concise_bing.css" rel="stylesheet" type="text/css" />

不清楚如何进行下一步编译词典, 用 pyglossary 转换词典的时候是输入 make

邮件已发送 !!

更改一下制作 mac 词典的逻辑, 在转换到 xhtml 这一步出错的时候, 用户可以修改中间文件, 然后再执行转换, 实现之后我发个版本.

2 个赞

可以 坐等 :grinning_face_with_smiling_eyes:

1 个赞

必应这本词典太大了, mac ddk 已经跑了一个小时了, 还没完事儿…

400多万词条, 简明英汉的增强版 我的最爱 :grinning: :grinning: