查看: 15428|回复: 277
打印 上一主题 下一主题

[工具] mdict-utils mdict 打包解包工具

  [复制链接]
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    362

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39704
    跳转到指定楼层
    1
    发表于 2019-4-2 14:22:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    记录付费主题, 价格: 5 粒米
    本帖最后由 zzzz_sleep 于 2022-4-28 22:52 编辑
    新建QQ群,可以讨论词典打包问题。点击链接加入群聊【MDict词典制作】:https://jq.qq.com/?_wv=1027&k=1WFrSwGs

    mdict-utils mdict 打包解包工具。

    1. usage: mdict [-h] [--version] [-k] [-m] [-q <key>] [--txt-db] [--db-txt] [-x]
    2.              [-d EXDIR] [--mdict-db] [--split-n <number>] [--split-az]
    3.              [-a <resource>] [--title <title>] [--description <description>]
    4.              [--encoding <encoding>]
    5.              <mdx/mdd>

    6. MDict pack/unpack tool

    7. positional arguments:
    8.   <mdx/mdd>             Dictionary MDX/MDD file

    9. optional arguments:
    10.   -h, --help            show this help message and exit
    11.   --version             show version
    12.   -k                    show mdx/mdd keys
    13.   -m                    show mdx/mdd meta information
    14.   -q <key>              query KEY from mdx/mdd
    15.   --txt-db              convert mdx txt to sqlite3 db. <mdx/mdd> is ".txt"
    16.   --db-txt              convert sqlite3 db to mdx txt. <mdx/mdd> is ".db"

    17. Reader:
    18.   -x                    extract mdx/mdd file.
    19.   -d EXDIR              extracted directory
    20.   --mdict-db            extract mdict to DB
    21.   --split-n <number>    split MDX TXT to N files
    22.   --split-az            split MDX TXT to files by a...z

    23. Writer:
    24.   -a <resource>         add resource file to mdx/mdd file
    25.   --title <title>       Dictionary title file
    26.   --description <description>
    27.                         Dictionary descritpion file
    28.   --encoding <encoding>
    29.                         mdx txt file encoding
    复制代码
    只有命令行,GUI 编写太痛苦了

    使用:

    本帖隐藏的内容

    Meta information::

        mdict -m dict.mdx

    All key list::

        mdict -k dict.mdx

    All key list::

        mdict -k dict.mdx

    Query key::

        mdict -q <word> dict.mdx

    Unpack
    ------
    Unpack MDX::

        mdict -x dict.mdx -d ./mdx

    Unpack MDX/MDD and split into 5 files::

        mdict -x dict.mdx -d ./mdx --split-n 5

    Unpack MDX/MDD and split into a...z files::

        mdict -x dict.mdx -d ./mdx --split-az

    Unpack MDD::

        mdict -x dict.mdd -d ./mdd

    Unpack MDX/MDD to sqlite3 DB::

        mdict -x dict.mdx --mdict-db
        mdict -x dict.mdd --mdict-db

    Pack
    ----
    Pack MDX::

        mdict --title title.html --description description.html -a dict.txt dict.mdx

    Pack MDX with many TXT files::

        mdict --title title.html --description description.html -a dict.part1.txt -a dict.part2.txt dict.mdx

    or::

        mdict --title title.html --description description.html -a txt_dir dict.mdx

    Pack MDD::

        mdict --title title.html --description description.html -a mdd_dir dict.mdd

    Other
    -----
    Convert TXT to sqlite3 DB::

        mdict --txt-db dict.txt

    Convert sqlite3 DB to TXT::

        mdict --db-txt dict.db

    安装:
    1. python3
    2. pip install mdict-utils



    评分

    6

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    362

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39704
    推荐
     楼主| 发表于 2019-12-30 12:14:58 | 只看该作者
    独行者 发表于 2019-12-27 21:20
    大佬,我知道你为什么要造轮子了,你在 Windows 上打包 OALD9 时那个 con 文件夹(系统保留文件名)是不是 ...

    我可没那么闲...
    1. 我都是在 Linux 下制作,可在 Linux 下没有打包工具,将数据上传到 windows 下,反复修改反复上传,太麻烦...
    2. 我的词典文件由好多个 txt 文件组成,比如 a.txt  ccc.txt a123.txt ,如果打包前还将先将他们合并在一起,麻烦。合在一起的文件太大,编辑不方便
    3. 原版的工具不支持大的打包文件。比如 喂鸡百科,不得以分成几个小的 mdx,不好管理。我专门测试过大的数据词典,上G的那种
    https://www.pdawiki.com/forum/thread-33745-1-1.html
    https://www.pdawiki.com/forum/thread-33767-1-1.html

    4. 新版的原版打包工具,只能输出 4.0 的mdx,不支持老2.0的mdx文件。可好多词典只支持2.0的,如 goldendict

    总之:更强大,更便捷,跨平台

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    534526

    灌水大神章笑傲江湖章推广专家QQ 章

    推荐
    发表于 2019-8-23 16:39:36 | 只看该作者
    好像默认是strip key的,这貌似会导致像's -'s 之类的词条在打包后可能无法查询
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    362

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39704
    推荐
     楼主| 发表于 2019-4-8 21:35:52 | 只看该作者
    jeanleem6 发表于 2019-4-7 10:53
    楼主提供的工具(跨平台)打包/解包确实不错,不过用 mdict-utils 打包的词典在ios/Mac 版欧路中大多数词都 ...



    找到问题了,是词典排序的问题,请更新软件   pip3 install -U mdict-utils

    GoldenDict 默认读取全部词条,然后存储在自己的缓冲区中,查询在缓冲区中进行,可以对全部词条搜索

    MDict 严重依赖于词典自身排序,根据排序规则查找词条所在扇区块,然后再找到词条。如果排序不符合他的规则,即使有这个词条,但不能找到正确的扇区块,也不能定位词条

    ecdic 更怪,他也依赖于词典自身排序,基本规则与 MDict 相同,但遇到特殊字符时,如 空格 减号 等,有时能查出,有时不能。闭源的软件,没办法...


  • TA的每日心情
    开心
    昨天 07:36
  • 签到天数: 1956 天

    [LV.Master]伴坛终老

    0

    主题

    2542

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    25547

    灌水大神章QQ 章

    2
    发表于 2019-4-2 15:07:59 | 只看该作者
    看看,学习学习
  • TA的每日心情
    开心
    2021-6-13 16:50
  • 签到天数: 725 天

    [LV.9]以坛为家II

    10

    主题

    2118

    回帖

    7610

    积分

    会元

    Rank: 7Rank: 7Rank: 7

    积分
    7610

    灌水大神章

    3
    发表于 2019-4-2 16:23:53 | 只看该作者
    本帖最后由 thinkinginlast 于 2019-4-2 16:29 编辑

    好厉害。谢谢分享。难道只是说明?
  • TA的每日心情
    慵懒
    昨天 00:18
  • 签到天数: 1593 天

    [LV.Master]伴坛终老

    2

    主题

    1734

    回帖

    16万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    168869
    4
    发表于 2019-4-2 16:37:37 | 只看该作者
    本帖最后由 Word 于 2019-4-2 16:39 编辑

    支持!看过之前的测试,给大容量词典的制作带来了便利
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    16

    主题

    549

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    26462

    QQ 章

    7
    发表于 2019-4-2 17:13:35 | 只看该作者
    感谢分享,可以在mac和linux下轻松制作mdx和mdd了。
  • TA的每日心情
    慵懒
    2021-9-28 14:33
  • 签到天数: 158 天

    [LV.7]常住居民III

    5

    主题

    907

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    17310

    QQ 章灌水大神章笑傲江湖章推广专家

    8
    发表于 2019-4-2 17:54:36 | 只看该作者
    看了楼主之前的演示,工具应该很不错

    该用户从未签到

    42

    主题

    1738

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    20646

    灌水大神章小蜜蜂章笑傲江湖章

    9
    发表于 2019-4-2 18:00:10 | 只看该作者
    谢谢。命令行好使。
  • TA的每日心情
    开心
    2019-10-10 05:35
  • 签到天数: 328 天

    [LV.8]以坛为家I

    12

    主题

    2675

    回帖

    4万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    46250
    10
    发表于 2019-4-2 19:21:40 | 只看该作者
    大神好多,都是神作
  • TA的每日心情
    开心
    2023-1-13 01:10
  • 签到天数: 1469 天

    [LV.10]以坛为家III

    1

    主题

    2477

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    13881

    灌水大神章笑傲江湖章

    12
    发表于 2019-4-2 20:57:20 | 只看该作者
    本帖最后由 drdic 于 2019-4-2 22:39 编辑

    楼主程序能力好强,赞!感谢发布实用程序!
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    534526

    灌水大神章笑傲江湖章推广专家QQ 章

    13
    发表于 2019-4-3 02:28:25 | 只看该作者
    绝对福利 感谢分享
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1538 天

    [LV.Master]伴坛终老

    62

    主题

    2317

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    29113

    灌水大神章小蜜蜂章笑傲江湖章

    14
    发表于 2019-4-3 10:37:38 | 只看该作者
    多谢分享好工具!

    该用户从未签到

    0

    主题

    28

    回帖

    199

    积分

    童生

    Rank: 2

    积分
    199
    15
    发表于 2019-4-3 15:08:58 | 只看该作者
    深入学习mdict制作的好帮手,谢谢!
  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    27

    主题

    556

    回帖

    15万

    积分

    状元

    喜欢折腾,但能力有限

    Rank: 9Rank: 9Rank: 9

    积分
    150905

    灌水大神章笑傲江湖章管理组专用章

    16
    发表于 2019-4-3 17:05:02 | 只看该作者
    命令行弄好就可以了,没必要弄gui了

    该用户从未签到

    131

    主题

    2649

    回帖

    3万

    积分

    翰林院编修

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34143

    灌水大神章小蜜蜂章笑傲江湖章翰林院专用章管理组专用章

    17
    发表于 2019-4-3 20:40:17 | 只看该作者
    这个能不能解包mdxbuilder最新版编译的文件?
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    362

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39704
    18
     楼主| 发表于 2019-4-4 05:12:59 | 只看该作者
    eeshu 发表于 2019-4-3 20:40
    这个能不能解包mdxbuilder最新版编译的文件?

    不能,只支持 版本 1.5 和 2.0 的格式

    mdxbuilder 4.0 改进新版词库格式,与以前版本不一样。而且格式没有开源,无法支持!

    该用户从未签到

    131

    主题

    2649

    回帖

    3万

    积分

    翰林院编修

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34143

    灌水大神章小蜜蜂章笑傲江湖章翰林院专用章管理组专用章

    19
    发表于 2019-4-4 12:19:55 | 只看该作者
    zzzz_sleep 发表于 2019-4-4 05:12
    不能,只支持 版本 1.5 和 2.0 的格式

    mdxbuilder 4.0 改进新版词库格式,与以前版本不一样。而且格式没 ...

    请问楼主这个版本比mdxbuilder的优势在于什么?速度更快,是吗?
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    362

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39704
    20
     楼主| 发表于 2019-4-4 14:09:49 | 只看该作者
    eeshu 发表于 2019-4-4 12:19
    请问楼主这个版本比mdxbuilder的优势在于什么?速度更快,是吗?


    主打 速度快,大词库,跨平台

    该用户从未签到

    1

    主题

    175

    回帖

    2759

    积分

    解元

    Rank: 5Rank: 5

    积分
    2759
    21
    发表于 2019-4-6 01:27:22 | 只看该作者
    学习制作,谢谢楼主的分享

    该用户从未签到

    9

    主题

    228

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    11443
    23
    发表于 2019-4-7 10:53:16 | 只看该作者
    楼主提供的工具(跨平台)打包/解包确实不错,不过用 mdict-utils 打包的词典在ios/Mac 版欧路中大多数词都查不出来,Mac 版 goldendict 中倒是能查到,希望楼主能修复这个bug
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    362

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39704
    24
     楼主| 发表于 2019-4-8 11:38:12 | 只看该作者
    jeanleem6 发表于 2019-4-7 10:53
    楼主提供的工具(跨平台)打包/解包确实不错,不过用 mdict-utils 打包的词典在ios/Mac 版欧路中大多数词都 ...

    奇怪,goldendict 正常, 让我瞧瞧