Подтвердить что ты не робот

Библиотека Python для извлечения информации "epub"

Я пытаюсь создать загрузчик epub для iBook в python. Мне нужна библиотека python для извлечения информации о книге. Прежде чем реализовать это самостоятельно, я задаюсь вопросом, знает ли кто-нибудь уже созданную python lib, которая делает это.

4b9b3361

Ответ 1

Файл .epub представляет собой zip-кодированный файл, содержащий каталог META-INF, который содержит файл с именем container.xml, который указывает на другой файл, обычно называемый Content.opf, который индексирует все другие файлы, составляющие e-book (сводка на основе http://www.jedisaber.com/eBooks/tutorial.asp; полная спецификация в http://www.idpf.org/2007/opf/opf2.0/download/)

Следующий код Python будет извлекать основную метаинформацию из файла .epub и возвращать ее как dict.

import zipfile
from lxml import etree

def get_epub_info(fname):
    ns = {
        'n':'urn:oasis:names:tc:opendocument:xmlns:container',
        'pkg':'http://www.idpf.org/2007/opf',
        'dc':'http://purl.org/dc/elements/1.1/'
    }

    # prepare to read from the .epub file
    zip = zipfile.ZipFile(fname)

    # find the contents metafile
    txt = zip.read('META-INF/container.xml')
    tree = etree.fromstring(txt)
    cfname = tree.xpath('n:rootfiles/n:rootfile/@full-path',namespaces=ns)[0]

    # grab the metadata block from the contents metafile
    cf = zip.read(cfname)
    tree = etree.fromstring(cf)
    p = tree.xpath('/pkg:package/pkg:metadata',namespaces=ns)[0]

    # repackage the data
    res = {}
    for s in ['title','language','creator','date','identifier']:
        res[s] = p.xpath('dc:%s/text()'%(s),namespaces=ns)[0]

    return res

Пример вывода:

{
    'date': '2009-12-26T17:03:31',
    'identifier': '25f96ff0-7004-4bb0-b1f2-d511ca4b2756',
    'creator': 'John Grisham',
    'language': 'UND',
    'title': 'Ford County'
}

Ответ 2

Что-то вроде epub-tools, например? Но это в основном о написании формата epub (из разных возможных источников), как epubtools (подобное правописание, другой проект). Для его чтения я попробую сопутствующий проект threepress, приложение Django для показа книг epub в браузере - не посмотрел на этот код, но я предполагаю, что для того, чтобы показать книгу, он, безусловно, должен сначала прочитать это; -).

Ответ 3

Я оказался здесь после поиска чего-то подобного и был вдохновлен фрагментом кода г-на Бобуэлла, чтобы начать мой собственный проект. Если кому-то интересно... http://epubzilla.odeegan.com/

Ответ 4

Проверьте epub module. Это выглядит как простой вариант.