-1

我正在尝试创建一个可用于离线查找的 Kindle 词典。我已经有了单词和它们的变形,但是把它变成一本有效的字典是很困难的。

亚马逊提供了一些关于此的文档。它基本上说你应该:

  1. 创建一个带有特殊标记的 XHTML 文件,指定所有变形等。
  2. 把它变成一个epub
  3. 用 Kindle Previewer 打开它
  4. 使用 Kindle Previewer 将其导出到 MOBI

所以我根据亚马逊的规范创建了一个大的 XHTML 文件(23 MB 左右)并在 Kindle Previewer 中打开它,它看起来很好。但是,Kindle Previewer 不允许您将 XHTML 文件导出到 MOBI。他们希望您创建一个中间 epub 文件。

我尝试使用 Pandoc 进行转换,但没有成功,因为它去除了所有特定的 HTML 标记,只保留在段落中。然后我尝试使用口径。根据错误消息,由于 XHTML 文件太大,正常的 XHTML -> epub 转换失败。如果遇到此错误,Calibre 建议打开“启发式模式”,我尝试过,但运行数小时后仍未完成运行。

然后我尝试使用从本教程中获取的示例文件自己创建 epub 文件。我发现这不是微不足道的,使用epubcheck的检查在我生成的文件中发现了许多难以理解的错误。epub 文件的生成也有点复杂,因为您可能需要将 XHTML 文件拆分为许多较小的文件,这些文件的大小应该是 250 kb,因为电子阅读器往往难以解析较大的文件。

所以我认为应该有一种更简单的方法来做到这一点,或者可能有一个图书馆可以帮助做到这一点。也许将单词 + 变形输出到其他更简单的字典格式,然后使用现有库将其转换为 MOBI 并完全省略 XHTML 生成,这甚至是一个好主意。目前我正在使用 Python,但如果有必要,我也会使用其他语言。我可以尝试什么?

编辑:添加到我尝试过的东西:这里有一个显然是封闭源代码的脚本不幸的是它不支持变形,所以不起作用。这里有说明建议使用 Mobipocket Creator 将文件转换为 PRC,然后使用 Kindle Previewer 打开它。这种方法的问题是 Kindle Previewer 会抛出错误:

Kindle Previewer 不支持此文件,该文件是使用旧版 KindleGen 或第三方应用程序创建的。我们建议直接使用 EPUB 或 DOCX 格式在 Kindle 上预览和发布您的图书。

Mobipocket Creator这里也有更详细的说明,告诉你直接将生成的 .prc 文件移动到 kindle 上。我试过了,但它没有被识别为字典。

4

1 回答 1

0

我自己想通了。首先我自己实现了一个解决方案,然后我找到了 pyglossary 库(现在下面的代码只适用于 Github 的版本,而不适用于 pip 的版本)并像这样使用它:

from pyglossary.glossary import Glossary    
Glossary.init()
glos = Glossary()
defiFormat = "h"

base_forms = get_base_forms()

for canonical_form in base_forms:
    inflections = get_inflections(canonical_form)
    definitions = get_definition(canonical_form)

    definitionhtml = ""
    for definition in definitions:
        definitionhtml += "<p>" + gloss + "</p>"
    all_forms = [canonical_form]
    all_forms.extend(inflections)
glos.addEntryObj(glos.newEntry(all_forms, glosshtml, defiFormat))
glos.setInfo("title", "Russian-English Dictionary")
glos.setInfo("author", "Vuizur")
glos.sourceLangName = "Russian"
glos.targetLangName = "English"
glos.write("test.mobi", format="Mobi", keep=True, kindlegen_path="path/to/kindlegen.exe")
于 2021-11-22T18:21:25.370 回答