Как создать минимальный файл epub с помощью ebooklibPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать минимальный файл epub с помощью ebooklib

Сообщение Anonymous »

Я хотел бы использовать Python и ebooklib для создания «минимального» ePub из существующего. Другими словами, я хочу сохранить только необходимое подмножество метаданных (название, создатель, дата, издатель), изображение обложки, содержание, корешок и (очевидно) весь текст и удалить все лишние данные (лишние метаданные, лишние изображения, шрифты и т. д.).
Вот мой текущий код:

Код: Выделить всё

import ebooklib as ebl
from ebooklib import epub

def minimal_epub(filename):
old, new = epub.read_epub(filename), epub.EpubBook()

for key in ['title', 'creator', 'date', 'publisher']:
metadata = old.get_metadata('DC', key)
if metadata: new.add_metadata('DC', key, metadata[0][0])
print(new.get_metadata('DC', key)) # show current metadata field

print(new.metadata) # show all metadata fields

# assume that the largest image in archive is the cover image
sortkey = lambda item: -len(item.content) # sort images by decreasing sizes
cover = sorted(old.get_items_of_type(ebl.ITEM_IMAGE), key=sortkey)[0]
new.set_cover(cover.file_name, cover.content) # keep largest image as cover
print(cover.file_name) # show cover filename

for item in old.get_items_of_type(ebl.ITEM_DOCUMENT):
new.add_item(item); print(item) # show name of document items

for item in old.get_items_of_type(ebl.ITEM_STYLE):
new.add_item(item); print(item) # show name of styles

new.toc = old.toc; print(new.toc) # show links in table of content
new.spine = old.spine; print(new.spine) # show spine

new.add_item(epub.EpubNcx()); new.add_item(epub.EpubNav()) # navigation

epub.write_epub(filename.replace('.','+.'), new)

>>> minimal_epub('path/to/file.epub')

Я не знаю, как найти изображение обложки среди всех изображений, хранящихся в файле epub, поэтому я предполагаю, что обложка имеет наибольший размер (допущение работает почти всегда).
Сгенерированный (минимальный) файл epub можно правильно открыть стандартной программой чтения epub примерно в 8 случаях из 10, но в в остальных случаях читатель жалуется на неправильный формат и не может корректно отобразить книгу. Так что я предполагаю, что некоторые другие элементы архива тоже следует скопировать, но я не специалист по формату epub, а документация пакета ebooklib довольно короткая и не охватывает все подробности.
Есть ли здесь мастер epub, который мог бы дать мне несколько советов?
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/789 ... g-ebooklib
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как создать минимальный файл epub с помощью ebooklib
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как удалить весь контент, заключенный в файл XHTML в EPUB (с целью создания образца книги [закрыто]
    Anonymous » » в форуме Html
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Подразделы, не показанные в ebooklib в Python
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Подразделы, не показанные в ebooklib в Python
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Ebooklib для создания вложенной иерархии главы?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»