PythonでiBookへのePubアップローダーを作成しようとしています。本の情報を抽出するにはpython libが必要です。これを自分で実装する前に、すでに作成されているpython libを知っている人はいないでしょうか。
.epubファイルは、META-INFディレクトリを含むZipエンコードファイルであり、container.xmlという名前のファイルが含まれています。このファイルは、通常Content.opfという名前の別のファイルを指し、電子書籍を構成する他のすべてのファイルにインデックスを付けます。 (要約は http://www.jedisaber.com/eBooks/tutorial.asp ;完全な仕様は http://www.idpf.org/2007/opf/opf2)に基づいています。 0 /ダウンロード/ )
次の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'
}
たとえば、 epub-tools のようなものですか?しかし、それは主にwritingepub
形式(さまざまな可能なソースから)、 epubtools (同様のスペル)に関するものです、別のプロジェクト)。 readingについては、コンパニオンプロジェクトを試してみます threepress 、a Django appブラウザでePubの本を表示するために、そのコードはまだ見ていませんが、本を表示するには、必ず最初に読むことができる必要があると思います;-)。
epubモジュール を確認してください。それは簡単なオプションのように見えます。
私は似たようなものを探した後、ここにたどり着き、Bothwell氏のコードスニペットに触発されて自分のプロジェクトを開始しました。興味のある方は... http://epubzilla.odeegan.com/