fnp
/
librarian.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Many FB2 fixes
[librarian.git]
/
librarian
/
cover.py
diff --git
a/librarian/cover.py
b/librarian/cover.py
index
23603d6
..
be34e26
100644
(file)
--- a/
librarian/cover.py
+++ b/
librarian/cover.py
@@
-3,8
+3,10
@@
# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
+import re
import Image, ImageFont, ImageDraw, ImageFilter
import Image, ImageFont, ImageDraw, ImageFilter
-from librarian import get_resource
+from StringIO import StringIO
+from librarian import get_resource, OutputFile, URLOpener
class TextBox(object):
class TextBox(object):
@@
-36,6
+38,7
@@
class TextBox(object):
def text(self, text, color='#000', font=None, line_height=20,
shadow_color=None):
"""Writes some centered text."""
def text(self, text, color='#000', font=None, line_height=20,
shadow_color=None):
"""Writes some centered text."""
+ text = re.sub(r'\s+', ' ', text)
if shadow_color:
if not self.shadow_img:
self.shadow_img = Image.new('RGBA', self.img.size)
if shadow_color:
if not self.shadow_img:
self.shadow_img = Image.new('RGBA', self.img.size)
@@
-117,9
+120,11
@@
class Cover(object):
'PNG': 'image/png',
}
'PNG': 'image/png',
}
- def __init__(self, book_info):
+ def __init__(self, book_info
, format=None
):
self.author = ", ".join(auth.readable() for auth in book_info.authors)
self.title = book_info.title
self.author = ", ".join(auth.readable() for auth in book_info.authors)
self.title = book_info.title
+ if format is not None:
+ self.format = format
def pretty_author(self):
"""Allows for decorating author's name."""
def pretty_author(self):
"""Allows for decorating author's name."""
@@
-178,9
+183,16
@@
class Cover(object):
def save(self, *args, **kwargs):
return self.image().save(format=self.format, *args, **kwargs)
def save(self, *args, **kwargs):
return self.image().save(format=self.format, *args, **kwargs)
+ def output_file(self, *args, **kwargs):
+ imgstr = StringIO()
+ self.save(imgstr, *args, **kwargs)
+ return OutputFile.from_string(imgstr.getvalue())
+
class WLCover(Cover):
"""Default Wolne Lektury cover generator."""
class WLCover(Cover):
"""Default Wolne Lektury cover generator."""
+ width = 600
+ height = 833
uses_dc_cover = True
author_font = ImageFont.truetype(
get_resource('fonts/JunicodeWL-Regular.ttf'), 20)
uses_dc_cover = True
author_font = ImageFont.truetype(
get_resource('fonts/JunicodeWL-Regular.ttf'), 20)
@@
-208,15
+220,21
@@
class WLCover(Cover):
u'Współczesność': '#06393d',
}
u'Współczesność': '#06393d',
}
- def __init__(self, book_info):
- super(WLCover, self).__init__(book_info)
+ def __init__(self, book_info
, format=None, image_cache=None
):
+ super(WLCover, self).__init__(book_info
, format=format
)
self.kind = book_info.kind
self.epoch = book_info.epoch
if book_info.cover_url:
self.kind = book_info.kind
self.epoch = book_info.epoch
if book_info.cover_url:
- from urllib2 import urlopen
- from StringIO import StringIO
-
- bg_src = urlopen(book_info.cover_url)
+ url = book_info.cover_url
+ bg_src = None
+ if image_cache:
+ from urllib import quote
+ try:
+ bg_src = URLOpener().open(image_cache + quote(url, safe=""))
+ except:
+ pass
+ if bg_src is None:
+ bg_src = URLOpener().open(url)
self.background_img = StringIO(bg_src.read())
bg_src.close()
else:
self.background_img = StringIO(bg_src.read())
bg_src.close()
else: