Kindle 电子书封面替换指南

2025年4月26日 · 484 字 · 1 分钟

一、需求背景

通过 USB 拷贝到 Kindle 的电子书,有时封面会显示带电子书名的占位符图片,没有那么美观。通过逆向工程发现,封面信息存储在SQLite数据库中,本脚本通过直接修改数据库字段实现封面替换。

数据库结构

  • 数据库路径:/var/local/cc.db
  • Entries表结构:
    • p_uuid:书籍唯一标识符
    • p_location:书籍文件存储路径
    • p_thumbnail:缩略图路径字段
    • p_cover:封面路径字段

二、操作准备

必要工具:

  1. 越狱Kindle设备(需安装KUAL环境)
  2. KUAL插件:USBNetwork Hack
  3. SSH客户端

三、实现细节

/mnt/us/cover.sh:

#!/bin/sh

DB_PATH="/var/local/cc.db"
THUMBNAIL_DIR="/mnt/us/documents"

sqlite3 "$DB_PATH" "SELECT p_uuid, p_location, p_thumbnail FROM Entries;" | while IFS='|' read -r uuid location p_thumbnail; do
    filename=$(basename "$location")
    name_no_ext="${filename%.*}"  # 去掉扩展名
    thumb_path="$THUMBNAIL_DIR/${name_no_ext}.jpg"

    echo ${location} ${name_no_ext} ${thumb_path} ${uuid} ${p_thumbnail}
    # 如果对应封面图片存在
    if [ -f "$thumb_path" ]; then
        # 更新数据库中的 p_cover 字段
        sqlite3 "$DB_PATH" <<EOF
#UPDATE Entries SET p_cover = '$thumb_path' WHERE p_uuid = '$uuid';
UPDATE Entries SET p_cover = '$thumb_path', p_thumbnail = '$thumb_path' WHERE p_uuid = '$uuid';
EOF
        echo "✅ 已更新 $uuid 的封面为 $thumb_path"
    else
        echo "⛔ 未找到封面:$thumb_path"
    fi
done

路径对照示例:

书籍文件 封面文件
/mnt/us/documents/百年孤独.azw3 /mnt/us/documents/百年孤独.jpg
/mnt/us/documents/1984.mobi /mnt/us/documents/1984.jpg