метаданные серии iBooks

13

В iBooks 10.10 книги могут иметь метаданные серии, как показано на рисунке.

Какие метаданные мне нужно добавить во внешний epub (т.е. не из магазина ibook), чтобы они могли отображаться в виде серии?

метаданные серии

Билал Сайед Хуссейн
источник
Раньше вы могли редактировать много этой информации, когда книги были частью iTunes. Название серии было редактируемым полем, которое было добавлено для поддержки телешоу. Вы по-прежнему можете увидеть его при редактировании метаданных телешоу в iTunes на вкладке «Видео» (названия полей для книг были разными). В настоящее время, учитывая ограниченные возможности iBooks (особенно отсутствие редактирования метаданных), кажется, что эта информация связана с метаданными из витрины магазина iBooks. Вероятно, он все еще находится в базе данных iBooks SQLite, поэтому, если кто-то знает, как там ковыряться, я бы хотел услышать об этом.
Ник

Ответы:

16

Я сделал это, но это довольно сложно.

Резюме:

Вы должны изменить файл Books.plist в ~ / Library / Containers / com.apple.BKAgentService / Data / Documents / iBooks / Книги для книг, которые вы хотите иметь в серии, а также вы должны добавить строки в BKSeries - *. sqlite база данных в ~ / Library / Containers / com.apple.iBooksX / Data / Documents / BKSeriesDatabase для них и серии.

Вот как я это сделал:

База данных имеет 4 таблицы: ZBKSERIESCHECK , ZBKSERIESITEM , Z_PRIMARYKEY и Z_METADATA . Я изменил только первые три таблицы. «Серия» трактуется как книга в этих таблицах.

  1. Добавьте книги и серию в таблицу ZBKSERIESCHECK . Таблица имеет 5 столбцов.

    Таблица имеет 5 столбцов

    • Z_PK является первичным ключом. Это должен быть порядковый номер.
    • Z_ENT и Z_OPT я только что закончил с "1".
    • ZDATECHECKED - это просто дата создания строки. В моем случае это было назначено автоматически.
    • ZADAMID - это уникальный код для книги или серии.

    Это таблица с данными, которые я добавил.

    ID книг и серий

    Я использовал zAdamId от Caliber, поэтому я предполагаю, что вы можете использовать любое число. Имейте в виду, что эти цифры должны отличаться от купленных вами серий / книг.

    Строка с zAdamId "1" - это моя серия, остальные - книги.

  2. Добавьте отношения в книгах и сериях в таблицу ZBKSERIESITEM . Эта таблица имеет 16 столбцов.

    Стол ЗБКСЕРИЗИТЕМ

    • Z_PK , Z_ENT и Z_OPT не совпадают с определенными в предыдущей таблице. Z_PK должен быть последовательным, а Z_ENT и Z_OPT я только что завершил с "2" и "1" соответственно.
    • ZISCONTAINER определяет, является ли zAdamId серией или нет. «1» - это правда, «0» - это ложь.
    • ZPOSITION определяет номер книги в серии, начиная с «0» для первой книги.
    • ZADAMID является таким же, как определено в предыдущей таблице для того же элемента.
    • ЗАТОР - автор серии / книг.
    • ZGENRE - жанр серии / книг.
    • ZSEQUENCEDISPLAYNAME определяет способ отображения книги в качестве члена серии. Например, для первой книги вы можете определить «Книга 1» или «Том 1» или «Том 1». Эта строка будет добавлена ​​к названию книги. Этот столбец должен быть пустым для серии.
    • ZSERIESADAMID - это серия zAdamId книги. Для серии это то же самое, что и ZADAMID .
    • ZSERIESTITLE - название серии.
    • ZSORTTITLE и ZTITLE - это название книги или серии.

    Содержание таблицы ZBKSERIESITEM

  3. Настроить таблицу Z_PRIMARYKEY .

    Я обнаружил, что в этой таблице всего две строки. Один для каждой из предыдущих таблиц.

    Таблица Z_PRIMARYKEY

    Здесь вы должны изменить столбец Z_MAX на значение MAX (*) Z_PK в каждой из предыдущих таблиц. Например, в моей БД для таблицы ZBKSERIESCHECK ( BKSeriesCheck ) MAX (*) столбца Z_PK равен «22».

  4. Сохраните изменения.

  5. Откройте файл Books.plist . Посмотрите на каждую из книг серии и добавьте следующие ключи:

    • seriesAdamId как число со значением ZBKSERIESITEM ~ ZSERIESADAMID .
    • itemId как число со значением ZBKSERIESITEM ~ ZADAMID .
    • seriesSequenceNumber as String со значением ZBKSERIESITEM ~ ZPOSITION + 1 . (Помните, что в таблице это начинается с "0".)
    • seriesTitle as String со значением ZBKSERIESITEM ~ ZTITLE .

    Файл Books.plist

  6. Сохраните файл. Закройте iBooks (если вы не закрывали его с самого начала). Убейте процесс com.apple.BKAgentService . Запустите iBooks. Вы должны увидеть свою серию.

    Результаты

Примечания

Те столбцы, которые я не назвал, я просто оставил их пустыми, и это не повлияло на конечный результат.

Я думаю, что сложно поставить все свои книги и сериалы должным образом, когда их много. Надеюсь когда-нибудь увидеть что-то, что сделает все это автоматически.

Это мой первый пост. Я надеюсь, что все находят это полезным.

foliva
источник
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.

Dadiocoleman
источник
Будет ли это работать для SRMed книг?
user151019
Если это в магазине iBooks в качестве образца, то да.
Дадиоколеман,
1

Я заметил, что в iBooks у меня есть книга ( Наследование ), которую iBooks выделяет как член серии (в моем случае это «Эрагон», а не «Трилогия дальновидности»). Чтобы исследовать это, я скачал Inheritance и удалил DRM, используя Requiem (на старой виртуальной машине), чтобы я мог покопаться в исходном коде книги.

К сожалению, у меня плохие новости. Я использовал Сигил, чтобы найти слово «Эрагон». Слово «Эрагон» нигде не встречается в метаданных в epub, указывая на то, что это невозможно; Очевидно, что iBook хранит информацию о сериях отдельно от файлов epub.

Джон Коксон
источник
Интересно отметить, что я все еще думаю, что он хранится где-то локально, может быть, в базе данных sqlite ibooks, поскольку, когда я добавил две книги в другой серии, они были сгруппированы вместе, когда они не подключены к Интернету
Билал Сайед Хуссейн,
Вы имеете в виду, что вы добавили две книги из внешнего источника или купили две книги через iBooks?
Джон Коксон
Я перенес их на другой компьютер, а затем перенес их на компьютер с ibooks, но без интернета.
Билал Сайед Хуссейн
0

Я попробовал это сам и обнаружил, что список воспроизведения в той же папке, где хранятся epubs, содержит информацию о серии книг. Есть набор метаданных seriesTitle и seriesSequenceNumber. Но, к сожалению, его изменение не делает Ibooks списком книг в серии. Также настройка метаданных в самой электронной книге, говорящая, что серия Title и seriesSequenceNumber не работает. Потом я нашел папку в usr. Контейнеры библиотеки com.apple.IBooksX Документы данных BKSeriesDatabase, но они содержат базу данных SQL. Возможно информация хранится там.

Адам Кей
источник