PyGlossary:将不同格式的字典转换成 Kindle 字典

延伸阅读

给这篇文章写一条留言

提示:带 * 标记的是必填项。您填写的邮箱地址将会被保密。首次留言将会在通过人工审核后显示。如果是提出问题,请务必提供尽可能多信息,这有助于他人更好地理解你所提出的问题。

小伙伴们写下了 24 条留言

  1. 为什么每次都提示“另一个程序正在使用此文件,进程无法访问。”啊?然后下面的进度条就一直是0%不动了
    这是完整的显示:
    [INFO] Automatically switching to SQLite mode for writing Mobi
    [INFO] Using sortKeyName = ‘ebook’
    [INFO] Removing and re-creating ‘C:\\Users\\zrnap\\AppData\\Local\\PyGlossary\\Cache\\oed.index.db’
    unhandled exception:
    Traceback (most recent call last):
    File “D:\Program Files\Python310\lib\site-packages\pyglossary\glossary.py”, line 588, in _read
    reader.open(filename)
    File “D:\Program Files\Python310\lib\site-packages\pyglossary\plugins\dict_org.py”, line 83, in open
    self._dictdb = DictDB(filename, “read”, 1)
    File “D:\Program Files\Python310\lib\site-packages\pyglossary\plugin_lib\dictdlib.py”, line 127, in __init__
    self._initindex()
    File “D:\Program Files\Python310\lib\site-packages\pyglossary\plugin_lib\dictdlib.py”, line 159, in _initindex
    for line in self.indexfile:
    UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa5 in position 1812: illegal multibyte sequence

    [CRITICAL] Reading file ‘D:/Downloads/oedd/oed.index’ failed.
    [ERROR] error removing C:\Users\zrnap\AppData\Local\PyGlossary\Cache\oed.index.db
    Traceback (most recent call last):
    File “D:\Program Files\Python310\lib\site-packages\pyglossary\glossary.py”, line 180, in cleanup
    os.remove(cleanupPath)
    PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: ‘C:\\Users\\zrnap\\AppData\\Local\\PyGlossary\\Cache\\oed.index.db’
    Traceback (most recent call last):
    File “D:\Program Files\Python310\lib\site-packages\pyglossary\glossary.py”, line 180, in cleanup
    os.remove(cleanupPath)
    PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: ‘C:\\Users\\zrnap\\AppData\\Local\\PyGlossary\\Cache\\oed.index.db’

    • 如果你使用的是 Windows 系统,可以用鼠标将 content.opf 直接拖放到 kindlegen.exe 程序图标上。如果是 macOS 系统,需要打开“终端”,先将 kindlegen 拖放到终端上,然后输入一个空格,再把 content.opf 拖放到终端上,最后按回车键开始转换。

  2. 感谢大神,用此方法已经成功将.mdx字典转换成mobi字典了,只是最后一步用kindlegen始终不能成功,后改为直接将.opf文件拖在mobigen上成功的。另外,我有一个问题想问,由于字典里的字的颜色是彩色的,在kindle里看到的字色很浅不方便看,在转换时能不能把所有字的颜色变为黑色?谢谢。

  3. 点击软件界面上的“Output File”输入框后面的【Browse】按钮,在弹出的窗口的“文件名”处输入源代码存放的文件夹名称(注意,为避免混淆,名称最好不要与当前路径中已存在的文件夹同名)。中的源代码存放文件怎么看啊

  4. kindlegen出现了【错误(kindlegen):E30010: 不受支持的自变量】提示,请问可以怎么解决呢?

      • 把kindlegen加入环境变量后执行kindlegen /path/to/content.opf -dont_append_source命令后出现的……

      • 如果用提供的另一种输入C:/Kindlegen/kindelgen.exe的方法的话则会出现错误【(kindlegen):E30005: 不能打开文件】这样的提示。

            • 【重新尝试又变成这样了…….】

              C:\Users\LLY>kindlegen D:\文档\杂项\kindle字典\dictionary\OEBPS\content.opf
              
              *************************************************************
               Amazon kindlegen(Windows) V2.9 build 1029-0897292
               命令行电子书制作软件
               Copyright Amazon.com and its Affiliates 2014
              *************************************************************
              
              信息(prcgen):I1047: 已添加的元数据dc:Title        "西汉词典"
              信息(prcgen):I1047: 已添加的元数据BASICCode       "REF008000"
              信息(prcgen):I1047: 已添加的元数据dc:Subject      "Dictionaries"
              错误(core):E1005: 无法访问文件。
                    文件中: D:\文档\杂项\kindle字典\dictionary\OEBPS\style.css
              信息(prcgen):I1002: 解析文件  0020100
              信息(cssparser):I10005: 没有发现 CSS 文件 "D:\文档\杂项\kindle字典\dictionary\OEBPS\style.css"
              警告(parser8):W26001: 索引不支持改进的 mobi 域名。
              错误(core):E1005: 无法访问文件。
                    文件中: D:\文档\杂项\kindle字典\dictionary\OEBPS\g014748.xhtml
  5. 安装成功,但是执行命令 pyglossary –version 时出现

    Traceback (most recent call last):
      File "c:\users\administrator\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "c:\users\administrator\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Scripts\pyglossary.exe\__main__.py", line 4, in 
        from pyglossary.ui.main import main
      File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\pyglossary\ui\main.py", line 30, in 
        from pyglossary.ui.base import UIBase
      File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\pyglossary\ui\base.py", line 46, in 
        aboutText = fread(join(dataDir, "about"))
      File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\pyglossary\ui\base.py", line 40, in fread
        with open(path, encoding="utf-8") as fp:
    FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python\\share\\pyglossary\\about'
    Traceback locals:
        path = 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Pytho...
        len(path) = 82

    是什么原因,有解决办法吗

    • 这是项目作者最近引入的一个 BUG。四天前有人在项目 Issues 中提出了这个问题(链接),作者给出了解决方法,运行下面这条命令安装已修复版本:

      pip3 install pyglossary --upgrade --pre
      • 按照步骤把字典转成MOBI格式:但有些字符显示不出来,
        比如

        qiánㄑㄧㄢˊ渠焉切,平,仙韻,羣。元部。

        ㊀易卦名。八卦的首卦,卦形;又六十四卦之一,卦形,乾上乾下。

        ㊁易乾象天、象君、象陽,見“乾坤”、“乾綱”、“乾宅”。

        ㊂剛健。易説卦:“乾,健也。”

        gānㄍㄢ古寒切,平,寒韻,見。元部。

        ㊀乾燥。

        詩王風中谷有蓷:“暵其乾矣。”
        ㊁枯竭。
        左傳僖十五年:“外彊中乾。”注:“外雖有彊形,而内實乾竭。”
        ㊂空,徒然。見“乾2笑”、“乾2愁”。
        ㊃有名無實。見“乾2娘”、“乾2兒”。