【v1.6_20240123】AutoMdxBuilder 自动化制作 mdx 词典

V兄一针见血,模版B在翻页后将无导航,当时做得比较仓促粗糙,翻页保持导航栏还是有必要的。

解包某些1.2版本老词典,用automdxbuilder显示AssertionError;
直接用mdict-utils,显示:IndexError: bytearray index out of range。
有没有办法解决?

mdict-utils不支持解包style格式的词典,用mdxexport试试

mdxexport导出的词典信息后缀是info.txt,automdxbuilder识别不了,得改成html很麻烦。希望改进一下。
还希望加一个功能是打包词典前自动把指定文本从别的编码转为UTF-8 NO BOM,不然打包不了。

1 个赞

https://downloads.freemdict.com/100G_Super_Big_Collection/日语/《英辞郎v86英和辞典》[090412].mdx
《英辞郎v86英和辞典》[090412].txt
这个解包后再打包为何报错?我转为了uff-8而且不是compact html,百思不得其解。

报错信息 Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "C:\Users\Administrator\AppData\Roaming\Python\Python311\Scripts\mdict.exe\__main__.py", line 7, in File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\__main__.py", line 136, in run pack(args.mdict, dictionary, title, description, File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 317, in pack writer.write(outfile, callback=callback) File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 232, in write self._write_record_sect(outfile, callback=callback) File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 210, in _write_record_sect b.prepare() File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 86, in prepare super(_MdxRecordBlock, self).__init__( File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\base\writemdict.py", line 597, in __init__ _MdxBlock.__init__(self, offset_table, compression_type, version) File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\base\writemdict.py", line 550, in __init__ decomp_data = b"".join( ^^^^^^^^^ File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\base\writemdict.py", line 551, in type(self)._block_entry(t, version) File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 95, in _block_entry return t.get_record_null() ^^^^^^^^^^^^^^^^^^^ File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 74, in get_record_null return get_record_null( ^^^^^^^^^^^^^^^^ File "C:\Users\Administrator\AppData\Roaming\Python\Python311\site-packages\mdict_utils\writer.py", line 55, in get_record_null assert size > 1, key ^^^^^^^^

我测试了下没问题。用 EmEditor 将UTF-16的文件另存为UTF-8无签名的txt,然后就可以用 AMB 打包

好吧,可能是我解包过程出了问题吧,辛苦你了


感谢楼主无私分享!不好意思打扰一个问题。

我检索出来的图片,不是从第一张开始,而是从第100张图。比如我检索“阿姨”:

1.原书页码是1,所在的是编号第15的图片档
2.但辞典出来的却是原书86页;编号第100的图片档。

您知道这是为什么吗?

既然原书的正文第一页是第 15 张图片,那么此处应设置 self.body_start = 15,而『阿姨』词条的索引则直接是:

阿姨   1

这样应该不会有问题

index_all2.txt (23.1 KB)
settings2.py (2.5 KB)
有一个小疑问哈,为啥后缀名会莫名奇妙变化。这两页最后打包出来的mdx出来读取的是.jpg
image
这图片本来包含两个jpg,这两个没问题。
image

我所有文件是这样的:
BEDCDEC_0001.png-BEDCDEC_1190.png BEDCDEC_1191.jpg
BEDCDEC_B0001.jpg BEDCDEC_B0002.png-BEDCDEC_B0023.png

图片后缀应该是不受影响的,原图如果是 .jpg 输出则仍为 .jpg,原图如果是 .png 输出则仍为 .png;

程序会重新命名的是图片名称,在正文前的图片会多加 B 前缀,序号则是重新编排的。

不是的,mdd没改后缀,是mdx里会是<img src="BEDCDEC_1168.jpg">显示不了图片了,我想知道是我哪里出错了导致这一点。

这些图片我都是事先命名好的,没让程序命名。输入"22"让程序打包mdd一团乱。好些图片他重新命名后错位了。是我settings哪里设置有误吗,还是index_all的问题?

和他问题挺像的

话说index_all转成toc_all是拿来干什么的?

会错位吗,之前似乎也有坛友跟我反映图片会乱序,但我自己使用从来没出问题,或许是Python环境问题,如果很多人都出现这个问题,那就需要强化一下代码了。

看了下仁兄的 index_all.txt 文件,做法有点奇怪:joy:

哈哈,我是为了配合文字版使用,纯图方便,词头对应文字版跳转的 :grinning:



感谢您回复!楼主辛苦啊。
我这边好像还是不行。按照楼主的方式改了下,发现还是错位的,而且统一错位了88张图片。
我重新下载软件,重新制作了几次,还是不行。真是奇怪。

toc_all.txt 和 toc.txt 文件一样都是 pdf 的书签,用 FreePic2Pdf.exe 软件可以直接将其导入到 pdf 文档里作为书签使用

1 个赞

参考tmp文件夹下的源文件自行改名吧,Ant Renamer很好用。

原图片放这,楼主可以打包看看。
https://pan.huang1111.cn/s/zOWvIM

对,这个就是程序目标输出的命名格式。这是你没通过程序而自己去命名的吗,如果把这个已经命名好的图片再去走一遍程序的话,那确实是会乱的。