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
46990fd
..
be34e26
100644
(file)
--- a/
librarian/cover.py
+++ b/
librarian/cover.py
@@
-5,7
+5,8
@@
#
import re
import Image, ImageFont, ImageDraw, ImageFilter
#
import re
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):
@@
-119,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."""
@@
-180,6
+183,11
@@
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."""
@@
-212,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: