iBooks系列元数据


13

在10.10上的iBooks中,书本可以具有系列元数据,如图所示。

我需要将哪些元数据添加到外部epub(即不是来自ibook商店),以便可以按系列显示?

系列元数据


当书籍成为iTunes的一部分时,您曾经能够编辑许多此类信息。系列标题是用于支持电视节目的可编辑字段。在iTunes的“视频”选项卡下编辑电视节目元数据时,您仍然可以看到它(字段名称对于书籍而言是不同的)。目前,由于iBooks的功能有限(尤其是缺少元数据编辑),因此该信息似乎与iBooks店面中的元数据有关。尽管它可能仍在iBooks SQLite DB中,所以如果有人知道如何在那儿戳,我很想听听它。
尼克

Answers:


16

我做到了,但是有点棘手。

摘要:

您必须在〜/ Library / Containers / com.apple.BKAgentService / Data / Documents / iBooks / Books中更改要在系列中拥有的书籍的Books.plist文件,并且还必须在BKSeries中添加行〜/ Library / Containers / com.apple.iBooksX / Data / Documents / BKSeriesDatabase 上的-*。sqlite数据库及其系列。

这是我的操作方式:

该数据库具有4个表:ZBKSERIESCHECKZBKSERIESITEMZ_PRIMARYKEYZ_METADATA。我只更改了前三个表。这些表中的“系列”就像一本书。

  1. 在表ZBKSERIESCHECK中添加书籍和系列。该表有5列。

    该表有5列

    • Z_PK是主键。它必须是一个序号。
    • Z_ENTZ_OPT我刚刚用“ 1”完成。
    • ZDATECHECKED只是创建行的日期。就我而言,它是自动分配的。
    • ZADAMID是这本书或系列的唯一代码。

    这是我添加的数据表。

    书籍和系列的ID

    我使用的zAdamId来自Calibre,因此我假设您可以使用任何数字。请记住,这些数字必须与您购买的系列/书籍不同。

    zAdamId为“ 1”的行是我的系列,其他是书。

  2. 在表ZBKSERIESITEM中的书籍和系列中添加关系。该表有16列。

    表ZBKSERIESITEM

    • Z_PKZ_ENTZ_OPT与上表中定义的不同。Z_PK必须是顺序的,而Z_ENTZ_OPT我分别用“ 2”和“ 1”完成。
    • ZISCONTAINER定义zAdamId是否为系列。“ 1”为真,“ 0”为假。
    • ZPOSITION定义系列中的一本书的编号,第一本书以“ 0”开头。
    • ZADAMID与上表中为同一项目定义的相同。
    • ZAUTHOR是系列/书籍的作者。
    • ZGENRE是系列/书籍的类型。
    • ZSEQUENCEDISPLAYNAME定义一本书如何显示为系列成员。例如,对于第一本书,您可以定义“ Book 1”或“ Volume 1”或“ Vol.1”。该字符串将作为书名的前缀。对于该系列,此列必须为空。
    • ZSERIESADAMID是本书的系列zAdamId。对于该系列,这与ZADAMID相同。
    • ZSERIESTITLE是该系列的名称。
    • ZSORTTITLEZTITLE是这本书或系列的名称。

    表ZBKSERIESITEM的内容

  3. 调整表Z_PRIMARYKEY

    我发现该表只有两行。每个前面的表一个。

    表Z_PRIMARYKEY

    在这里,你必须改变Z_MAX列到的MAX(*)值Z_PK在先前的每个表。例如,在我的数据库中,对于表ZBKSERIESCHECKBKSeriesCheck),列Z_PK的MAX(*)为“ 22”。

  4. 保存更改。

  5. 打开Books.plist文件。查找该系列的每本书,并添加以下键:

    • seriesAdamIdNumber,其值为ZBKSERIESITEM〜ZSERIESADAMID
    • itemIdNumber,其值为ZBKSERIESITEM〜ZADAMID
    • seriesSequenceNumber作为字符串,其值为ZBKSERIESITEM〜ZPOSITION +1。(请记住,在表中它以“ 0”开头。)
    • seriesTitle作为String,其值为ZBKSERIESITEM〜ZTITLE

    Books.plist文件

  6. 保存文件。关闭iBooks(如果您从一开始就没有关闭它)。终止com.apple.BKAgentService进程。启动iBooks。您应该能够看到自己的系列。

    结果

笔记

我没有命名的那些列,我只是将它们留空,并没有影响最终结果。

我认为,当您拥有大量书籍和丛书时,很难正确放置所有书籍和丛书。希望有一天能看到可以自动完成所有操作的功能。

这是我的第一篇文章。我希望每个人都认为它有用。


2

我有一个解决方案:

  1. 前往iBooks商店并下载您要使用的书籍的样本。

  2. 将扩展名从.epub更改为.zip。

  3. 解压缩zip并删除名为“ OPS”的文件夹(漫画的OEBPS)。

  4. 找到您拥有的电子书,然后从.epub更改为.zip。

  5. 解压缩并找到OPS。

  6. 将OPS移至示例电子书文件夹。

  7. 选择示例中的所有文件,然后创建一个.zip。

  8. 将扩展名更改为epub。

  9. 对系列中的每本书都做同样的事情。

  10. 拖放到iTunes中。

  11. 同步,您就可以开始了!

不过,在进入iBook商店时请务必小心,如果看到编辑过的电子书,它将带有一个显示“更新”的按钮。不要单击更新,否则您将不得不重新做一次。

它比必须编辑sqlite容易得多,并且可以在Mac和Windows上使用。


这对SRMed电子书有用吗?
user151019 2015年

如果它在iBooks商店中作为样本,则可以。
Dadiocoleman

1

我注意到,在iBooks中,我有一本书(继承),iBooks作为系列的一本书(在我的情况下称为“ Eragon”而不是“ The Farseer Trilogy”)突出显示。为了对此进行研究,我下载了Inheritance,并使用Requiem(在旧的虚拟机上)剥离了DRM,以便可以在本书的源代码中查找。

不幸的是,我有个坏消息。我使用Sigil搜索“ Eragon”一词。“ Eragon”一词在epub中的元数据中不显示,表明这是不可能的;iBook显然将系列信息与实际的epub文件分开保存。


有趣的是,请注意,我仍然认为它存储在ibooks sqlite数据库中的本地位置,因为当我在另一系列中添加2本书时,当它们未连接到互联网时它们被组合在一起
Bilal Syed Hussain 2014年

您是说您从外部来源添加了两本书,还是通过iBooks购买了两本书?
约翰·考克森

我将它们带到另一台计算机上,然后将它们转移到装有ibook但没有互联网的计算机上。
2014年

0

我自己尝试了一下,发现存储电子书的文件夹中的播放列表包含有关图书系列的信息。有元数据seriesTitle和seriesSequenceNumber集。但不幸的是,在那里进行更改并不能使Ibooks列为系列书籍。另外在电子书本身中设置元数据,说系列标题和系列序列号不起作用。然后我在usr中找到一个文件夹。库容器com.apple.IBooksX数据文档BKSeriesDatabase,但是它包含SQL数据库。也许信息存储在那里。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.