mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
News downloads: Automagically convert PDF covers to PNG
This commit is contained in:
parent
a07585ef25
commit
a6b078e26b
@ -3,7 +3,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
'''Read meta information from PDF files'''
|
'''Read meta information from PDF files'''
|
||||||
|
|
||||||
import re
|
#import re
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
from calibre import prints
|
from calibre import prints
|
||||||
@ -12,15 +12,15 @@ from calibre.ebooks.metadata import MetaInformation, string_to_authors, authors_
|
|||||||
|
|
||||||
pdfreflow, pdfreflow_error = plugins['pdfreflow']
|
pdfreflow, pdfreflow_error = plugins['pdfreflow']
|
||||||
|
|
||||||
_isbn_pat = re.compile(r'ISBN[: ]*([-0-9Xx]+)')
|
#_isbn_pat = re.compile(r'ISBN[: ]*([-0-9Xx]+)')
|
||||||
|
|
||||||
def get_metadata(stream, cover=True):
|
def get_metadata(stream, cover=True):
|
||||||
if pdfreflow is None:
|
if pdfreflow is None:
|
||||||
raise RuntimeError(pdfreflow_error)
|
raise RuntimeError(pdfreflow_error)
|
||||||
raw = stream.read()
|
raw = stream.read()
|
||||||
isbn = _isbn_pat.search(raw)
|
#isbn = _isbn_pat.search(raw)
|
||||||
if isbn is not None:
|
#if isbn is not None:
|
||||||
isbn = isbn.group(1).replace('-', '').replace(' ', '')
|
# isbn = isbn.group(1).replace('-', '').replace(' ', '')
|
||||||
info = pdfreflow.get_metadata(raw, cover)
|
info = pdfreflow.get_metadata(raw, cover)
|
||||||
title = info.get('Title', None)
|
title = info.get('Title', None)
|
||||||
au = info.get('Author', None)
|
au = info.get('Author', None)
|
||||||
@ -29,8 +29,8 @@ def get_metadata(stream, cover=True):
|
|||||||
else:
|
else:
|
||||||
au = string_to_authors(au)
|
au = string_to_authors(au)
|
||||||
mi = MetaInformation(title, au)
|
mi = MetaInformation(title, au)
|
||||||
if isbn is not None:
|
#if isbn is not None:
|
||||||
mi.isbn = isbn
|
# mi.isbn = isbn
|
||||||
|
|
||||||
creator = info.get('Creator', None)
|
creator = info.get('Creator', None)
|
||||||
if creator:
|
if creator:
|
||||||
|
@ -823,6 +823,14 @@ class BasicNewsRecipe(Recipe):
|
|||||||
cpath = os.path.join(self.output_dir, 'cover.'+ext)
|
cpath = os.path.join(self.output_dir, 'cover.'+ext)
|
||||||
with nested(open(cpath, 'wb'), closing(self.browser.open(cu))) as (cfile, r):
|
with nested(open(cpath, 'wb'), closing(self.browser.open(cu))) as (cfile, r):
|
||||||
cfile.write(r.read())
|
cfile.write(r.read())
|
||||||
|
if ext.lower() == 'pdf':
|
||||||
|
from calibre.ebook.metadata.pdf import get_metadata
|
||||||
|
stream = open(cpath, 'rb')
|
||||||
|
mi = get_metadata(stream)
|
||||||
|
cpath = None
|
||||||
|
if mi.cover_data and mi.cover_data[1]:
|
||||||
|
cpath = os.path.join(self.output_dir, 'cover.png')
|
||||||
|
open(cpath, 'wb').write(mi.cover_data[1])
|
||||||
self.cover_path = cpath
|
self.cover_path = cpath
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user