]*>)', re.DOTALL|re.IGNORECASE), lambda match: match.group(2) + '
' + match.group(1) + '
'),
(re.compile(r'(
', re.DOTALL|re.IGNORECASE),lambda match: match.group(1) + match.group(2) + ''),
- (re.compile(r'(
![]()
]*alt="([^"]*)"[^>]*>)', re.DOTALL|re.IGNORECASE),lambda match: match.group(1) + '
' + match.group(2) + ''),
+ (re.compile(r'(
![]()
]*alt="([^"]*)"[^>]*>)', re.DOTALL|re.IGNORECASE),lambda match: '
' + match.group(2) + '
' + match.group(1) + '
'),
(re.compile(r'
(
)+', re.DOTALL|re.IGNORECASE),lambda match: '
'),
- (re.compile(r'', re.DOTALL), lambda m: '')
]
- extra_css = 'body, h3, p, #MERRYdate, h1, div, span{margin:0px; padding:0px} h3.entry-header{font-size: 0.8em} div.entry-body{font-size: 0.7em} #MERRYdate {font-size: 0.5em}'
+ extra_css = 'body, h3, p, div, span{margin:0px; padding:0px} h3.entry-header{font-size: 0.8em} div.entry-body{font-size: 0.7em}'
def postprocess_html(self, soup, first):
for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')):
iurl = tag['src']
img = Image()
img.open(iurl)
- width, height = img.size
- #print 'img is: ', iurl, 'width is: ', width, 'height is: ', height
+ #width, height = img.size
+ #print '***img is: ', iurl, '\n****width is: ', width, 'height is: ', height
img.trim(0)
- img.save(iurl)
+ #width, height = img.size
+ #print '***TRIMMED img width is: ', width, 'height is: ', height
+ left=0
+ top=0
+ border_color='#ffffff'
width, height = img.size
- #print 'img is: ', iurl, 'width is: ', width, 'height is: ', height
+ #print '***retrieved img width is: ', width, 'height is: ', height
+ height_correction = 1.17
+ canvas = create_canvas(width, height*height_correction,border_color)
+ canvas.compose(img, left, top)
+ #img = canvas
+ #img.save(iurl)
+ canvas.save(iurl)
+ #width, height = canvas.size
+ #print '***NEW img width is: ', width, 'height is: ', height
return soup
feeds = ['http://feeds.feedburner.com/GeekAndPoke?format=xml']
From e802938b5e96ef7845ce232a77a99aa5ed2b05ff Mon Sep 17 00:00:00 2001
From: Kovid Goyal
Date: Thu, 13 Oct 2011 09:00:04 +0530
Subject: [PATCH 5/9] ...
---
recipes/gosc_niedzielny.recipe | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/recipes/gosc_niedzielny.recipe b/recipes/gosc_niedzielny.recipe
index 371eef3407..1538e7fc2c 100644
--- a/recipes/gosc_niedzielny.recipe
+++ b/recipes/gosc_niedzielny.recipe
@@ -10,17 +10,17 @@ import re
class GN(BasicNewsRecipe):
EDITION = 0
-
+
__author__ = 'Piotr Kontek'
- title = unicode('Gość niedzielny')
+ title = u'Gość niedzielny'
description = 'Weekly magazine'
encoding = 'utf-8'
no_stylesheets = True
language = 'pl'
remove_javascript = True
- temp_files = []
+ temp_files = []
simultaneous_downloads = 1
-
+
articles_are_obfuscated = True
def get_obfuscated_article(self, url):
@@ -28,9 +28,9 @@ class GN(BasicNewsRecipe):
br.open(url)
source = br.response().read()
page = self.index_to_soup(source)
-
+
main_section = page.find('div',attrs={'class':'txt doc_prnt_prv'})
-
+
title = main_section.find('h2')
info = main_section.find('div', attrs={'class' : 'cf doc_info'})
authors = info.find(attrs={'class':'l'})
@@ -42,17 +42,17 @@ class GN(BasicNewsRecipe):
article = article + str(p.find('img')).replace('src="/files/','src="http://www.gosc.pl/files/')
article = article + ''
for s in p.findAll('span'):
- article = article + self.tag_to_string(s)
+ article = article + self.tag_to_string(s)
article = article + ''
else:
article = article + str(p).replace('src="/files/','src="http://www.gosc.pl/files/')
first = False
-
+
html = unicode(title) + unicode(authors) + unicode(article)
-
- self.temp_files.append(PersistentTemporaryFile('_temparse.html'))
- self.temp_files[-1].write(html)
- self.temp_files[-1].close()
+
+ self.temp_files.append(PersistentTemporaryFile('_temparse.html'))
+ self.temp_files[-1].write(html)
+ self.temp_files[-1].close()
return self.temp_files[-1].name
def find_last_issue(self):
@@ -69,7 +69,7 @@ class GN(BasicNewsRecipe):
if not first:
break
first = False
-
+
def parse_index(self):
self.find_last_issue()
soup = self.index_to_soup('http://www.gosc.pl' + self.EDITION)
From af087b2554c8edc75307d9a55363bd0005585242 Mon Sep 17 00:00:00 2001
From: Kovid Goyal
Date: Thu, 13 Oct 2011 09:15:20 +0530
Subject: [PATCH 6/9] Fix #872961 (calibredb add_format does not refresh
running calibre instance)
---
src/calibre/library/cli.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py
index 65752eb183..b79813aee8 100644
--- a/src/calibre/library/cli.py
+++ b/src/calibre/library/cli.py
@@ -368,6 +368,7 @@ def command_remove(args, dbpath):
def do_add_format(db, id, fmt, path):
db.add_format_with_hooks(id, fmt.upper(), path, index_is_id=True)
+ send_message()
def add_format_option_parser():
return get_parser(_(
From 12c8b70336d145e70d2ee8415bfa236e5bf29a0f Mon Sep 17 00:00:00 2001
From: Kovid Goyal
Date: Thu, 13 Oct 2011 09:37:45 +0530
Subject: [PATCH 7/9] Fix #872741 (Onyx BOOX A61S/X61S not detected)
---
resources/images/devices/boox.jpg | Bin 0 -> 3115 bytes
src/calibre/devices/hanlin/driver.py | 3 ++-
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 resources/images/devices/boox.jpg
diff --git a/resources/images/devices/boox.jpg b/resources/images/devices/boox.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..93e5c70fa15a481e2c5f9b31417948380c481059
GIT binary patch
literal 3115
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%0D`{p#gMQNW++6QEHK3Rvg{)38a-I~@XzUm}SI@<4
zvPX|&XiX&L^Vd%E0y-=39U;^TW1O-PIRmmQM@@8{Dm(C~vzE~v`W<7o0|gXfelGG(
zL6&t~PQ1&|_O(-NCijAyJqeg4ev{J+$d$HyV8wq4il)qHEmj
z)RWOEiz_EXdna~JAf7Z;K@+0wyn##2B}AP4B&Ld4w)Mz>K-TWa=)S-!ycBSsITB1(
zRZHmef{mXjqf~{|>kiV6Q7zWzZCTdovtZFK?9&R)@0rJ&D^)Cm=VlTku1XE{I@COz
zA?N%3RJ*tN)5hv$yd4HB!l(DWF^5mPq+3vd)fMp&kRJbncZ2qZ;=qHq-bg#-hC}0xaj5i?|uF0f8uv+s4Qwr
z1V34s`D=stN2?4q6GNa4zfdSl=JbnSzRvimcuj&yafb(M%
zGGgi-mdkaS15$T>SAw;VFhS>0$H~miz~(Px`fnlRb_ggi8$ECASVQygVSL87jlV^0
zde3}#WbDoHnY|e25I-#7344m(Zg$I!K!rLlJtpSTXNHw;#mtQVj3VPuz4;NEm>O-2
zhincfVVraWy{EeULqa-;zs7rLorJ0tyx1YF{=zkRv0XAPU|pvBmMna1h~>W_?9EZn*@P(B6v=tjf4PxRMAf&Q?`04l}o`tjoBYp?u$qf;xqS
G`u_nFxtP-c
literal 0
HcmV?d00001
diff --git a/src/calibre/devices/hanlin/driver.py b/src/calibre/devices/hanlin/driver.py
index 2234e2112c..b4c4f2872b 100644
--- a/src/calibre/devices/hanlin/driver.py
+++ b/src/calibre/devices/hanlin/driver.py
@@ -116,6 +116,7 @@ class BOOX(HANLINV3):
supported_platforms = ['windows', 'osx', 'linux']
METADATA_CACHE = '.metadata.calibre'
DRIVEINFO = '.driveinfo.calibre'
+ icon = I('devices/boox.jpg')
# Ordered list of supported formats
FORMATS = ['epub', 'fb2', 'djvu', 'pdf', 'html', 'txt', 'rtf', 'mobi',
@@ -123,7 +124,7 @@ class BOOX(HANLINV3):
VENDOR_ID = [0x0525]
PRODUCT_ID = [0xa4a5]
- BCD = [0x322]
+ BCD = [0x322, 0x323]
MAIN_MEMORY_VOLUME_LABEL = 'BOOX Internal Memory'
STORAGE_CARD_VOLUME_LABEL = 'BOOX Storage Card'
From 68aa6195e03a84ee63b427cbbc0f09c080e1ee01 Mon Sep 17 00:00:00 2001
From: Kovid Goyal
Date: Thu, 13 Oct 2011 10:05:17 +0530
Subject: [PATCH 8/9] MOBI Input: Remove invalid tags of the form Fixes
#872883 (fatal error in converting mobi to rtf)
---
src/calibre/ebooks/mobi/reader.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py
index 04637ffa89..e4b40616ba 100644
--- a/src/calibre/ebooks/mobi/reader.py
+++ b/src/calibre/ebooks/mobi/reader.py
@@ -325,6 +325,10 @@ class MobiReader(object):
self.processed_html = self.processed_html.replace('', '')
self.processed_html = re.sub(r'([a-zA-Z]+)<', r'\1><',
self.processed_html)
+ # Remove tags of the form as they can cause issues further
+ # along the pipeline
+ self.processed_html = re.sub(r'{0,1}[a-zA-Z]+:\s+[^>]*>', '',
+ self.processed_html)
for pat in ENCODING_PATS:
self.processed_html = pat.sub('', self.processed_html)
From bb84fcfa84aac40d9362c538d8bc164def10ac13 Mon Sep 17 00:00:00 2001
From: Kovid Goyal
Date: Thu, 13 Oct 2011 10:09:18 +0530
Subject: [PATCH 9/9] Fix #829821 (Add HTC Flyer to Android driver)
---
src/calibre/devices/android/driver.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py
index eb867b80d3..f6b70794d4 100644
--- a/src/calibre/devices/android/driver.py
+++ b/src/calibre/devices/android/driver.py
@@ -62,7 +62,8 @@ class ANDROID(USBMS):
0x4e11 : [0x0100, 0x226, 0x227],
0x4e12 : [0x0100, 0x226, 0x227],
0x4e21 : [0x0100, 0x226, 0x227],
- 0xb058 : [0x0222, 0x226, 0x227]
+ 0xb058 : [0x0222, 0x226, 0x227],
+ 0x0ff9 : [0x0226],
},
# Samsung