diff --git a/resources/images/star.png b/resources/images/star.png new file mode 100644 index 0000000000..6eb1fb890f Binary files /dev/null and b/resources/images/star.png differ diff --git a/src/calibre/ebooks/oeb/transforms/jacket.py b/src/calibre/ebooks/oeb/transforms/jacket.py index 21ba47f60e..40d7ce33f4 100644 --- a/src/calibre/ebooks/oeb/transforms/jacket.py +++ b/src/calibre/ebooks/oeb/transforms/jacket.py @@ -8,6 +8,7 @@ __docformat__ = 'restructuredtext en' import textwrap from xml.sax.saxutils import escape +from itertools import repeat from lxml import etree @@ -31,6 +32,7 @@ class Jacket(object):

%(title)s

%(jacket)s

%(series)s
+
%(rating)s
%(tags)s
@@ -54,6 +56,23 @@ class Jacket(object): img.getparent().remove(img) return + def get_rating(self, rating): + ans = '' + if rating is None: + return + try: + num = float(rating)/2 + except: + return ans + num = max(0, num) + num = min(num, 5) + if num < 1: + return ans + id, href = self.oeb.manifest.generate('star', 'star.png') + self.oeb.manifest.add(id, href, 'image/png', data=I('star.png', data=True)) + ans = 'Rating: ' + ''.join(repeat('star'%href, num)) + return ans + def insert_metadata(self, mi): self.log('Inserting metadata into book...') comments = mi.comments @@ -87,7 +106,7 @@ class Jacket(object): html = self.JACKET_TEMPLATE%dict(xmlns=XPNSMAP['h'], title=escape(title), comments=escape(comments), jacket=escape(_('Book Jacket')), series=series, - tags=tags) + tags=tags, rating=self.get_rating(mi.rating)) id, href = self.oeb.manifest.generate('jacket', 'jacket.xhtml') root = etree.fromstring(html) item = self.oeb.manifest.add(id, href, guess_type(href)[0], data=root)