Add support for extracting cover images to fb2-meta

This commit is contained in:
Kovid Goyal 2008-07-17 09:46:36 -07:00
parent 25310eb146
commit 2960781bb0

View File

@ -5,7 +5,8 @@ __copyright__ = '2008, Anatoly Shipitsin <norguhtar at gmail.com>'
'''Read meta information from fb2 files''' '''Read meta information from fb2 files'''
import sys, os import sys, os, mimetypes
from base64 import b64decode
from calibre.ebooks.BeautifulSoup import BeautifulStoneSoup from calibre.ebooks.BeautifulSoup import BeautifulStoneSoup
from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.metadata import MetaInformation
@ -18,15 +19,30 @@ def get_metadata(stream):
author= [firstname+" "+lastname] author= [firstname+" "+lastname]
title = soup.find("book-title").string title = soup.find("book-title").string
comments = soup.find("annotation") comments = soup.find("annotation")
cp = soup.find('coverpage')
cdata = None
if cp:
cimage = cp.find('image', attrs={'l:href':True})
if cimage:
id = cimage['l:href'].replace('#', '')
binary = soup.find('binary', id=id, attrs={'content-type':True})
if binary:
mt = binary['content-type']
exts = mimetypes.guess_all_extensions(mt)
if not exts:
exts = ['.jpg']
cdata = (exts[0][1:], b64decode(binary.string.strip()))
if comments and len(comments) > 1: if comments and len(comments) > 1:
comments = comments.p.contents[0] comments = comments.p.contents[0]
series = soup.find("sequence") series = soup.find("sequence")
# series_index = series.index
mi = MetaInformation(title, author) mi = MetaInformation(title, author)
mi.comments = comments mi.comments = comments
mi.author_sort = lastname+'; '+firstname
if series: if series:
mi.series = series.get('name', None) mi.series = series.get('name', None)
# mi.series_index = series_index if cdata:
mi.cover_data = cdata
return mi return mi
def main(args=sys.argv): def main(args=sys.argv):