metadatos de la serie iBooks

10

En iBooks en 10.10, los libros pueden tener metadatos de series como se muestra en la imagen.

¿Qué metadatos debo agregar a un epub externo (es decir, no de la tienda ibook) para que se pueda mostrar como una serie?

    
pregunta Bilal Syed Hussain 20.10.2014 - 15:20

4 respuestas

12

Lo hice, pero es un poco complicado.

Summary:

Tiene que cambiar el archivo Books.plist en ~ / Library / Containers / com.apple.BKAgentService / Data / Documents / iBooks / Books para los libros que desea tener una serie, y también debe agregar filas en la base de datos BKSeries - *. sqlite en ~ / Library / Containers / com.apple.iBooksX / Data / Documents / BKSeriesDatabase para ellos y la serie.

Así es como lo hice:

La base de datos tiene 4 tablas: ZBKSERIESCHECK , ZBKSERIESITEM , Z_PRIMARYKEY y Z_METADATA . Solo cambié las tres primeras tablas. La "serie" se trata como un libro en estas tablas.

  1. Agregue los libros y la serie en la tabla ZBKSERIESCHECK . La tabla tiene 5 columnas.

    • Z_PKeslaclaveprincipal.Tienequeserunnúmerosecuencial.
    • Z_ENTyZ_OPTAcabodecompletarconun"1".
    • ZDATECHECKED es la fecha en que se creó la fila. En mi caso fue auto-asignado.
    • ZADAMID es un código único para el libro o la serie.

    Esta es la tabla con los datos que agregué.

    ElzAdamIdqueuséesdeCaliber,asíquesupongoquepuedesusarcualquiernúmero.Tengaencuentaqueesosnúmerosdebenserdiferentesdelasseries/librosquecompró.

    LafilaconzAdamId"1" es mi serie, las otras son los libros.

  2. Agregue las relaciones dentro de los libros y series en la tabla ZBKSERIESITEM . Esta tabla tiene 16 columnas.

    • Z_PK,Z_ENTyZ_OPTnosonlosmismosdefinidosenlatablaanterior.Z_PKtienequesersecuencialy,Z_ENTyZ_OPTacabodecompletarcon"2" y "1" respectivamente.
    • ZISCONTAINER define si un zAdamId es una serie o no. "1" es verdadero, "0" es falso.
    • ZPOSITION define el número de un libro en una serie, comenzando con "0" para el primer libro.
    • ZADAMID es el mismo definido en la tabla anterior para el mismo artículo.
    • ZAUTHOR es el autor de la serie / libros.
    • ZGENRE es el género de la serie / libros.
    • ZSEQUENCEDISPLAYNAME define cómo se muestra un libro como miembro de una serie. Por ejemplo, para el primer libro, puede definir "Libro 1" o "Volumen 1" o "Vol.1". Esta cadena se añadirá al nombre del libro. Esta columna debe estar vacía para la serie.
    • ZSERIESADAMID es la serie zAdamId del libro. Para la serie, esto es lo mismo que ZADAMID .
    • ZSERIESTITLE es el nombre de la serie.
    • ZSORTTITLE y ZTITLE es el nombre del libro o serie.

  3. AjustartablaZ_PRIMARYKEY.

    Encontréqueestatablasolotienedosfilas.Unaparacadaunadelastablasanteriores.

    Aquí debe cambiar la columna Z_MAX al valor MAX (*) del Z_PK en cada una de las tablas anteriores. Por ejemplo, en mi DB, para la tabla ZBKSERIESCHECK ( BKSeriesCheck ) el MAX (*) de la columna Z_PK es "22".

  4. Guarda los cambios.

  5. Abra el archivo Books.plist . Busque cada uno de los libros de la serie y agregue estas claves:

    • seriesAdamId como número con el valor de ZBKSERIESITEM ~ ZSERIESADAMID .
    • itemId como Number con el valor de ZBKSERIESITEM ~ ZADAMID .
    • seriesSequenceNumber como String con el valor de ZBKSERIESITEM ~ ZPOSITION + 1 . (Recuerda que en la tabla comienza con "0".)
    • seriesTitle como cadena con el valor de ZBKSERIESITEM ~ ZTITLE .

  6. Guardaelarchivo.CierreiBooks(sinolocerródesdeelprincipio).Elimineelprocesocom.apple.BKAgentService.IniciariBooks.Deberíaspodervertuserie.

Notas

Esas columnas que no nombré, las dejé vacías y no afectaron el resultado final.

Creo que es muy difícil poner correctamente todos tus libros y series cuando tienes muchos de ellos. Espero ver algún día algo que haga todo esto de forma automática.

Este es mi primer post. Espero que todos lo encuentren útil.

    
respondido por el foliva 09.02.2015 - 22:01
1

Me di cuenta de que, en iBooks, tengo un libro ( Herencia ) que iBooks destaca como miembro de una serie (en mi caso, "Eragon" en lugar de "The Farseer Trilogy"). Para investigar esto, descargué Herencia y eliminé el DRM usando Requiem (en una máquina virtual antigua) para poder hurgar en el código fuente del libro.

Lamentablemente, tengo malas noticias. Usé Sigil para buscar la palabra 'Eragon'. La palabra 'Eragon' no aparece en ninguna parte en los metadatos dentro del epub, lo que indica que esto no es posible; Evidentemente, el iBook mantiene la información de la serie por separado de los archivos epub reales.

    
respondido por el John Coxon 22.10.2014 - 09:59
1

Tengo una solución:

  1. Vaya a la tienda iBooks y descargue las muestras de los libros con los que está tratando de trabajar.

  2. Cambie la extensión de .epub a .zip.

  3. Extraiga el zip y elimine la carpeta llamada "OPS" (OEBPS para cómics).

  4. Localice el eBook que tiene y cambie de .epub a .zip.

  5. Extraiga y localice OPS.

  6. Mueva OPS a la carpeta de muestra del libro electrónico.

  7. Seleccione todos los archivos de la muestra y cree un .zip.

  8. Cambia la extensión a epub.

  9. Haga lo mismo para cada libro de la serie.

  10. Arrastra y suelta en itunes.

  11. Sincroniza y listo!

Sin embargo, tenga cuidado al entrar en la tienda de iBook, si ve el libro electrónico que editó, tendrá un botón que dice "actualizar". NO hagas clic en actualizar, o tendrás que volver a hacerlo.

Mucho más fácil que tener que editar sqlite, y funciona tanto en Mac como en Windows.

    
respondido por el Dadiocoleman 27.03.2015 - 16:36
0

Lo intenté yo mismo y descubrí que la lista de reproducción en la misma carpeta que almacena los epubs tiene información sobre la serie de libros. Están las series de metadatos, el título y serie conjunto de números de secuencia. Pero desafortunadamente cambiarlo no hace que Ibooks haga una lista de libros como series. También está configurando Metadatos en el propio libro electrónico que dice que Series Title y seriesSequenceNumber no funcionan. Luego encontré una carpeta en usr. Contenedores de biblioteca com.apple.IBooksX Documentos de datos BKSeriesDatabase, pero contiene una base de datos SQL. Tal vez la información esté almacenada allí.

    
respondido por el Adam Kay 19.12.2014 - 08:58

Lea otras preguntas en las etiquetas