如何彻底解决 Kindle 电子书封面显示为“暂无图片”的问题

一段时间以来,亚马逊为 Kindle 添加了一个给小伙伴们添堵的功能,那就是,把通过 USB 拷贝到 Kindle 的电子书封面/缩略图显示成了带有“暂无图片”字样的图片占位符。
▲ 左侧为刚放入电子书时的封面效果,右侧为联网后被自动替换的封面效果
以往仅显示电子书标题的图片占位符,虽然没有真正的封面那样美观,但至少能让人分辨是哪一本书,而新图片占位符的意图简直是反人类,很难让人不怀疑这是不是亚马逊故意为之的。
目录
本文尝试从根源上对传输到 Kindle 的电子书封面被替换成“暂无图片”的问题进行分析,并给出了两种解决方案。你可以根据问题的分析手动进行修复,也可以通过书伴提供软件自动修复。
一、问题分析
Kindle 电子书有多种类型,它们被标记在电子书文件的 EXTH 信息头[1]中,即类型为 501
名为 CDE Type 的记录。该记录常见的值有 PDOC
(代表个人文档)、EBOK
(代表电子书)及 EBSP
(代表电子书样章)。你可以使用工具(如 Mobi Metadata Editor)查看电子书文件 EXTH 信息头,通过这个记录来确认某本电子书是属于哪种类型。
通常,我们通过 KindleGen 转换成 MOBI 格式的电子书文件,以及邮箱推送到 Kindle 个人文档服务的文件会被标记为 PDOC
,从 Kindle 电子书商店购买的电子书、或通过 Calibre 转换的 AZW3 电子书格式会被标记为 EBOK
,而向 Kindle 发送的电子书样章会被标记为 EBSP
。
对于不同的电子书类型,Kindle 可能会采用不同的处理机制,比如本文讨论的封面被替换成“暂无图片”图片占位符的问题,就是针对标记为 EBOK
的电子书文件的。当这种类型的电子书放入 Kindle 设备中,一旦联网,Kindle 在确认是 EBOK
类型的电子书文件后,就会尝试读取另一个类型为 113(或 504)名为 ASIN[2] 的记录,一旦发现该记录的值与亚马逊商品的唯一识别码不匹配,该电子书的封面就会被替换成带有“暂无图片”字样的图片占位符。
原因找到了,解决方案出来了。一种是被动修复,先让亚马逊替换封面,然后再修复这些被替换的封面。还有一种是主动防御,可以直接删掉电子书的 EBOK
记录,让 Kindle 忽略封面检查,使其显示带标题的图片占位符,也可以将 ASIN 更改成任一真实存在于 Kindle 商店的 ASIN,以达到欺骗 Kindle 使其抓取与该 ASIN 相对应电子书的封面图片的目的。
二、被动修复
这种解决方式是等待 Kindle 将拷贝进去的电子书封面全部替换成“暂无图片”后,再通过找到这些图片所存放的位置,将其还原成电子书原有的封面图片。
1、手动修复被替换的封面图片
当 Kindle 成功为电子书从亚马逊服务器抓取封面图片后,会存放到 Kindle 根目录下的 system/thumbnails 文件夹中,封面图片有着类似下面这样的文件名:
thumbnail_B00A72WGE4_EBOK_portrait.jpg
从中可以看出,该文件名除了 .jpg 扩展名外,是由三个下划线 _
连起来的四个部分,分别是 thumbnail
、B00A72WGE4
、EBOK
以及 portrait
,这四部分除了 ASIN 外都是相同的,Kindle 也是通过这个 ASIN 为相应的电子书显示该封面的。如果 Kindle 没有在亚马逊服务器找到这个 ASIN,就会将此封面图片文件替换成如下所示的封面图片:
由于 Kindle 只会为新拷贝的电子书从亚马逊服务器拉取一次封面图片,因此你可以在电子书的封面全都变成“暂无图片”后,再重新恢复与该电子书的 ASIN 相对应的封面图片。
具体方法为,先用 Mobi Metadata Editor 通过检查 113(或 504)记录类型,得到电子书的 ASIN,然后在 Kindle 根目录的 system/thumbnails 文件夹中找到含有此 ASIN 的图片文件,接着用 Calibre 等工具将电子书的封面提取出来,最后将提取出来的封面图片文件重命名成那个带 ASIN 图片的文件名,并对其进行替换,就可以恢复此电子书的封面了。
2、自动修复被替换的封面图片
书伴为小伙伴们编写了一个小软件,将上面提到的封面还原过程自动化。该软件会在封面图片存放路径检查小于 2KB 的封面图片,然后从与其对应的电子书中提取封面图片进行还原。
- 下载 Fix Kindle Ebook Cover:Github 发布页面 | 百度网盘〈提取码 : qtjw〉
如果你的电脑无法运行单文件版,可以为你的操作系统安装“版本大于等于 3.5 的 Python”(已安装的无需重新安装),然后双击源代码中的 fix_kindle_ebook_cover_gui.pyw 运行界面版,或在命令提示符(或终端)通过 fix_kindle_ebook_cover.py 运行命令行版(用法见下文)。
如果你的 Kindle 已经越狱,可以安装插件 BookFere Tools(书伴越狱工具包)通过 KUAL 菜单一键修复。具体用法为,首先确保安装了 KUAL 和 Kindle Python(选择安装 Python3),然后通过以下链接下载插件压缩包,解压得到 bookfere-tools 文件夹,将其拷贝到 Kindle 根目录下的 extensions 文件夹中。最后通过 KUAL 菜单点击【Fix Ebook Cover】修复封面。
此软件的提供了界面版和命令行版,你可以根据自己的喜好选用。
界面版使用方法很简单,将 Kindle 设备通过 USB 数据线连到电脑,直至出现 Kindle 磁盘,双击打开软件,点击【Choose】按钮选择 Kindle 根目录(如果在出现磁盘后启动软件,会自动检测 Kindle 根目录),然后点击【Fix Cover】按钮就可以开始自动修复了。
你也可以点击【Clean Cover】清除孤立电子书封面(即没有对应电子书的封面)。
使用命令行版本,将 Kindle 设备通过 USB 数据线连到电脑,直至出现 Kindle 磁盘,在“命令提示符”(或“终端”)上通过运行如下所示的三个命令之一即可。该脚本可指定零到多个 Kindle 根目录,未指定根目录会自动检测。
python3 fix_kindle_ebook_cover.py
python3 fix_kindle_ebook_cover.py /path/to/kindle
python3 fix_kindle_ebook_cover.py /path/to/kindle1 /path/to/kindle2
你也可以为命令添加选项 -a clean
以清除孤立电子书封面,即界面版的“Clean Cover”。
除非受损封面图片没有对应的电子书,或者电子书自身不含封面图片,一般都能成功修复。
▲ 右侧为联网后被自动替换的封面效果,左侧为使用 Fix Kindle Ebook Cover 修复后的封面效果
三、主动防御
如果你感觉上面那种封面修复方式过于被动,也可以采用下面介绍的两种主动修复方式。主要是通过修改电子书文件 EXTH 信息头中 501
、113
、504
这三个记录类型来实现。
这里要用到名为 Mobi Metadata Editor 的小工具,其具体用法可参考《如何用 Mobi Metadata Editor 修改 Kindle 电子书元数据》这篇文章。注意,该工具无法选择扩展名为 .azw3 的电子书文件,你可以先将其扩展名更改成 .mobi,修改后再改回 .azw3 即可。
1、为电子书文件指定真实 ASIN
如果你想要让 Kindle 为电子书获取正确的封面图片,需要保持 501
类型记录的值为 EBOK
不变,仅更改电子书文件的 ASIN
记录,将其值更改成真实存在任意区域亚马逊 Kindle 电子书商店的电子书的 ASIN,这样 Kindle 就会将商店中电子书的封面拉取下来给本地的电子书使用。
- 中亚 Kindle 电子书商店:https://www.amazon.cn/kindlestore
- 美亚 Kindle 电子书商店:https://www.amazon.com/kindlestore
注意,电子书文件的 ASIN
记录可能同时存在于 113
和 504
这两个记录类型中,两者至少保留一个才能生效,如果对两者同时存在,Kindle 会优先使用 504
的值。
2、禁止 Kindle 检查电子书封面
如果你不在意电子书是否显示封面图片,可以接受仅带图书标题的图片占位符,则可以直接删掉 501
记录类型。这做法都可以禁止让 Kindle 为该电子书检查封面图片。
3、让 Kindle 从电子书读取封面
对于标记为个人文档的 MOBI 格式电子书,Kindle 会直接从电子书中读取封面,而不会去亚马逊服务器上对比 ASIN。因此可以先将电子书文件的扩展名从 .azw3 更改为 .mobi(如果原来不是此格式的话),然后将电子书的 501
记录类型值从 EBOK
改为 PDOC
。
延伸阅读
- Kindle Paperwhite 2 内存存储容量升级到 4G
- [每周一书]《钓愚》操纵与欺骗的经济学
- 全新 Kindle Oasis 正式发布!售价 2399 元
- [每周一书] 与生活紧密相联的《赤裸裸的统计学》
- [每周一书]《未来简史》我们将去向何方?
- 亚马逊 Kindle 电子书发布指南(二)一般最佳实践
- 亚马逊将登陆韩国或首推 Kindle 系列产品
- [每周一书] 创新是什么?创新就是《从 0 到 1》
- Kindle Paperwhite 4 谍照?变外观不变配置
- [每周一书]《疾痛的故事》慢性病的病痛经验与治疗护理
- 张维迎:自由是一种责任
- 半个世纪之后,我们这样阅读斯通纳
- [每周一书] 文明的另一面《现代性与大屠杀》
- [每周一书]《基因传》生命的本源到底是什么?
- [2021.05.13] Kindle 阅读器固件升级至 5.13.6
macOS 下载完fix kindle ebook cover安装包,安装完成后,打不开是怎么回事呀?显示无法打打开,因为apple无法检查其是否包含恶意软件
遇到这种情况,需要打开偏好设置,在“安全性与隐私”那个选项中,点击【仍要打开】按钮。