From 1cb3e02ab8a2430424bf4d646b982043c02543eb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 14 Sep 2014 17:34:36 +0530 Subject: [PATCH] Use the new cover generation code to generate default covers during conversion --- src/calibre/ebooks/covers.py | 13 ++++++++++++- src/calibre/ebooks/oeb/transforms/cover.py | 15 +++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/calibre/ebooks/covers.py b/src/calibre/ebooks/covers.py index 94adb189b8..46d929ee41 100644 --- a/src/calibre/ebooks/covers.py +++ b/src/calibre/ebooks/covers.py @@ -22,6 +22,7 @@ from PyQt5.Qt import ( from calibre import force_unicode from calibre.constants import __appname__, __version__ from calibre.ebooks.metadata import fmt_sidx +from calibre.ebooks.metadata.book.base import Metadata from calibre.ebooks.metadata.book.formatter import SafeFormat from calibre.gui2 import ensure_app, config, load_builtin_fonts, pixmap_to_data from calibre.utils.cleantext import clean_ascii_chars, clean_xml_chars @@ -478,9 +479,19 @@ def override_prefs(base_prefs, **overrides): return ans +def create_cover(title, authors, series=None, series_index=1, prefs=None, as_qimage=False): + ' Create a cover from the specified title, author and series. Any user set' + ' templates are ignored, to ensure that the specified metadata is used. ' + mi = Metadata(title, authors) + if series: + mi.series, mi.series_index = series, series_index + d = cprefs.defaults + prefs = override_prefs( + prefs or cprefs, title_template=d['title_template'], subtitle_template=d['subtitle_template'], footer_template=d['footer_template']) + return generate_cover(mi, prefs=prefs, as_qimage=as_qimage) + def test(scale=0.5): from PyQt5.Qt import QLabel, QApplication, QPixmap, QMainWindow, QWidget, QScrollArea, QGridLayout - from calibre.ebooks.metadata.book.base import Metadata app = QApplication([]) mi = Metadata('xxx', ['Kovid Goyal', 'John Q. Doe', 'Author']) mi.series = 'A series of styles' diff --git a/src/calibre/ebooks/oeb/transforms/cover.py b/src/calibre/ebooks/oeb/transforms/cover.py index 9bfb4e30d1..30bbec79a0 100644 --- a/src/calibre/ebooks/oeb/transforms/cover.py +++ b/src/calibre/ebooks/oeb/transforms/cover.py @@ -85,23 +85,18 @@ class CoverManager(object): ''' Create a generic cover for books that dont have a cover ''' - from calibre.ebooks.metadata import authors_to_string, fmt_sidx if self.no_default_cover: return None self.log('Generating default cover') m = self.oeb.metadata title = unicode(m.title[0]) authors = [unicode(x) for x in m.creator if x.role == 'aut'] - series_string = None - if m.series and m.series_index: - series_string = _('Book %(sidx)s of %(series)s')%dict( - sidx=fmt_sidx(m.series_index[0], use_roman=True), - series=unicode(m.series[0])) - try: - from calibre.ebooks import calibre_cover - img_data = calibre_cover(title, authors_to_string(authors), - series_string=series_string) + from calibre.ebooks.covers import create_cover + series = series_index = None + if m.series: + series, series_index = unicode(m.series[0]), m.series_index[0] + img_data = create_cover(title, authors, series, series_index) id, href = self.oeb.manifest.generate('cover', u'cover_image.jpg') item = self.oeb.manifest.add(id, href, guess_type('t.jpg')[0],